我有一個數據框,我想繪制一個折線圖來及時顯示每個文件的大小。目前我只是在繪制 1 行。但是我怎樣才能繪制所有文件呢?我想我必須修改數據框的形狀。import pandas as pddf = pd.DataFrame({ 'file_type': ['file'] * 1 + ['file.png'] * 1 + ['file.PNG'] * 1 + ['file.csv'] * 2, 'size': [11] * 5, 'created_at': ['2020-01-01 23:00:34'] *1 + ['2020-02-01 23:00:34'] * 2 + ['2020-03-01 23:00:34']*1 + ['2019-01-02 23:00:34']})df['created_at'] = pd.to_datetime(df['created_at']).dt.normalize()group1= df['file_type'].str.lower().str.extract(r'(\.\w+$)', expand=False).fillna('unknown')group2 = df['created_at'].dt.strftime('%Y-%m')df.groupby([group1, group2])['size'].sum().reset_index()import matplotlib.pyplot as pltimport seaborn as sns# Use seaborn style defaults and set the default figure sizesns.set(rc={'figure.figsize':(20, 4)})df['size'].plot(linewidth=0.5);
2 回答

千巷貓影
TA貢獻1829條經驗 獲得超7個贊
您可以seaborn.lineplot使用hue:
import seaborn as sns
sns.lineplot(data=df, x='created_at', y='size', hue='file_name')
要為每種文件類型設置多行,請執行以下操作:
# do not reset index but unstack:
(df.groupby([group1, group2])['size'].sum()
.unstack(level=0).plot(subplots=True)
)

慕工程0101907
TA貢獻1887條經驗 獲得超5個贊
你可以像這樣簡單地做到這一點sns.lineplot()
:
import seaborn as sns
sns.set(style='darkgrid')
sns.lineplot(x='created_at', y='size', data=df)
添加回答
舉報
0/150
提交
取消