我有一个看起来像这样的数据框。我需要每个独特项目(书,桌子和椅子)的子图。图表应按年份排序(年份也是x轴)。我需要利用twiny来左边的Price和每个子图右边的数量。
我可以通过创建单个数据框手动为每个项目执行此操作。所以我为Book创建了一个数据框,然后按Year排序并将Year设置为索引。然后使用secondary_y创建绘图。但显然这是漫长的啰嗦。有没有办法从原始数据帧执行此操作而不进行所有手动处理?
Item Year Price Quantity
0 Book 2000 $2 50
1 Table 2000 $33 44
2 Chair 2000 $21 31
3 Book 2001 $3 77
4 Table 2001 $20 500
5 Chair 2001 $2 50
6 Book 2002 $36 7
7 Table 2002 $200 50
8 Chair 2002 $44 5
答案 0 :(得分:1)
不确定你的意思,但也许你可以使用groupby()
然后遍历这些群组?
这是一个简单的例子(使用pyplot)
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%matplotlib inline
dicts = []
dicts.append({'item':'book','year':2000,'price':2, 'quantity':50})
dicts.append({'item':'table','year':2000,'price':33, 'quantity':44})
dicts.append({'item':'chair','year':2000,'price':21, 'quantity':31})
dicts.append({'item':'book','year':2001,'price':3, 'quantity':50})
dicts.append({'item':'table','year':2001,'price':20, 'quantity':44})
dicts.append({'item':'chair','year':2001,'price':2, 'quantity':31})
dicts.append({'item':'book','year':2002,'price':36, 'quantity':7})
dicts.append({'item':'table','year':2002,'price':200, 'quantity':50})
dicts.append({'item':'chair','year':2002,'price':44, 'quantity':5})
df = pd.DataFrame.from_records(dicts)
grouped = df.groupby('item')
fig, axes = plt.subplots(1,3,sharey=True)
fig.set_size_inches(15,4)
for i,group_key in enumerate(list(grouped.groups.keys())):
grouped.get_group(group_key).set_index('year').plot(kind='bar',ax = axes[i])
axes[i].set_title(group_key,fontsize=15)