簡體   English   中英

Pandas - seaborn lineplot 色調意想不到的傳奇

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM