如何使用 python 按文件类型绘制折线图?

我有一个数据框,我想绘制一个折线图来及时显示每个文件的大小。目前我只是在绘制 1 行。但是我怎样才能绘制所有文件呢?我想我必须修改数据框的形状。


import pandas as pd


df = 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 plt

import seaborn as sns


# Use seaborn style defaults and set the default figure size

sns.set(rc={'figure.figsize':(20, 4)})

df['size'].plot(linewidth=0.5);

http://img1.mukewang.com/63b4e2bf0001baad03380464.jpg

http://img2.mukewang.com/63b4e2ca00018e2d14480330.jpg

翻阅古今
浏览 158回答 2
2回答

千巷猫影

您可以seaborn.lineplot使用hue:import seaborn as snssns.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

你可以像这样简单地做到这一点sns.lineplot():import seaborn as snssns.set(style='darkgrid')sns.lineplot(x='created_at', y='size', data=df)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python