[英]Pandas - seaborn lineplot hue unexpected legend
我有一个包含客户名称、日期和交易的数据框。 我不确定我的错误有多远,所以这是我所做的所有预处理:
data = pd.read_excel('Test.xls')
## convert to datetime object
data['Date Order'] = pd.to_datetime(data['Date Order'], format = '%d.%m.%Y')
## add columns for month and year of each row for easier analysis later
data['month'] = data['Date Order'].dt.month
data['year'] = data['Date Order'].dt.year
所以数据框变成了这样:
Date Order NameCustomers SumOrder month year
2019-01-02 00:00:00 Customer 1 290 1 2019
2019-02-02 00:00:00 Customer 1 50 2 2019
-----
2020-06-28 00:00:00 Customer 2 900 6 2020
------
..等等。 你明白了。 接下来我按月份和年份分组并计算平均值。
groupedMonthYearMean = data.groupby(['month', 'year'])['SumOrder'].mean().reset_index()
输出:
month year SumOrder
1 2019 233.08
1 2020 303.40
2 2019 255.34
2 2020 842.24
--------------------------
我使用生成的数据框制作一个线图,它跟踪每个月的 SumOrder,并为每年显示它。
linechart = sns.lineplot(x = 'month',
y = 'SumOrder',
hue = 'year',
data = groupedMonthYearMean).set_title('Mean Sum Order by month')
plt.show()
我附上了结果图的屏幕截图 - 总的来说,它似乎显示了我期望创建的内容。 在我的整个数据中,'year' 列只有两个值:2019 和 2020。出于某种原因,无论我做什么,它们都显示为 0、-1 和 -2。 任何想法发生了什么?
您想将 year 列的 dtype 从 int 更改为 category
df['year'] = df['year'].astype('category')
这是由于 Hue 如何处理整数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.