直方图和密度图
直方图
直方图(histogram)是一种可以对值频率进行离散化显示的柱状图。数据点被拆分到离散的、间隔均匀的面元中,绘制的是各面元中数据点的数量。
In [165]: data1=pd.read_csv('G:\LPTPython\practice.csv')
In [167]: data1['tip_pct']=data1['tip'] / data1['total_bill']
In [169]: data1['tip_pct'].hist(bins=50)
密度图
与此相关的一种图表类型是密度图,它是通过计算“可能会产生观测数据的连续概率分布的估计”而产生。一般的过程是将该分布近似为一组合(即诸如正态(高斯)分布之类的较为简单的分布)。因此,密度图也被称作KDE图。调用plot时加上kind=’kde’即可生成一张密度图(标准混合正态分布KDE):
In [170]: data1['tip_pct'].plot(kind='kde')
In [182]: values.hist(bins=100,alpha=0.3,color='#1d07f5',normed=True)
In [186]: values.plot(kind='kde',style='k--')
散布图(或散点图)
散布图(scatter plot)是观察两个一维数据序列之间的关系的有效手段。Matplotlib的scatter方法是绘制散布图的主要方法。
In [187]: macro=pd.read_csv('G:\LPTPython\macrodata.csv')
In [188]: data=macro[['cpi','m1','tbilrate','unemp']]
In [190]: trans_data=np.log(data).diff().dropna()
In [191]: trans_data[-5:]
Out[191]:
cpi m1 tbilrate unemp
198 -0.007904 0.045361 -0.396881 0.105361
199 -0.021979 0.066753 -2.277267 0.139762
200 0.002340 0.010286 0.606136 0.160343
201 0.008419 0.037461 -0.200671 0.127339
202 0.008894 0.012202 -0.405465 0.042560
plt.scatter
利用plt.scatter即可轻松绘制一张简单的散布图:
In [192]: plt.scatter(trans_data['m1'],trans_data['unemp'])
scatter_matrix函数
Pandas提供了一个能从DataFrame创建散布图矩阵的scatter_matrix函数。它还支持在对角线上放置各变量的直方图或密度图。
In [195]: pd.scatter_matrix(trans_data,diagonal='kde',c='r',alpha=0.3)