数据可视化
pandas的数据可视化使用matplotlib为基础组件,更基础的信息可参阅matplotlib相关内容。
导入matplotlib
%matplotlib inline#引入matplotlib
import pandas as pd
import numpy as np
1. 线型图
ts=pd.Series(np.random.randn(1000),index=pd.date_range('2000/1/1',periods=1000))
ts=ts.cumsum()#累计求和
ts.describe()
ts.plot(title='cumsum',style='r-',figsize=(8,6))#画出这一组数字,tiltle设置名称,style设置颜色,figsize调整图的大小
df=pd.DataFrame(np.random.randn(1000,4),index=ts.index,columns=list("ABCD"))
df=df.cumsum()
df.describe()
df.plot()
df.plot(subplots=True,sharey=True)#subplots=True把每列单独画在一个子图里,sharey=True是让纵坐标变成一样的范围
df['ID']=np.arange(len(df))#给df新加一列叫ID
df.describe()
df.plot(x='ID',y=['A','C'])指定x轴是ID,y轴是只画出A和C
2.柱状图
df=pd.DataFrame(np.random.randn(10,4),columns=['A','B','C','D'])
df
df.iloc[0].plot(kind='bar')#iloc=0意思是以0为基准画的,类型是柱状图
df.plot.bar()
df.plot.bar(stacked=True)#画成堆叠起来的样子
df.plot.barh(stacked=True)#barh画呈水平方向
3.直方图
df=pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),
'c':np.random.randn(1000)-1},columns=['a','b','c'])
df['a'].hist(bins=20)#画一个直方图,某个区间内的数字有多少。分20份
df.plot.hist(subplots=True,sharex=True,sharey=True,bins=50)#分50组
df.plot.hist(alpha=0.3)#加一个透明值
4. 密度图
df.plot.kde()#画出概率密度函数
5.散布图
df=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df
df.plot.scatter(x='a',y='b')#散布图
df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot.scatter(x='a', y='b');
df = pd.DataFrame({'a': np.concatenate([np.random.normal(0, 1, 200), np.random.normal(6, 1, 200)]),
'b': np.concatenate([np.random.normal(10, 2, 200), np.random.normal(0, 2, 200)]),
'c': np.concatenate([np.random.normal(10, 4, 200), np.random.normal(0, 4, 200)])})
df.describe()
df.plot.scatter(x='a', y='b')
6.饼图
s=pd.Series(3*np.random.rand(4),index=['a','b','c','d'],name='series')
s
s.plot.pie()#画一个饼图
s.plot.pie(labels=['food','clothes','toy','cosmetic'],autopct='%0.2f',fontsize=20)#(labels,设置标签。显示百分比,fontsize设置一下字体大小
7.其他
高级绘图函数在 pandas.tools.plotting 包里。