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画了。

最后,就是一定要注意数据是否有异常,有些异常数据是文本上的异常,而有些可能是语义上的异常,这都需要我们去挖掘,去除异常数据。这往往是很重要的,当然画图往往又是比较直观的方式之一。

 

posted on 2018-08-30 17:26  greathuman  阅读(9964)  评论(0编辑  收藏  举报