pandas作图_pandas绘图

导语:为什么用pandas绘图

matplotlib虽然功能强大,但是matplotlib相对而言较为底层,画图时步骤较为繁琐,比较麻烦,因为要画一张完整的图表,需要实现很多的基本组件,比如图像类型、刻度、标题、图例、注解等等。目前有很多的开源框架所实现的绘图功能是基于matplotlib的,pandas便是其中之一,对于pandas数据,直接使用pandas本身实现的绘图方法比matplotlib更加方便简单。

pandas的两类基本数据结构series和dataframe都提供了一个统一的接口plot(),即data.plot()或者data.plot.bar/box...即可。

kind:画图的种类,可以是 line(默认)、bar、barh、kde。

‘bar’ or ‘barh’ for bar plots,bar表示垂直柱状图,barh表示水平柱状图

‘hist’ for histogram

‘box’ for boxplot

‘kde’ or ‘density’ for density plots。即Kernel Density Estimate 和密度估计,常常与hist一起混合使用。

‘area’ for area plots

‘scatter’ for scatter plots

‘hexbin’ for hexagonal bin plots

‘pie’ for pie plots

kind:“line”、"bar"、"barh"、"kde"

ax:要在其上进行绘制的matplotlib.subplot对象,如果没有,则使用默认的subplot对象。

figsize:图像尺寸

use_index:True(默认),False。表示默认情况下,会将series和dataframe的index传给matplotlib,用已绘制X轴。

title:标题

grid:网格

legend:图例

style:绘图的风格,如‘ko--’

logx:在X轴上使用对数标尺

logy: 在Y轴上使用对数标尺

loglog:

xticks=None,用做x刻度的值

yticks=None,用做Y轴刻度的值

xlim=None, X轴的界限如【0,10】

ylim=None,Y轴的界限

rot=None,  旋转刻度标签 0-360

fontsize=None,

colormap=None,

table=False,

yerr=None,

xerr=None,

label=None,

注:pandas绘图时会默认索引作为x轴

导入数据

1 importmatplotlib.pyplot as plt2 %matplotlib inline3 plt.rcParams['font.sans-serif'] = ['SimHei']#显示中文

4 plt.rcParams['axes.unicode_minus'] = False#显示负号

5 importpandas as pd6 importnumpy as np7 from pandas importSeries,DataFrame8 test=pd.read_excel("/Users/yaozhilin/Downloads/exercise.xlsx",sep="t")9 test.head(5)#显示前五行

•离散型数据的可视化

~饼图

1 fig= plt.figure(figsize=(6,6))#调整图的大小

2 t=test["所属区域"].value_counts()3 t.plot.pie(autopct='%.1f%%',explode = [0,0.1,0,0])

比较matplotlib:

1 plt.pie(t.values,labels=t.index,autopct='%.1f%%',explode = [0,0.1,0,0])

相比pandas默认索引为labels,values为数值。

~条形图

1 fig=plt.figure(figsize=(7,7))2 tb=test.groupby(["所属区域"]).agg({"数量":np.mean})3 tb.plot(kind="bar")4 plt.grid(linestyle="-.", axis='y', alpha=0.4)#设置横向网格

双条形图

1 fig=plt.figure(figsize=(7,7))2 tb=test.groupby(["所属区域"]).agg({"成本":np.mean,"金额":np.mean})3 tb.plot(kind="barh")

堆积图

data.plot(kind="barh",stacked=True)

1 fig=plt.figure(figsize=(7,7))2 tb=test.groupby(["所属区域"]).agg({"成本":np.mean,"金额":np.mean})3 tb.plot(kind="barh",stacked=True)4 plt.grid(linestyle="-.", axis='y', alpha=0.4)#设置横向网格

•连续性数据的可视化

~箱型图

常用于数据清洗查看异常值

1 t=test["数量"].dropna()#切记要去除na

2 t.plot(kind="box")

~直方图:data.hist(bin=)

计算连续变量的频率

1 test["金额"].hist(bins=20,alpha=0.3,color='g')#bins表示x分为多少份

~密度图:kde

1 test["金额"].hist(bins=20,alpha=0.3,color='g',density=True)2 test["金额"].plot(kind="kde")

~折线图

常用于随时间变化的连续数据

比如探究test中数量随时间变化趋势

1 tl=test.groupby("订购日期").agg({"数量":np.mean})2 tl.plot(kind="line",style="bo--")

~面积图 :data.plot.area

1 fig,axes=plt.subplots(1,2)2 ta=test.groupby(["订购日期"]).agg({"成本":np.mean,"金额":np.mean})3 ta.plot(ax=axes[0])#第一个画布

4 ta=test.groupby(["订购日期"]).agg({"成本":np.mean,"金额":np.mean})5 ta.plot.area(ax=axes[1])

•关系型数据的可视化

~散点图:data.plot.scatter

1 test.plot.scatter(x="金额",y="数量")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值