zoukankan      html  css  js  c++  java
  • 《利用Python进行数据分析》学习笔记之Matplotlib : pandas中的绘图函数

    Pandas有许多能够利用DataFrame对象数据组织特点来创建标准图表的高级绘图方法,本文主要介绍的是pandas中的绘图函数。

    #coding:utf-8
    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    from pandas import DataFrame,Series
    

    1. 线形图

    df.plot( kind='line')

    • Series 的plot 方法会以index作为X轴,画一条线
    • DataFrame 的plot 方法会以index作为X轴,给每一列绘制一条线,columns作为图例。
    #第一种创建画布和画布分区方法,分开创建figure和subplot对象
    fig=plt.figure()
    #Series 的线形图
    ax1=fig.add_subplot(2,1,1)
    s=Series(np.random.rand(10).cumsum(),index=np.arange(0,100,10))  
    s.plot( kind='line')
    plt.xlabel(u"index") 
    plt.title(u"Serise的线形图")
    plt.show()
    #DataFrame的线形图
    ax2=fig.add_subplot(2,1,2)
    df=DataFrame(np.random.rand(10,4).cumsum(0),index=np.arange(0,100,10),columns=pd.Index(['A','B','C','D'],name='Genus'))
    df.plot( kind='line')
    plt.xlabel(u"index") 
    plt.title(u"DataFrame的线形图")
    plt.show()
    
    

    其中,Series.plot方法的参数

    • kind :图的类型,‘line’,'bar','barh','kde'
    • label :图例标签
    • ax :需要绘制的对象
    • rot :旋转角度
    • xticks :X轴刻度值
    • xlim :X轴刻度范围
    • grid :显示网格

    2. 柱状图

    df.plot( kind='bar') : 垂直柱状图

    df.plot( kind='barh') : 水平柱状图

    df.plot( kind='bar',stacked=True) : stacked属性为True可以设置为堆积柱状图

    Series的柱状图

    #第二种创建画布和画布分区方法,创建figure,返回一个subplot对象
    fig,axes =plt.subplots(2,1)             
    s=Series(np.random.rand(16),index=list('abcdefghijklmnop'))  
    s.plot( kind= 'bar' ,ax=axes[0])       #返回的axes的数组可指定在哪个subplot对象上画图
    s.plot( kind= 'barh' ,ax=axes[1])      
    plt.show()
    

    DataFrame的柱状图

    • 每一行的值为一组,每一列的columns为图例
    fig,axes =plt.subplots(2,1)                    
    df=DataFrame(np.random.rand(4,4),index=['one','two','three','four'],columns=pd.Index(['A','B','C','D'],name='Genus'))  
    df.plot( kind= 'bar',ax=axes[0] )             
    df.plot( kind= 'bar',ax=axes[1],stacked=True )  #stacked=True 可以生成堆积柱状图
    plt.show()
    

    3.密度图( KDE, Kernel Density Estimate ,核密度估计 )

    • 密度图即为连续概率分布图,将分布近似为标准混合正态分布。

    df.plot( kind='kde')

    fig=plt.figure()
    #Series 的密度图
    fig.add_subplot(2,1,1)
    s=Series(np.random.rand(50).cumsum(),index=np.arange(0,100,2))  
    s.plot(kind='kde')
    plt.title(u"Series的密度图")
    plt.show()
    
    #DataFrame 的密度图,会给每一列都画一条密度估计线,并将columns自动生成图例
    fig.add_subplot(2,1,2)
    df=DataFrame(np.random.rand(10,4).cumsum(0),index=np.arange(0,100,10),columns=pd.Index(['A','B','C','D'],name='Genus'))
    df.plot(kind='kde')
    plt.title(u"DataFrame的密度图")
    plt.show()
    

    4.直方图

    • 直方图是对值频率进行离散化显示的柱状图,数据点呗拆分到离散的、间隔均匀的面元中。

    df.hist( bins=10) :bins属性可设置柱子数量

    fig=plt.figure()
    #Series 的密度图
    fig.add_subplot(2,1,1)
    s=Series(np.random.rand(20).cumsum(),index=np.arange(0,100,5))  
    s.hist( bins=10)
    plt.title(u"Series的直方图")
    plt.show()
    
    #DataFrame 的密度图,会给每一列都画一张直方图,并将列名作为对应标题
    fig.add_subplot(2,1,2)
    df=DataFrame(np.random.rand(10,4).cumsum(0),index=np.arange(0,100,10),columns=pd.Index(['A','B','C','D'],name='Genus'))
    df.hist( bins=10)
    plt.show()
    
    

    5.散点图

    • 散点图是观察两个一维数据间关系的有效方式

    plt.scatter(X,Y)

    macro = pd.read_csv('macrodata.csv')
    data = macro[['cpi','m1','tbilrate','unemp']]
    trans_data = np.log(data).diff().dropna()
    # 画出两个Series之间的散点图
    plt.scatter(trans_data['m1'],trans_data['unemp'])
    plt.title('Change in log %s vs.log %s' % ('m1','unemp'))
    plt.show()
    

    DataFrame的散点图矩阵

    • 创建散布图矩阵,会把DataFrame中任意两列画散点图,观察其之间的关系。

    • 支持在对角线上放置各变量的直方图或者密度图

    pd.scatter_matrix( trans_data ,diagonal = 'kde' ,color ='k' ,alpha=0.3)

    # 画出散布图矩阵
    pd.plotting.scatter_matrix( trans_data ,diagonal = 'kde' ,color ='k' ,alpha=0.3)
    plt.show()
    

  • 相关阅读:
    Windows下Subversion配置管理员指南
    asp.net HttpHand和HttpModule的详细解释,包括Asp.Net对Http请求的处理流程。
    SQL Server 2000不能远程连接的问题
    ASP通用分页类[强]
    不错的站长工具网址(不断收集中....)
    函数的四种调用模式
    HDOJ 3943 Kth Nya Number(数位DP)
    HDOJ 2196 Computer
    HDOJ 3695 Computer Virus on Planet Pandora (AC自动机)
    HDOJ 4277 USACO ORZ (搜索+剪枝)
  • 原文地址:https://www.cnblogs.com/laiyaling/p/10063530.html
Copyright © 2011-2022 走看看