为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻阅古今 2023-01-04 10:21:12
我有一个数据框,我想绘制一个折线图来及时显示每个文件的大小。目前我只是在绘制 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)

)


查看完整回答
反对 回复 2023-01-04
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

你可以像这样简单地做到这一点sns.lineplot()

import seaborn as sns


sns.set(style='darkgrid')

sns.lineplot(x='created_at', y='size', data=df)


查看完整回答
反对 回复 2023-01-04
  • 2 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信