Pandas绘图之Series和Dataframe
Pandas绘图之Series和Dataframe
一、Series绘图
0x1生成数据并画图
首先生成一个series数据:
1 2 3 4 5 6 |
import numpy as np import pandas as pd from pandas import Series import matplotlib.pyplot as plt s1 = Series(np.random.randn(10)).cumsum() |
直接绘制s1的图像:
其中cunsum方法是累加,如图:
![]()
0x2 修改图像属性
改变图像类型
kind参数默认为line,表示显示折线图,也可以修改这个参数的值以显示其他类型的图像:
显示格栅
grid参数默认为False,修改其值为True可以在图像中显示格栅:
增加图例和标题
label参数可以指定图像的图例,title参数可以指定图像的标题。指定label后必须执行plt.legend()才能显示图例:
设置图像风格
style可以设置图像线条的风格,虚线、实线、点等:
0x3 在一张图中画两个series数据
在一个图像中
1 2 3 4 5 6 |
s1 = Series(np.random.randn(10)).cumsum() s2 = Series(np.random.randn(10)).cumsum() s1.plot(kind='line',label='S1',title='This is demo') s2.plot(label='S2') plt.legend() |
通过subplot子图
1 2 3 4 |
fig,ax = plt.subplots(2,1) ax[0].plot(s1) ax[1].plot(s2) |
1 2 3 4 |
fig,ax = plt.subplots(2,1) s1.plot(ax=ax[0]) s2.plot(ax=ax[1]) |
1 2 3 4 |
fig,ax = plt.subplots(2,1) s1.plot(ax=ax[0],kind='bar') s2.plot(ax=ax[1]) |
二、Dataframe绘图
0x1 生成数据并画图
dataframe本质是多个series组成的,所以对dataframe绘图其实是对多个series同时绘图
1 2 3 4 5 6 7 |
import numpy as np import pandas as pd import matplotlib.pyplot as plt from pandas import Series, DataFrame df = DataFrame(np.random.randint(1,10,40).reshape(10,4),columns=['A','B','C','D']) df.plot() |
每一条折线就是一列。
0x2 改变图形属性
改变线条类型
横向显示柱形图
堆叠显示柱形图
填充的线形图
按行画图
1 2 |
df.iloc[5].plot() |
1 2 3 4 5 |
for i in df.index: df.iloc[i].plot(label=str(i)) plt.legend() plt.show() |
更简单的方法是先对原始dataframe转置再画图