数据可视化(三):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

猜你喜欢

转载自blog.csdn.net/weixin_34326179/article/details/87429992