本文共 1827 字,大约阅读时间需要 6 分钟。
《Python for Data Analysis》
pandas有许多能够利用DataFrame对象数据组织特点来创建标准图表的高级绘图方法。
import pandas as pd import numpy as np%matplotlib inlines = pd.Series(np.random.randn(10).cumsum(), index=np.arange(0, 100, 10))s.plot()
Series对象的索引会被传给matplotlib,并用以绘制X轴。
df = pd.DataFrame(np.random.randn(10, 4).cumsum(0), columns=['A', 'B', 'C', 'D'], index=np.arange(0, 100, 10))df.plot()
import matplotlib.pyplot as plt fig, axes = plt.subplots(2, 1)data = pd.Series(np.random.rand(16), index=list('abcdefghijklmnop'))data.plot.bar(ax=axes[0], color='k', alpha=0.7) # 垂直柱状图data.plot.barh(ax=axes[1], color='k', alpha=0.7) # 水平柱状图
df = pd.DataFrame(np.random.rand(6, 4), index=['one', 'two', 'three', 'four', 'five', 'six'], columns=pd.Index(['A', 'B', 'C', 'D'], name='Genus'))df.plot.bar()
df.plot.barh(stacked=True, alpha=0.5) # 堆积柱状图
tips = pd.read_csv('examples/tips.csv')party_counts = pd.crosstab(tips['day'], tips['size'])# Not many 1- and 6-person partiesparty_counts = party_counts.loc[:, 2:5]# Normalize to sum to 1party_pcts = party_counts.div(party_counts.sum(1), axis=0)party_pcts.plot.bar()
import matplotlib.pyplot as plttips['tip_pct'] = tips['tip'] / (tips['total_bill'] - tips['tip'])tips['tip_pct'].plot.hist(bins=50)
comp1 = np.random.normal(0, 1, size=200)comp2 = np.random.normal(10, 2, size=200)values = pd.Series(np.concatenate([comp1, comp2]))values.hist(bins=100, color='k')
tips['tip_pct'].plot.density()
macro = pd.read_csv('examples/macrodata.csv')data = macro[['cpi', 'm1', 'tbilrate', 'unemp']]trans_data = np.log(data).diff().dropna()trans_data[-5:]plt.scatter(trans_data['m1'],trans_data['unemp'])plt.title('Changes in log %s versus log %s' % ('m1', 'unemp'))
pd.scatter_matrix(trans_data, diagonal='kde', alpha=0.3)