我目前正在学习Python速成课程,第16章中的一项任务是使我的部分代码能够通过csv并读取各个位置的高温和低温。示例代码为python提供了索引TMAX
和TMIN
,但它们在每个csv中都是不同的索引
“自己尝试”部分说编辑代码,以便它可以在不指定索引的情况下读取csv
import csv
import matplotlib.pyplot as plt
from datetime import datetime
filename = 'data/death_valley_2018_simple.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
dates, highs, lows = [], [], []
for row in reader:
current_date = datetime.strptime(row[2], '%Y-%m-%d')
try:
high = int(row[4])
low = int(row[5])
except ValueError:
print(f"Missing data for {current_date}")
else:
dates.append(current_date)
highs.append(high)
lows.append(low)
# Plot the high and low temps.
plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.plot(dates, highs, c='red', alpha=0.5)
ax.plot(dates, lows, c='blue', alpha=0.5)
ax.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)
ax.axis([17520, 17911, 20, 130])
# Format plot.
title = "Daily high and low temps - 2018\nDeath Valley, CA"
ax.set_title(title, fontsize=20)
ax.set_xlabel('', fontsize=16)
fig.autofmt_xdate()
ax.set_ylabel("Temperature (F)", fontsize=16)
ax.tick_params(axis='both', which='major', labelsize=16)
plt.show()
您可以看到high = int(row[4])
,它在csv文件中是TMAX
,我如何告诉python使用"TMAX"
和"TMIN"
查找索引,同时循环行,获取字符串并将其从该索引转换为整数,从而允许该程序通过搜索标题并使用该标题的索引自行查找索引。我尝试了variable.index("TMAX")
,结果返回4,而图表没有从csv打印出数据。我尝试了其他各种方法,试图告诉python只使用索引中的数据,而不给出索引号
"STATION","NAME","DATE","PRCP","TMAX","TMIN","TOBS"
"USC00042319","DEATH VALLEY, CA US","2018-01-01","0.00","65","34","42"
"USC00042319","DEATH VALLEY, CA US","2018-01-02","0.00","61","38","46"
"USC00042319","DEATH VALLEY, CA US","2018-01-03","0.00","69","34","54"
"USC00042319","DEATH VALLEY, CA US","2018-01-04","0.00","69","39","48"
作为参考,另一个在不同索引位置带有TMAX
和TMIN
的csv:
"STATION","NAME","DATE","PRCP","TAVG","TMAX","TMIN"
"USW00025333","SITKA AIRPORT, AK US","2018-01-01","0.45",,"48","38"
"USW00025333","SITKA AIRPORT, AK US","2018-01-02","0.56",,"48","43"
"USW00025333","SITKA AIRPORT, AK US","2018-01-03","0.40",,"46","41"
"USW00025333","SITKA AIRPORT, AK US","2018-01-04","0.99",,"42","40"
"USW00025333","SITKA AIRPORT, AK US","2018-01-05","0.25",,"46","38"
"USW00025333","SITKA AIRPORT, AK US","2018-01-06","0.46",,"44","37"
variable.index("TMAX")
,结果返回4,但图形没有从csv打印出数据python 3.8.11
、matplotlib 3.4.2
相关问题 更多 >
编程相关推荐