pandas 读csv文件 TypeError: Empty 'DataFrame': no numeric data to plot
简单的代码,利用pandas模块读csv数据文件,这里有两种方式,一种是被新版本pandas遗弃的Series.from_csv;另一种就是pandas.read_csv
先说一下问题这个问题就是在读csv文件时,默认的数据是object类型,因而没有字符型数据可被plot,此时仅需要转换一下类型即可,如下:
from pandas import Series import matplotlib.pyplot as plt data = Series.from_csv('daily.csv',header=0) #print(data.head()) data.astype(float) data.plot() plt.show()
完美解决这个问题,画出了下图:
这正是想要的结果,那么另一种就是pandas.read_csv,就没有那么幸运了,你会发现csv里面存的这种数据:
1981/1/1,20.7 1981/1/2,17.9 1981/1/3,18.8 1981/1/4,14.6 1981/1/5,15.8 1981/1/6,15.8 1981/1/7,15.8 1981/1/8,17.4 1981/1/9,21.8 1981/1/10,20 1981/1/11,16.2 1981/1/12,13.3 1981/1/13,16.7 1981/1/14,21.5
是不能显示为x轴label的,于是我就把第一列改成了1981....这样的数字,解决问题。这时候当然就不推荐使用第二种方法了,这么麻烦还用什么pandas,直接plt画了。
最后,就是一定要注意数据是否有异常,有些异常数据是文本上的异常,而有些可能是语义上的异常,这都需要我们去挖掘,去除异常数据。这往往是很重要的,当然画图往往又是比较直观的方式之一。
我们都在通往真理的路上。