pandas 作图 统计_[python][科学计算][pandas]简要使用教程9-快速绘图

最后一次更新日期: 2019/3/17

pandas是基于numpy的数据分析库,提供一些更易用的数据模型和大量高效的统计方法。

使用前先导入模块:

import pandas as pd

按需导入以下模块:

import numpy as np

import matplotlib.pyplot as plt

准备好pandas数据对象就可以调用方法直接绘图,pandas提供的快速绘图只适用于单次绘图,不便于构建复杂的图表,如有需要,使用matplotlib的方法创建图像和子图。

1. 曲线图

In [30]: df=pd.DataFrame({'a':[1,1.5,2.5,4],'b':[3,2.1,3.2,1],'c':[1,2,3,4]})

In [53]: fig=plt.figure(figsize=(12,4))

...:

...: ax1=fig.add_subplot(1,2,1)

...: df.plot.line(ax=ax1)

...:

...: ax2=fig.add_subplot(1,2,2)

...: df.plot.line(x='c',y=['a','b'],ax=ax2)

...:

...: #plt.show()

Out[53]:

参数x设置作为x轴数据的列名(只能一个),参数y设置作为y轴数据的列名/列名列表,参数ax设置子图对象,默认None单独绘制。

plt.figure用于创建图像,figsize用于设置图像大小,tuple类型,格式为(weight,height);

Figure.add_subplot用于创建子图,第一个参数设置纵向分区个数,第二个参数设置横向分区个数,第三个参数设置是第几个子图,是按分区先横后纵排列的;

plt.plot用于显示绘制好的图像,在当前场景下可以省略,ipython调用完pandas的绘图方法后会直接显示。

绘制曲线图也可以使用plot(kind='line'),参数kind也可以省略,因为默认值就是'line'。

2. 条形图

In [30]: df=pd.DataFrame({'a':[1,1.5,2.5,4],'b':[3,2.1,3.2,1],'c':[1,2,3,4]})

In [147]: fig=plt.figure(figsize=(12,4))

...:

...: ax1=fig.add_subplot(1,2,1)

...: df.plot.bar(ax=ax1)

...:

...: ax2=fig.add_subplot(1,2,2)

...: df.plot.bar(stacked=True,ax=ax2)

Out[147]:

参数stacked设置条形图是否堆叠。

水平条形图需要改用DataFrame.plot.barh方法。

3. 直方图

In [205]: df=pd.DataFrame({'a':[1,2,2,3],'b':[3,3,3,4],'c':[1,2,3,4]})

In [210]: fig=plt.figure(figsize=(12,4))

...:

...: ax1=fig.add_subplot(1,2,1)

...: df.plot.hist(alpha=0.5,ax=ax1)

...:

...: ax2=fig.add_subplot(1,2,2)

...: df.plot.hist(stacked=True,bins=4,ax=ax2)

Out[210]:

参数alpha设置透明度,参数stacked设置是否堆叠,参数bins设置分箱数。

配合diff可以绘制按列拆分为子图的直方图:

In [165]: df.diff().hist(bins=4)

Out[165]:

array([[,

],

[,

]],

dtype=object)

4. 箱线图

In [166]: df = pd.DataFrame(np.random.rand(10, 4),columns=['A','B','C','D'])

In [167]: df.plot.box()

Out[167]:

5. 散点图

In[185]: df=pd.DataFrame(np.random.rand(50,3),columns=['a','b','c'])

In[186]: fig=plt.figure(figsize=(12,4))

...:

...: ax1=fig.add_subplot(1,2,1)

...: df.plot.scatter(x='a',y='b',s=df['c']*200,ax=ax1)

...:

...: ax2=fig.add_subplot(1,2,2)

...: df[df['c']>=0.5].plot.scatter(x='a',y='b',color='b',label='c1',ax=ax2)

...: df[df['c']<0.5].plot.scatter(x='a',y='b',color='g',label='c2',ax=ax2)

Out[186]:

参数x设置作为x轴数据的列名(只能一个),参数y设置作为y轴数据的列名(只能一个),参数s设置点的大小,参数color设置点的颜色,参数label设置标签,需要为每个类别绘制不同颜色的点时,筛选出每个类别的数据分别绘制到同一个子图上,并指定颜色和标签。

6. 饼图

In [203]: df=pd.DataFrame(2*np.random.rand(3,2),index=['a','b','c'],columns=['p1','p2'])

In [204]: df.plot.pie(y='p1',figsize=(4,4))

Out[204]:

In [206]: df.plot.pie(subplots=True,figsize=(8.5,4))

Out[206]:

array([,

],

dtype=object)

有两种绘制方式,一是参数y指定一个列作为取值绘制饼图,二是设置参数subplots为True,会用每个列的数据绘制子图。

figsize是绘图的通用参数,用于设置图像大小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值