使用pandas从CSV文件中绘制列中出现的频率

时间:2018-06-15 22:03:37

标签: python pandas plot unique frequency

所以我试图以CSV文件的形式从提供的数据集中绘制国家/地区的鲨鱼攻击数量。我对Python和Pandas以及Matplotlib库相对较新,我相信语法有困难。

目前我遇到了错误:

  

AttributeError:' NoneType'对象没有属性'更新'

这是我的代码:

import pandas as pd
import matplotlib.pyplot as plt; plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt

#read in csv file
df = pd.read_csv('SharkAttack.csv',delimiter=",", encoding='cp1252', header=0)

#Correct Missing Country Names
df.loc[df['Area'].str.contains('Florida', na=False), 'Country'] = 'USA'

#correct Missing Values
df.fillna("NaN")



x = df['Country'].unique().tolist()


y = df['Country'].nunique()


plt.bar(x, y, align='center', alpha=0.5)

plt.ylabel('Number Of Attacks')
plt.xlabel("Country")
plt.title('Shark Attacks by Country')

plt.show()

知道如何解决这个问题吗?当列表中的唯一项目数量足够小到硬编码时,IT就足以创建一个数组,但文件中有大量国家/地区。

2 个答案:

答案 0 :(得分:0)

您可以使用df本身创建一个情节:

df['Country'].value_counts().plot(kind='bar')

答案 1 :(得分:0)

对我来说,上面的代码适用于笔记本。 我已将此文件用作输入 https://github.com/ibmw/Shark-Attack/blob/master/shark_attack.csv