python学习-Pandas快速绘图

基本步骤

• 导入matplotlib、Pandas

• 准备数据

• 使用Series或DataFrame封装数据

• 绘图

• 调用Series.plot()或DataFrame.plot()函数完成绘图

import matplotlib.pyplot as plt #导入pyplot,用于图形显示
from pandas import DataFrame
gdp = [41.3,48.9,54.0,59.5,64.4,68.9,74.4]
data = DataFrame({'GDP: Trillion':gdp}, 
    index=['2010','2011','2012','2013','2014','2015','2016']) 
data.plot() 
plt.show() #显示图形(jupyter 中可以不用)

pandas绘图方法:

DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, 
                sharex=None, sharey=False, layout=None,figsize=None, 
                use_index=True, title=None, grid=None, legend=True, 
                style=None, logx=False, logy=False, loglog=False, 
                xticks=None, yticks=None, xlim=None, ylim=None, rot=None,
                xerr=None,secondary_y=False, sort_columns=False, **kwds)

Matplotlib精细绘图

• 基本步骤

• 导入matplotlib、Pandas,导入matplotlib的pyplot模块

• 创建figure对象,matplotlib的图像都位于figure对象内

• 绘图:利用pyplot的绘图函数plot() 或pandas绘图

• 设置图元:plt的图元设置函数,实现图形精细控制

import matplotlib.pyplot as plt #导入绘图库
plt.figure() #创建绘图对象
GDPdata=[41.3,48.9,54.0,59.5,64.4,68.9,74.4] #准备绘图的序列数据
plt.plot(GDPdata,color="red",linewidth=2,linestyle='dashed',mark
    er='o',label='GDP') #绘图
#精细设置图元
plt.title('2010~2016 GDP: Trillion')
plt.xlim(0,6) #x轴绘图范围
plt.ylim(35,75) #y轴绘图范围
plt.xticks(range(0,7),('2010','2011','2012','2013','2014','2015'
,'2016')) #将x轴刻度映射为字符串
plt.legend(loc='upper right') #在右上角显示图例说明
plt.grid() #显示网格线
plt.show() #显示并关闭绘图

figure对象内可绘制多个子图

• 创建子图对象axes,在子图上绘制图

• 可使用pyplot或axes对象提供的绘图

• 可pandas绘图

创建子图

figure.add_subplot(numRows, numCols, plotNum)

from pandas import Series
data=Series( [41.3,48.9,54.0,59.5,64.4,68.9,74.4], 
index=['2010','2011','2012','2013','2014','2015','2016'])
fig=plt.figure(figsize=(6,6)) #figsize定义图形大小
ax1=fig.add_subplot(2,1,1) #创建子图1 
ax1.plot(data) #用AxesSubplot绘制折线图
ax2=fig.add_subplot(2,2,3) #创建子图2 
data.plot(kind='bar',use_index=True,fontsize='small',ax=ax2)#用pandas绘柱状图
ax3=fig.add_subplot(2,2,4) #创建子图3 
data.plot(kind='box',fontsize='small',xticks=[],ax=ax3) #用pandas绘柱箱图

设置图元和说明

保存图表到文件

保存函数

figure.savefig(filename,dpi,bbox_inches)

plt.savefig(filename,dpi,bbox_inches)

函数绘图

plt.plot()根据给定的x、y坐标值绘图

import numpy as np #导入numpy
#生成x数组
x = np.linspace(0,6.28,50) #start, end, num-points
y=np.sin(x) #计算y=sin(x)数组
plt.plot(x,y, color='r') #用红色绘图y=sin(x)
plt.plot(x,np.exp(-x),c='b') #用蓝色绘图y=exp(-x)

散点图

描述两个一维数据序列之间的关系 • 将两组数据分别作为点的横坐标和纵坐标 DataFrame.plot(kind=’scatter’,x,y,title, grid,xlim,ylim,label,...)

DataFrame.plot.scatter(x,y,title, grid,xlim,ylim,label,...)

Matplotlib的scatter函数也可以绘制散点图

• 图元的设置需要采用独立的语句

plt.scatter(x,y,...)

散点图矩阵

pd.plotting.scatter_matrix(data,diagonal,...)#同时观察多组数据之间的关系

柱状图(Bar Chart)

Series.plot(kind,xerr,yerr,stacked,...)

DataFrame.plot(kind,xerr,yerr,stacked,...)

折线图

• 普通折线图:横、纵坐标轴上都使用算术刻度

• 半对数折线图:横、纵坐标分别使用算术刻度与对数刻度

        • 比较的两种或多种事物的数据值域相差较大

        • 指标“相对增长量”的变化关系

data = pd.read_csv('GDP.csv', index_col = 'Year') #读取数据
#绘制GDP和Income的折线图
data.plot(title='GDP & Income’,linewidth=2,marker='o',linestyle='dashed', grid=True,use_index=True)
#绘制GDP和Income的半对数折线图
data.plot(logy=True,linewidth=2,marker='o',linestyle='dashed',color='G')

直方图(Histogram)

描述总体的频数分布情况

• 将横坐标按区间个数等分

• 每个区间上长方形的高度表示该区间样本的频率, 面积表示频数

Series.plot(kind=’hist’,bins,normed,...)

密度图(Kernel Density Estimate)

• 基于样本数据拟合概率密度函数 • 采用平滑的峰值函数:核函数 • 常用高斯核

• 模拟真实的概率分布曲线

• 与直方图(标准化后)一起绘制,对比

Series.plot(kind=’kde’,style,...)

饼图(Pie Chart)

Series.plot( kind='pie', explode,shadow,startangle,autopct,...)

箱须图(Box plot)

• 表达数据的分位数分布,观察异常值 • 将样本居中的50%值域用一个长方形表示 • 较小和较大的四分之一值域各用一根线表示 • 异常值用“o”表示

Series.plot(kind='box', ...)

Pandas提供专门绘制箱须图的函数boxplot • 方便将观察样本按照其他特征进行分组对比

DataFrame.boxplot( by, ...)

#by 用于分组的列名

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚公移山山不移

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值