我是python的新手,在尝试绘图时可能会遗漏一些细节。我试图调用一个特定的csv文件,并从文件中绘制两列。我已成功调用这些列并将无关值转换为NaN。我现在正试图在折线图中绘制列以获得时间序列。我收到一个错误,我需要转换为我试过的浮点数,但它给了我一个错误,浮动必须是一个字符串或数字。我不得不将csv文件中的值从字符串转换为列表以使不相关的值为nan,所以现在我必须将它们切换回绘图?一旦python正确读取了列,我绘制它的方式是正确的吗?
import csv
import numpy as np
import matplotlib.pylab as plt
import pandas
def getColumn(filename, column):
results = csv.reader(open(filename), dialect='excel')
return [result[column] for result in results]
time = getColumn("C:\Users\dfmcg\Documents\Thesisfiles\ALL_GPMP_O3_Met\ASIS-MA.csv",1)
time = time[1:]
ozone = getColumn("C:\Users\dfmcg\Documents\Thesis files\ALL_GPMP_O3_Met\ASIS-MA.csv",2)
ozone = list(map(int,ozone[1:]))
for i in range (0,len(ozone)):
if ozone[i] == -999:
ozone[i] = np.nan
float(ozone)
x = ozone
y = time
plt.plot(x,y)
plt.show
ABBR DATE O3 SWS VWS SWD VWD SDWD TMP RH RNF SOL
CASA-GD 07/01/2005 00 -999 -999 -999
CASA-GD 07/01/2005 01 -999 -999 -999
CASA-GD 07/01/2005 02 -999 -999 -999
CASA-GD 07/01/2005 03 -999 -999 -999
CASA-GD 07/01/2005 04 -999 -999 -999
CASA-GD 07/01/2005 05 -999 -999 -999
CASA-GD 07/01/2005 06 -999 -999 -999
CASA-GD 07/01/2005 07 -999 -999 -999
CASA-GD 07/01/2005 08 -999 -999 -999
CASA-GD 07/01/2005 09 -999 -999 -999
CASA-GD 07/01/2005 10 -999 -999 -999
CASA-GD 07/01/2005 11 -999 -999 -999
答案 0 :(得分:1)
您可以使用
查看列表元素的类型吗?print type(ozone[0])
然后你可以看到错误源自哪里
tldr评论:臭氧值是整数类型,包含的NaN值是浮点数。貌似你不能绘制两种不同的类型。这可以通过将所有内容设置为浮动来解决
[float(x) for x in ozone]