绘图和可视化(pandas)

13 篇文章 0 订阅
3 篇文章 0 订阅

《Python for Data Analysis》

pandas中的绘图函数

pandas有许多能够利用DataFrame对象数据组织特点来创建标准图表的高级绘图方法。

线形图

import pandas as pd 
import numpy as np
%matplotlib inline
s = 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 parties
party_counts = party_counts.loc[:, 2:5]

# Normalize to sum to 1
party_pcts = party_counts.div(party_counts.sum(1), axis=0)
party_pcts.plot.bar()

这里写图片描述

直方图

import matplotlib.pyplot as plt
tips['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)

这里写图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值