我有一个解析得非常大的数据框,其中包含一些像这样的值和几列:
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。
我需要绘制“点”列中的值出现次数的图表。我不需要为绘图设置任何箱子。因此,更多的情节是查看在大型数据集上出现相同分数的次数。
所以基本上条形图(或直方图,如果你可以称之为)应该显示32次出现三次,35次出现5次,42次出现4次。如果我可以按排序顺序绘制值,那就更好了。我试过df.hist()但它对我不起作用。 有线索吗?感谢。
答案 0 :(得分:19)
直接绘制数据框的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)
这假设他们都以'pnts'结尾。如果它从一行到另一行变化,你需要查看这样的正则表达式: Split columns using pandas
官方文档:http://pandas.pydata.org/pandas-docs/stable/text.html#text-string-methods
答案 1 :(得分:0)
Seaborn软件包具有计数图功能,可用于制作频率图。
将seaborn导入为sns ax = sns.countplot(x =“ Points”,data = df)