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

时间:2015-06-07 08:52:35

标签: python csv pandas matplotlib

我有一个csv文件,其中包含两列,其中第一列是水果名称,第二列是count,我需要使用此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()

我编辑了上述程序以绘制条形图 -

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()

但是这给了我一个错误' Unhashable Type'。任何人都可以帮忙解决这个问题。

1 个答案:

答案 0 :(得分:3)

您可以使用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()

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