问题描述
我正在使用以下代码在 x轴和 Final_Sales 中获得 Segment 和 Year y轴,但这会抛出一个错误。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
%matplotlib inline
order = pd.read_excel("Sample.xls",sheet_name = "Orders")
order["Year"] = pd.DatetimeIndex(order["Order Date"]).year
result = order.groupby(["Year","Segment"]).agg(Final_Sales=("Sales",sum)).reset_index()
bar = plt.bar(x = result["Segment","Year"],height = result["Final_Sales"])
必需的输出
解决方法
尝试添加另一对括号-result[["Segment","Year"]]
,
您尝试做的是检索名为-“细分”,“年份”,
但是实际上,您要尝试的是检索列的列表-[“ Segment”,“ Year”]。
您的代码有几个问题:
- 使用多个列为数据框建立索引时,您希望将列列表传递给
[]
(请参见docs),如下所示:
result[["Segment","Year"]]
- 从您提供的图中看来,您想要将year用作 hue 。
matplotlib.barplot
没有色相参数,您必须按照here所述手动进行构建。相反,您可以使用已经导入的seaborn
库(请参见https://seaborn.pydata.org/generated/seaborn.barplot.html):
sns.barplot(x = 'Segment',y = 'Final_Sales',hue = 'Year',data = result)