我知道这篇文章无法复制,因为数据是我在本地读取的CSV格式,但是如果有用,我可以将数据发布到github帐户。我试图先找到相关性:
ng = pd.read_csv('C:/Users/me/Desktop/ngDataBaseline.csv', index_col='Date', parse_dates=True)
ng.head()
这将返回两列:
HDD Therm
Date
2011-05-01 347 3,506
2011-06-01 74 1,237
2011-07-01 0 139
2011-08-01 0 35
2011-09-01 154 170
但是,如果我这样做:
ng['HDD'].corr(ng['Therm'])
我收到关于unsupported operand type(s) for /: 'str' and 'int'
的错误
对我来说这没有意义,因为我认为这全都是熊猫系列。
如果我执行print(type(ng['HDD']))
,Ipython将输出<class 'pandas.core.series.Series'>
与print(type(ng['Therm']))
一样,为什么我不能关联数据?
答案 0 :(得分:4)
问题在于,由于逗号的原因,Therm
列被读取为字符串。幸运的是,read_csv
有一个decimal
参数可以解决这个问题。使用:
ng = pd.read_csv('C:/Users/me/Desktop/ngDataBaseline.csv', decimal=',', index_col='Date', parse_dates=True)
>>> ng
Date HDD Therm
0 2011-05-01 347 3.506
1 2011-06-01 74 1.237
2 2011-07-01 0 139.000
3 2011-08-01 0 35.000
4 2011-09-01 154 170.000
然后,您的corr
可以工作:
>>> ng['HDD'].corr(ng['Therm'])
-0.275450033528333
如果逗号是千位分隔符,请使用参数thousands
:
ng = pd.read_csv('C:/Users/me/Desktop/ngDataBaseline.csv', thousands=',', index_col='Date', parse_dates=True)
>>> ng
Date HDD Therm
0 2011-05-01 347 3506
1 2011-06-01 74 1237
2 2011-07-01 0 139
3 2011-08-01 0 35
4 2011-09-01 154 170
>>> ng['HDD'].corr(ng['Therm'])
0.8794452911190037