求大佬指点迷津
import csvfrom datetime import datetime
from matplotlib import pyplot as plt
# 从文件中获取日期和最高温度
filename = 'sitka_weather_2018_full.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
# 创建日期和最高气温的空列表
dates, highs = [], []
for row in reader:
# 调用时间函数,并将其转化为年月日形式
current_date = datetime.strptime(row, "%Y-%m-%d")
dates.append(current_date)
high = int(row)
highs.append(high)
# 根据数据绘制图像
fig = plt.figure(dpi=128, figsize=(8, 6))
plt.plot(dates, highs, c='red')
# 设置图形的格式
plt.title("Daily high temperatures-2018", fontsize =18)
plt.xlabel('', fontsize=14)
fig.autofmt_xdate()
plt.ylabel('Temperature (F)', fontsize=16)
plt.tick_params(axis='both',which='major',labelsize=16)
plt.show()
该程序运行时候会提示:
File "D:\soft\lib\_strptime.py", line 359, in _strptime
(data_string, format))
ValueError: time data '2018/1/1' does not match format '%Y-%m-%d'
不知道到底错在哪里了,调试不出来,请各路大神指教
本帖最后由 jackz007 于 2019-10-23 12:16 编辑
current_date = datetime.strptime(row, "%Y-%m-%d")
数据格式不匹配,这条语句要求的日期格式是 Y-M-D,可是,实际提供的却是 Y/M/D 的格式,所以才会出错。 import csv
from datetime import datetime
from matplotlib import pyplot as plt
# 从文件中获取日期和最高温度
filename = 'sitka_weather_2018_full.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
# 创建日期和最高气温的空列表
dates, highs = [], []
for row in reader:
# 调用时间函数,并将其转化为年月日形式
current_date = datetime.strptime(row, "%Y/%m/%d")
dates.append(current_date)
high = int(row)
highs.append(high)
# 根据数据绘制图像
fig = plt.figure(dpi=128, figsize=(8, 6))
plt.plot(dates, highs, c='red')
# 设置图形的格式
plt.title("Daily high temperatures-2018", fontsize =18)
plt.xlabel('', fontsize=14)
fig.autofmt_xdate()
# plt.ylabel('Temperature (F)',ylabel=highs.sort(), fontsize=5)
plt.tick_params(axis='both',which='major',labelsize=5)
plt.show()
我把时间格式转过之后又报这类的错误:
high = int(row)
ValueError: invalid literal for int() with base 10: ''
求指点
页:
[1]