我有一个包含多种文件类型(.svg、.png、csv 等)的数据框。还有一些文件没有扩展名。如何在没有扩展名的情况下对这些文件进行分组并制作这样的饼图?import pandas as pddf = pd.DataFrame({'file_name': ['filelist.xml', 'sheet002', 'sheet005.htm', 'image1.jpg', 'image3.jpg', 'kings.xls', 'Kings.png', 'Kings', 'Riders', 'Royals.pdf', 'Royals.csv', 'Riders.xml'], 'created_at': ['2020-01-01 23:00:34'] *2 + ['2018-01-01 13:01:34'] *3 + ['2020-01-01 22:00:00'] *4 + ['2018-02-01 23:00:34']*3, 'size':[8760] * 3 + [789] *4 + [863] *2 + [673] *3})df_unknown=df[df['file_name'].apply(lambda x: len(x.rsplit('.', 1))) < 2]编辑我有很多价值观。饼图无法显示全部。
2 回答
烙印99
TA贡献1829条经验 获得超13个赞
您可以使用where
将不包含 a 的那些值设置.
为未知,并从中绘制饼图value_counts
:
(df.file_name.where(df.file_name.str.contains(r'\.'), 'unknown') .str.split('.').str[-1] .value_counts() .plot.pie())
或者另一种方法是使用str.extract
and fillna
:
(df.file_name.str.extract(r'(\.\w+$)', expand=False) .fillna('unknown') .value_counts() .plot.pie())
更新
要获得sum
每组的尺寸图表:
(df['size'].groupby(df.file_name.str.extract(r'(\.\w+$)', expand=False) .fillna('unknown')) .sum().plot.pie())
翻阅古今
TA贡献1780条经验 获得超5个赞
尝试:os.path.splitext
_GroupBy.sum
import os
(df['size'].groupby(df['file_name'].map(os.path.splitext)
.str[-1]
.replace({'': 'unknown'}))
.sum())
file_name
.csv 673
.htm 8760
.jpg 1578
.pdf 673
.png 789
.xls 789
.xml 9433
unknown 10486
Name: size, dtype: int64
从这里开始,绘图应该很简单:
_.plot.pie()
plt.show()
添加回答
举报
0/150
提交
取消