许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Pandas绘图教程:pandas绘图功能详解

Pandas绘图教程:pandas绘图功能详解

阅读数 9
点赞 0
article_banner

Pandas 绘图

学习 目标

  • 熟练掌握Pandas数据可视化常用功能

1 Pandas数据可视化简介

  • pandas库是Python数据分析的核心库
  • 它不仅可以加载和转换数据,还可以做更多的事情:它还可以可视化
  • pandas绘图API简单易用,是pandas流行的重要原因之一

2 Pandas 单变量可视化

  • 单变量可视化, 包括条形图、折线图、直方图、饼图等
  • 数据使用葡萄酒评论数据集, 来自葡萄酒爱好者杂志(wineEnthusiast),包含10个字段,150929行,每一行代表一款葡萄酒 字段名 字段描述 country 葡萄酒产地(国家) description 对酒的评语(气味,味道,外观,感觉等) designation 用于酿酒的葡萄产自哪个葡萄园 points WineEnthusiast(葡萄酒爱好者杂志)对葡萄酒的评分(1~100) price 价格 province 葡萄酒产地(省/州) region_1 葡萄种植区_1 region_2 葡萄种植区_2(有可能为空) variety 用于酿酒的葡萄种类 winery 酿酒厂名
  • 加载数据
#加载数据
import pandas as pd
reviews = pd.read_csv("data/winemag-data_first150k.csv", index_col=0)
reviews.head(3)
显示结果: country description designation points price province region_1 region_2 variety winery 0 US This tremendous 100% varietal wine hails from … Martha’s Vineyard 96 235.0 California Napa Valley Napa Cabernet Sauvignon Heitz 1 Spain Ripe aromas of fig, blackberry and cassis are … Carodorum Selección Especial Reserva 96 110.0 Northern Spain Toro NaN Tinta de Toro Bodega Carmen Rodríguez 2 US Mac Watson honors the memory of a wine once ma… Special Selected Late Harvest 96 90.0 California Knights Valley Sonoma Sauvignon Blanc Macauley

2.1 柱状图 和分类数据

条形图(柱状图)非常灵活: 高度可以代表任何东西,只要它是数字即可 每个条形可以代表任何东西,只要它是一个类别即可。
  • 条形图是最简单最常用的可视化图表。 在下面的案例中,将所有的葡萄酒品牌按照产区分类,看看哪个产区的葡萄酒品种多:
# figsize 绘图区域大小, fontsize 字体大小 color 颜色
text_kwargs = dict(
    figsize=(16,8),
    fontsize=20,
    color=['b','orange','g','r','purple','brown','pink','gray','cyan','y']
)

# 计算省份出现次数,取前10,画图;**text_kwargs表示解包
reviews['province'].value_counts().head(10).plot.bar(**text_kwargs)
  • 上面的图表说明加利福尼亚生产的葡萄酒比其他省都多, 也可以折算成比例, 计算加利福尼亚葡萄酒占总数的百分比
# 计算省份出现次数,取前10,再分别除以数据的总数,就得到省份出产葡萄酒的占比
(reviews['province'].value_counts().head(10) / len(reviews)).plot.bar(**text_kwargs)
  • 也可以用来展示《葡萄酒杂志》(Wine Magazine)给出的评分数量的分布情况:
# 计算所有不同评分的各自数量,再根据评分进行排序,再画图
reviews['points'].value_counts().sort_index().plot.bar(**text_kwargs)

2.2 折线图

  • 如果要绘制的数据不是类别值,而是连续值比较适合使用折线图
reviews['points'].value_counts().sort_index().plot.line()
  • 柱状图和折线图区别
       
  • 小练习:柱状图或折线图
       

2.3 面积图

  • 面积图就是在折线图的基础上,把折线下面的面积填充颜色;当只有一个变量需要制图时,面积图和折线图之间差异不大,在这种情况下,折线图和面积图可以互相替换
reviews['points'].value_counts().sort_index().plot.area()

2.4 直方图

# price小于200的所有数据df,取price列的值,画图
reviews[reviews['price'] < 200]['price'].plot.hist()
  • 直方图看起来很像条形图。 直方图是一种特殊的条形图,它可以将数据分成均匀的间隔,并用条形图显示每个间隔中有多少行。 直方图柱子的宽度代表了分组的间距,柱状图柱子宽度没有意义。直方图缺点:将数据分成均匀的间隔区间,所以它们对歪斜的数据的处理不是很好:
reviews['price'].plot.hist()
  • 在第一个直方图中,将价格>200的葡萄酒排除了
  • 在第二个直方图中,没有对价格做任何处理,由于有个别品种的酒价格极高,导致直方图的价格分布发生变化
#查看价格较高的葡萄酒情况
reviews[reviews['price'] > 1500]

显示结果: country description designation points price province region_1 region_2 variety winery 13318 US The nose on this single-vineyard wine from a s… Roger Rose Vineyard 91 2013.0 California Arroyo Seco Central Coast Chardonnay Blair 34920 France A big, powerful wine that sums up the richness… NaN 99 2300.0 Bordeaux Pauillac NaN Bordeaux-style Red Blend Château Latour 34922 France A massive wine for Margaux, packed with tannin… NaN 98 1900.0 Bordeaux Margaux NaN Bordeaux-style Red Blend Château Margaux
  • 数据倾斜:
       
reviews.shape

显示结果: 共计150930条数据 (150930, 10) 一键获取完整项目代码shell12
reviews[reviews['price'] >500].shape

显示结果: 价格大于500的数据只有73条 (73, 10) 一键获取完整项目代码12
  • 对葡萄就的评分不存在数据倾斜的情况,评分数据的分布情况比较适合用直方图展示
reviews['points'].plot.hist()

2.5 饼图

  • 饼图也是一种常见的可视化形式
reviews['province'].value_counts().head(10).plot.pie()

  • 饼图的缺陷:饼图只适合展示少量分类在整体的占比
       

3 Pandas 双变量可视化

  • 在上一小结中,介绍了使用Pandas绘图,理解单个变量在数据中的互相关系,本小节会考察两个变量如何进行可视化
  • 数据分析时,我们需要找到变量之间的相互关系,比如一个变量的增加是否与另一个变量有关,数据可视化是找到两个变量的关系的最佳方法

3.1 散点图

  • 最简单的两个变量可视化图形是散点图,散点图中的一个点,可以表示两个变量 # 价格小于100的葡萄酒,随机取样100个数据,评分分布 reviews[reviews['price'] < 100].sample(100).plot.scatter(x='price', y='points') 一键获取完整项目代码python运行123 调整图形大小,字体大小,由于pandas的绘图功能是对Matplotlib绘图功能的封装,所以很多参数pandas 和 matplotlib都一样 reviews[reviews['price'] < 100].sample(100).plot.scatter(x='price', y='points', figsize=(14,8), fontsize = 16) 一键获取完整项目代码python运行12 修改x轴 y轴标签字体 from matplotlib import pyplot as plt # 创建绘图区域和坐标轴 fig, axes = plt.subplots(ncols=1, figsize=(20,10)) # 使用pandas 在指定坐标轴内绘图 reviews[reviews['price'] < 100].sample(100).plot.scatter(x='price', y='points', figsize=(14,8), fontsize=16, ax=axes) # 通过坐标轴修改标签内容和字体大小 axes.set_xlabel('price', fontdict={'fontsize':16}) 一键获取完整项目代码python运行12345678
  • 请注意,我们必须对数据进行采样,从所有数据中抽取100条数据,如果将全部数据(15万条)都绘制到散点图上,会有很多点重叠在一起,不方便观察 reviews[reviews['price'] < 100].plot.scatter(x='price', y='points',figsize=(12,8)) 一键获取完整项目代码python运行12
  • 由于散点图的缺点,因此散点图最适合使用相对较小的数据集以及具有大量唯一值的变量。
  • 有几种方法可以处理过度绘图。 一:对数据进行采样 二:hexplot(蜂巢图)

3.2 hexplot 蜂巢图

  • hexplot将数据点聚合为六边形,然后根据其内的值为这些六边形上色:
reviews[reviews['price'] < 100].plot.hexbin(x='price', y='points', gridsize=15, figsize=(14,8))

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空