微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据可视化三:Pandas中的绘图函数

一、折线图

使用.plot()将Series或者DataFrame对象传给matplotlib用以绘制图像。
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)) #index相对于绘制x轴
s.plot(style='bo--')

11098258-3de3b53d6039894c.png


Series.plot()内部参数有


11098258-45a8e314249bac4b.png


11098258-7000f8da09efffe1.png


DataFrame:

df = pd.DataFrame(np.random.randn(10, 4).cumsum(0),
                  columns=['A', 'B', 'C', 'D'],    
                  index=np.arange(0, 100, 10))    #columns相当于图例
df.plot()

11098258-de9780b925d258de.png


DataFrame.plot()内部参数有


11098258-8f7809e049b317b6.png

二、柱形图

垂直柱形图:.plot.bar
水平条形图:.plot.barh
索引会被用作是X轴刻度(bar),Y轴刻度(barh)
Series:

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)

11098258-87fb052e7d1b8b84.png


DataFrame:
使用stacked=True可以生成堆积条形图或者堆积柱形图

fig, axes = plt.subplots(2, 1)
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(ax=axes[0])
df.plot.barh(ax=axes[1],stacked=True)  #堆积柱形图

11098258-407247130d9c2c23.png

三、直方图和概率密度分布图

直方图:.hist()
概率密度分布图:.plot(kind='kde')

plt.figure()
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,alpha=0.3,color='k',normed=True)#normed是否进行归一化
values.plot(kind='kde',style='k--')

11098258-fa7393181d28ebdb.png

四、散点图

plt.scatter()

macro = pd.read_csv('examples/macrodata.csv')
data = macro[['cpi', 'm1', 'tbilrate', 'unemp']]
trans_data = np.log(data).diff().dropna()
trans_data[-5:]

11098258-38272294a58a9d17.png

plt.figure()
plt.scatter(trans_data['m1'],trans_data['unemp'])
plt.title('Changes in log %s versus log %s' % ('m1', 'unemp'))

11098258-ac3726946328865f.png


使用pd.scatter_matrix()可以在对角线放置直方图或者密度分布图

pd.scatter_matrix(trans_data, diagonal='kde')

11098258-2abe1e02248560b1.png

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐