一、绘制折线图
1、使用Series绘制折线图
执行如下代码
from pandas import DataFrame,Series
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
s=pd.Series(np.random.randn(10).cumsum(),index=np.arange(0,100,10))
s.plot()
plt.show()
首先导入pandas库、numpy库和matplotlib库,引入pandas库中的DataFrame和Series数组,接着将Series对象索引传给matplotlib并绘制图形。np.random表示随机抽样,np.random.randn(10)用于返回一组随机数据,cumsum用于返回累加值,np.arange(0,100,10)用于返回一个有终点和起点的固定步长的排列以显示刻度值,0是起点,100是终点,10是步长,结果如下
常用的numpy随机函数如下表
函 数 | 描 述 |
---|---|
rand(d0,d1,…dn) | 返回一组随机值,根据给定维度生成[0,1]数据 |
randn(d0,d1,…dn) | 返回一个样本,具有标准正态分布 |
randint(low[,high,size]) | 返回随机整数,位于半开区间[low,high] |
random_integers(low[,high,size]) | 返回随机整数,位于闭区间[low,high] |
random([size]) | 返回随机浮点数,位于半开区间[0.0,1.0] |
bytes(length) | 返回随机字节 |
常用的Series.plot函数如下表
函 数 | 描 述 |
---|---|
label | 图表的标签 |
ax | 要进行绘制的对象 |
style | 要传给matplotlib的字符风格 |
alpha | 图标填充透明度0~1 |
kind | 图标的类型 |
logy | 在Y轴上使用对数标尺 |
rot | 旋转刻度标签0~360 |
xticks,yticks | 用作X轴和Y轴刻度的值 |
xlim,ylim | X轴和Y轴的界限 |
常用的DataFrame.plot函数如下表
函 数 | 描 述 |
---|---|
subplots | 将各个DataFrame列绘制到单独的subplot中 |
sharex | 如果将subplots=True则共用一个X轴 |
sharey | 如果将subplots=True则共用一个Y轴 |
figsize | 图像元组的大小 |
title | 图像标题 |
legend | 添加一个subplots图例 |
sort_columns | 以字母表顺序绘制各列 |
2、使用DataFrame绘制折线图
执行如下代码
from pandas import DataFrame,Series
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df=pd.DataFrame(np.random.randn(10,4).cumsum(0),columns=['A','B','C','D'],index=np.arange(0,100,10))
df.plot()
plt.show()
上述代码生成了4条折线,并有A,B,C,D标注图例,如下图
二、绘制柱状图
1、使用Series绘制柱状图
执行如下代码
from pandas import DataFrame,Series
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
fig,axes=plt.subplots(2,1)
df=pd.Series(np.random.rand(16),index=list('abcdefghijklmnop'))
df.plot.bar(ax=axes[0],color='r',alpha=0.7)
df.plot.barh(ax=axes[1],color='r',alpha=0.7)
plt.show()
ax=axes[0]表示设置subpolt对象名称,color='r’表示设置图形颜色为红色,alpha=0.7表示图形透明度为0.7,结果如下图
2、使用DataFrame绘制柱状图
执行如下代码
from pandas import DataFrame,Series
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df=pd.DataFrame(np.random.rand(4,4),index=['one','two','three','four'],columns=pd.Index(['A','B','C','D'],name='bar'))
df.plot.bar()
plt.show()
结果如下图
三、绘制直方图
通过DataFrame的hist方法绘制
执行如下代码
from pandas import DataFrame,Series
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from numpy.random import randn
df=pd.DataFrame({'a':np.random.rand(1000)+1,'b':np.random.randn(1000),},columns=['a','b'])
df.plot.hist(bins=20)
plt.show()
bins=20表示直方图可以交叉,结果如下图
在语句df.plot.hist(bins=20)加入stacked=True,可以绘制叠加直方图,如下图