美文网首页
[python][科学计算][pandas]简要使用教程9-快速

[python][科学计算][pandas]简要使用教程9-快速

作者: jiedawang | 来源:发表于2019-03-18 13:20 被阅读0次

    最后一次更新日期: 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]: <matplotlib.axes._subplots.AxesSubplot at 0x2aefe00ddd8>
    

    参数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]: <matplotlib.axes._subplots.AxesSubplot at 0x2aeff4f17b8>
    

    参数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]: <matplotlib.axes._subplots.AxesSubplot at 0x2aefff32080>
    

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

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

    In [165]: df.diff().hist(bins=4)
    Out[165]: 
    array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000002AE805A4748>,
            <matplotlib.axes._subplots.AxesSubplot object at 0x000002AE805E3D68>],
           [<matplotlib.axes._subplots.AxesSubplot object at 0x000002AE80615390>,
            <matplotlib.axes._subplots.AxesSubplot object at 0x000002AE8063DA20>]],
          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]: <matplotlib.axes._subplots.AxesSubplot at 0x2aeff644080>
    

    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]: <matplotlib.axes._subplots.AxesSubplot at 0x2ae81a82e48>
    

    参数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]: <matplotlib.axes._subplots.AxesSubplot at 0x2ae81f66cf8>
    
    In [206]: df.plot.pie(subplots=True,figsize=(8.5,4))
    Out[206]: 
    array([<matplotlib.axes._subplots.AxesSubplot object at 0x000002AE8171BEB8>,
           <matplotlib.axes._subplots.AxesSubplot object at 0x000002AEFFFD78D0>],
          dtype=object)
    

    有两种绘制方式,一是参数y指定一个列作为取值绘制饼图,二是设置参数subplotsTrue,会用每个列的数据绘制子图。
    figsize是绘图的通用参数,用于设置图像大小。

    相关文章

      网友评论

          本文标题:[python][科学计算][pandas]简要使用教程9-快速

          本文链接:https://www.haomeiwen.com/subject/idyvmqtx.html