pandas可视化
函数定义
pandas模块提供了基本的可视化操作,series和dataframe可以用plot()方法进行可视化,其函数格式如下:
df.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,
fontsize=None,
colormap=None,
table=False,
yerr=None,
xerr=None,
secondary_y=False,
sort_columns=False,
**kwds,)
其中参数kind表示了画图的种类
- 'line' : line plot (default)默认值
- 'bar' : vertical bar plot
- 'barh' : horizontal bar plot
- 'hist' : histogram
- 'box' : boxplot
- 'kde' : Kernel Density Estimation plot
- 'density' : same as 'kde'
- 'area' : area plot
- 'pie' : pie plot
- 'scatter' : scatter plot
- 'hexbin' : hexbin plot
title: 图表名称
grid: 网格
legend:图例
style: 绘图的风格,如‘ko--’
ax:要在其上进行绘制的matplotlib.subplot对象,如果没有,则使用默认的subplot对象
use_index:True(默认),False。表示默认情况下,会将series和dataframe的index传给matplotlib,用已绘制X轴
x:x轴方向
y:y轴方向
subplots:固定比例
figsize:图像尺寸
logx:在X轴上使用对数标尺
logy:在Y轴上使用对数标尺
xticks:None,用做x刻度的值
yticks:None,用做Y轴刻度的值
xlim:None, X轴的界限如【0,10】
ylim:None,Y轴的界限
rot:None, 旋转刻度标签 0-360
使用实例
线型图
import numpy as np
import pandas as pd
s=pd.Series(np.random.randint(1,10,10),index=pd.date_range('2019/12/10',periods=10))
print(s)
s.plot()
运行结果如下
2019-12-10 6
2019-12-11 4
2019-12-12 5
2019-12-13 9
2019-12-14 2
2019-12-15 1
2019-12-16 1
2019-12-17 5
2019-12-18 8
2019-12-19 1
Freq: D, dtype: int64
条形图
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randint(1,10,20).reshape(20,1),columns=list('AB))
print(df)
df.plot(kind='bar)
运行结果如下
垂直堆型条形图
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randint(1,10,20).reshape(10,2),columns=list('AB))
print(df)
df.plot(kind='bar',stacked=True)
运行结果如下:
水平条形图
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randint(1,10,20).reshape(10,2),columns=(list('AB))
print(df)
df.plot(kind='barh',stacked=True)
运行结果如下:
直方图
import numpy as np
import pandas as pd
df=pd.DataFrame(np.random.randn(3000).reshape(1000,3),columns=['a','b','c'])
print(df.head(5))
df.plot(kind='hist',bins=100)
运行结果如下:
直方图一般包含了多种元素的值,对于每一种元素,也可以分别进行绘图,其内容如下:
import numpy as np
import pandas as pd
df=pd.DataFrame(np.random.randn(3000).reshape(1000,3),columns=['a','b','c'])
df.hist()
运行结果如下:
密度图
密度图显示数据分布的情形,其内容如下:
import numpy as np
import pandas as pd
df=pd.DataFrame(np.random.randn(3000).reshape(1000,3),columns=['a','b','c'])
df.plot(kind='density')
其运行结果如下:
箱型图
import numpy as np
import pandas as pd
df=pf.DataFrame(np.random.randint(1,10,20).reshape(20,2),columns=list('AB))
df.plot(kind='box)
其运行结果如下:
区域块图形
import numpy as np
import pandas as pd
df=pd.DataFrame(np.random.randint(1,10,20).reshape(20,2),columns=list('AB'))
df.plot(kind='area',stacked=False)
其运行结果如下:
散点图
import numpy as np
import pandas as pd
df=pd.DataFrame(np.random.randint(1,10,20).reshape(20,2),columns=list('AB'))
df.plot(kind='scatter',x='A',y='B',color='orange',label='AB')
运行结果如下:
饼状图
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randint(1,10,4).reshape(4, 1), columns=list('A'))
df.plot(kind="pie", subplots=True)
其运行结果如下:
多个图形
想要同时画出多个图形,要使用subplot()方法,内容如下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(1000), columns=['x'])
ax = plt.subplot(1,1,1)
df.plot(kind='hist',bins=20, ax=ax, normed=True)
df.plot(kind='density', color='red', ax=ax)
运行结果如下: