使用csv文件作为输入在python中绘制直方图

Nic*_*ick 3 python csv matplotlib pandas

我有一个 csv 文件,其中包含两列,其中第一列是水果名称,第二列是计数,我需要使用此 csv 作为以下代码的输入绘制直方图。我如何使它成为可能。我只需要显示前 20 个条目,其中水果名称将是 x 轴,计数将是整个 100 行 csv 文件中的 y 轴。

import matplotlib.pyplot as plt
import pandas as pd

data = pd.read_csv('data.csv', header = None ,quoting=2)

data.hist(bins=10)
plt.xlim([0,100])
plt.ylim([50,500])
plt.title("Data")
plt.xlabel("fruits")
plt.ylabel("Frequency")
plt.show()
Run Code Online (Sandbox Code Playgroud)

我编辑了上面的程序来绘制条形图 -

import matplotlib.pyplot as plt
import pandas as pd

data = pd.read_csv('data.csv', sep=',',header=None)
data.values
print data
plt.bar(data[:,0], data[:,1], color='g')
plt.ylabel('Frequency')
plt.xlabel('Words')
plt.title('Title')

plt.show()
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误“Unhashable Type”。任何人都可以帮助解决这个问题。

Ed *_*ith 5

您可以使用 的内置图pandas,尽管您需要指定第一列是索引,

import matplotlib.pyplot as plt
import pandas as pd

data = pd.read_csv('data.csv', sep=',',header=None, index_col =0)

data.plot(kind='bar')
plt.ylabel('Frequency')
plt.xlabel('Words')
plt.title('Title')

plt.show()
Run Code Online (Sandbox Code Playgroud)

如果您需要使用matplotlib,使用将数组转换为字典data.to_dict()并将数据提取到 numpy 数组或其他东西可能会更容易。