【发布时间】:2018-11-06 22:11:04
【问题描述】:
我需要显示 csv 文件的特定属性的直方图。当我绘制数值时我没有问题,但是当我使用字符串值时程序崩溃。 现在我正在使用 iris 数据集进行测试,当我选择“物种”列时程序崩溃。错误是:
Traceback (most recent call last):
File "C:\Users\Enrico\PycharmProjects\PythonDataset\Plot_hist.py", line 31,
in <lambda> self.pushButton.clicked.connect(lambda:
self.plotHistogram(fileName))
File "C:\Users\Enrico\PycharmProjects\PythonDataset\Plot_hist.py", line 50,
in plotHistogram data_file[attribute].plot(kind='hist')
File "C:\Python36\lib\site-packages\pandas\plotting\_core.py", line 2741, in
__call__ **kwds)
File "C:\Python36\lib\site-packages\pandas\plotting\_core.py", line 2002, in
plot_series **kwds)
File "C:\Python36\lib\site-packages\pandas\plotting\_core.py", line 1804, in
_plot plot_obj.generate()
File "C:\Python36\lib\site-packages\pandas\plotting\_core.py", line 258, in
generate self._compute_plot_data()
File "C:\Python36\lib\site-packages\pandas\plotting\_core.py", line 373, in
_compute_plot_data 'plot'.format(numeric_data.__class__.__name__))
TypeError: Empty 'DataFrame': no numeric data to plot
我的代码是这样的:
import matplotlib.pyplot as plt
import pandas as pd
def plotHistogram(self, file):
attribute = str(self.comboBox.currentText())
data_file = pd.read_csv(file)
data_file[attribute].plot(kind='hist')
plt.ylabel('Frequency')
plt.xlabel(attribute)
plt.title("File")
plt.show()
attribute是列名,file是csv文件。
注意:
如果我将data_file[attribute].plot(kind='hist') 更改为data_file[attribute].hist()
该程序没有崩溃,但经过很长时间它会绘制一个奇怪的直方图。
编辑: 我必须显示具有 20 到 30 个属性和一千多行的 csv 文件的实验室分析值的直方图。 我需要显示单独取的每个属性的值的直方图,但是值可以是数字数据或字符串。 在 x 轴上,我必须有从最小值到最大值的值的刻度,在 y 轴上的频率,如本例所示:enter link description here
【问题讨论】:
标签: python python-3.x pandas matplotlib