我有一个茶叶出口公司的数据集,它包括总出口和茶叶类型和重量类别。
它看起来像这样
Date Type Weight Quantity Price
2016-01-01 black bags 1734136.51 1131.30
2016-01-01 black bulk 10722389.66 510.86
2016-01-01 black 4g_1kg 6817078.01 588.72
2016-01-01 black 1kg_3kg 86444.50 565.91
2016-01-01 black 3kg_5kg 1003986.73 552.39
现在我已经用这个对数据进行了分组
df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date']).dt.date
df['YearMonth'] = df['Date'].map(lambda date: 100*date.year + date.month)
df = df.groupby(['YearMonth','Type', 'Weight']).agg({'Quantity':'sum'})
Dataframe 现在看起来像这样
YearMonth Type Weight Quantity
201601 black 1kg_3kg 86444.50
3kg_5kg 1003986.73
4g_1kg 6817078.01
5kg_10kg 2816810.33
bags 1734136.51
bulk 10722389.66
green 3kg_5kg 12.00
4g_1kg 53014.95
5kg_10kg 1132.00
bags 41658.19
bulk 112400.00
instant 4g_1kg 28.80
lt3kg 89486.40
201602 black 1kg_3kg 215539.60
现在我想把它绘制成一个图表。日期在x轴,类型和重量在y轴。我试了下面的代码,但它给我一个错误。
fig, ax = plt.subplots(figsize=(10,4))
for key, df in df.groupby(['Quantity']):
ax.plot(df['Type'], df['Weight'], label=key)
ax.legend()
plt.show()
我得到的错误是
KeyError Traceback (most recent call last)
Cell In[798], line 9
7 fig, ax = plt.subplots(figsize=(10,4))
8 for key, df in df.groupby(['Quantity']):
----> 9 ax.plot(df['Type'], df['Weight'], label=key)
11 ax.legend()
...
3807 # InvalidIndexError. Otherwise we fall through and re-raise
3808 # the TypeError.
3809 self._check_indexing_error(key)
KeyError: 'Type'
谁能告诉我为什么会发生这种情况,以及用我上面分组的数据框绘制曲线的最佳方法?
1条答案
按热度按时间ogq8wdun1#
groupby后面有一个多索引,因此没有列标签“type”。您可以选择索引为“black”且yearmonth为201601的组,如下所示,然后绘图:对于使用不同符号和标记颜色的不同类型可以进行相同的操作。