文章目录
前言
Pandas的绘图函数基于Matplotlib。Pandas数据提供了方便的绘图函数,可以直接调用绘图。不仅包括常用的点、线、柱形图、饼图,还包括直方图、核密度曲线图等统计图形。
一、Pandas绘图基本方法
方法一:利用plot模块
通过数据(Series或DataFrame)的plot属性调用绘图函数。
import pandas as pd
import matplotlib.pyplot as plt
d=pd.DataFrame({
"x":np.arange(10)})
d['y']=d['x']**2
d.plot.line(x='x',y='y')
plt.show()
绘图函数 | 描述 |
---|---|
df.plot.scatter(x=‘col1’,y=‘col2’) | 散点图。(Series数据类型不支持) |
d.plot.line(x=‘col1’,y=‘col2’) | 折线图。 |
d.plot.area(x=‘col1’,y=‘col2’) | 颜色填充的折线图。 |
d.plot.bar(x=‘col1’,y=‘col2’) | 柱状图。 |
d.plot.barh(x=‘col1’,y=‘col2’) | 水平柱状图。 |
d.plot.pie(y=‘col2’) | 饼状图,只需要指定y值。 |
d.plot.hist() | 直方图,用柱形图显示数据分布密度。 |
d.plot.dendity() | 核密度分布图,用指定的核密度函数(数据假定或已知的分布函数)拟合直方图。 |
d.plot.box() | 箱型图,用一个箱型图显示一列数据的最小值,25%分位值,中位数,75%分位值,最大值。 |
d.hexbin() | 在x,y坐标处绘制平面六边形,用六边形颜色表示x,y坐标出现的次数。 |
方法二:利用plot函数
直接调用plot函数。
# 导入库
import pandas as pd
import matplotlib.pyplot as plt
# 初始化数据
d=pd.DataFrame({
'x':np.arange(10)})
d['y']=d['x']**2
# 绘图
d.plot(x='x', y='y', kind="line") #调用plot函数绘图,指定图形类别为折线图
# 显示
plt.show()
函数 | 描述 |
---|---|
df.plot(x=‘col1’,y=‘col2’,kind=‘scatter’) | 散点图。 |
d.plot(x=‘col1’,y=‘col2’,kind=‘line’) | 折线图。 |
d.plot(x=‘col1’,y=‘col2’,kind=‘area’) | 颜色填充的折线图。 |
d.plot(x=‘col1’,y=‘col2’,kind=‘bar’) | 垂直柱状图。 |
d.plot(x=‘col1’,y=‘col2’,kind=‘barh’) | 水平柱状图。 |
d.plot(y=‘col2’,kind=‘pie’) | 饼状图,只需要指定y值。 |
d.plot(kind=‘hist’) | 直方图,用柱形图显示数据分布密度。 |
d.plot(kind=‘dendity’) | 核密度分布图,用指定的核密度函数(数据假定或已知的分布函数)拟合直方图。 |
d.plot(kind=‘box’) | 箱型图,用一个箱型图显示一列数据的最小值,25%分位值,中位数,75%分位值,最大值。 |
d.plot(kind=‘hexbin’) | 在x,y坐标处绘制平面六边形,用六边形颜色表示x,y坐标出现的次数。 |
控制参数说明
- 图形
参数 | 说明 |
---|---|
ax | 要在其上进行绘制的matplotlib subplot对象,如果没有设置,则使用当前matplotlib subplot |
label | 用于图例的标签 |
- 样式
参数 | 说明 |
---|---|
style | 将要传给matplotlib的风格字符串(如‘ko–') |
alpha | 图表的填充不透明度(0到1之间) |
kind | 可以是’line’,‘bar’,‘barh’,‘kde’ |
- 坐标轴设置
参数 | 说明 |
---|---|
logx | True/False,是否在X轴上使用对数标尺 |
logy | True/False,是否在Y轴上使用对数标尺 |
use_index | 将对象的索引用作刻度标签 |
rot | 旋转刻度标签(0到360) |
xticks | 用作X轴刻度的值 |
yticks | 用作Y轴刻度的值 |
xlim | X轴的界限(例如[0,10]) |
ylim | Y轴的界限(例如[0,10]) |
grid | 显示轴网格线(默认打开) |
- 专用于dataframe的plot参数说明
参数 | 说明 |
---|---|
subplots | 将各个DataFrame列绘制到单独的subplot中。 |
sharex | 如果subplots=True,则共用同一个x轴,包括刻度和界限。 |
sharey | 如果subplots=True, 则共用同一个y轴,包括刻度和界限。 |
figsize | 表示图像大小的元组。 |
title | 表示图像标题的字符串。 |
legend | 添加一个subplot图例(默认为True)。 |
sort_columns | 以字母表顺序绘制各列,默认使用当前列顺序。 |
注意: plot函数与plot模块等效,除了通过kind参数指定绘图方法。其他参数完全相同。
二、Pandas绘制图形
series数据调用绘图函数时,不用指定x,y数据,默认把series数据作为y坐标数据,用自然数[0,1,2,…]作为x坐标数据。
1.散点图
- dataframe数据
import numpy as np
import pandas as pd
x=np.arange(5)
y=np.random.randint(10,size=5)
df=pd.DataFrame({
'x':x,'y':y})
# plot模块
df.plot.scatter(x='x',y='y')
# plot函数
df.plot(x='x',y='y',kind='scatter')
- 注意:
Series不支持scatter函数,且x,y坐标长度必须相同。
df.plot.scatter(x=['col1','col2'],y=['col3','col4'])
- (col1,col3)和(col2,col4)分别作为x,y坐标绘制散点图。
- x,y必须都是列表,且列表长度必须相同。
scatter绘制多列数据与其他函数都不同。与线条等图形相比,不同的数据列表示不同的线条,但是散点图没有这个概念,所有的散点都是同一个序列的。所以,同一个图形中可以绘制多条曲线,但是在散点图中不论多少个数据列,都合并为一个散点序列。
- scatter函数支持所有数据参数调用方式:
import pandas as pd
df=pd.DataFrame({
'col1':[1,2,3,4],'col2':[2,3,2,4],'col3':[3,1,2,1.5],'col4':[3,4,5,8]},index=['a','b','c','d'])