Python/Pandas数据框架中的频率图

2024-06-25 22:41:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个解析过的非常大的数据帧,其中包含一些值,如下面的值和几列:

Name Age Points ...
XYZ  42  32pts  ...
ABC  41  32pts  ...
DEF  32  35pts
GHI  52  35pts
JHK  72  35pts
MNU  43  42pts
LKT  32  32pts
LKI  42  42pts
JHI  42  35pts
JHP  42  42pts
XXX  42  42pts
XYY  42  35pts

我已经导入了numpy和matplotlib。

我需要绘制一个图表,显示“Points”列中的值出现的次数。我不需要为密谋准备任何箱子。因此,在一个大的数据集上看到相同的分数出现多少次更像是一个图。

所以基本上条形图(或者柱状图,如果你可以称之为柱状图)应该显示32个点出现了3次,35个点出现了5次,42个点出现了4次。如果我能按顺序绘制这些值,就更好了。我试过df.hist(),但它对我不起作用。 有线索吗?谢谢。


Tags: 数据nameagedef绘制pointsabcxyz
2条回答

直接绘制dataframe的value_count方法的结果:

import matplotlib.pyplot as plt
import pandas

data = load_my_data()
fig, ax = plt.subplots()
data['Points'].value_counts().plot(ax=ax, kind='bar')

如果要从列中的所有元素中删除字符串“pnts”,可以执行以下操作:

df['points_int'] = df['Points'].str.replace('pnts', '').astype(int)

假设它们都以“pnt”结尾。如果它在每行之间变化,则需要查看如下正则表达式: Split columns using pandas

官方文件:http://pandas.pydata.org/pandas-docs/stable/text.html#text-string-methods

Seaborn软件包具有countplot功能,可以利用它制作频率图。

导入seaborn作为sns ax=sns.countplot(x=“点”,data=df)

相关问题 更多 >