旧城1003 发表于 2019-10-23 11:49:06

求大佬指点迷津

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)', 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:14:45

本帖最后由 jackz007 于 2019-10-23 12:16 编辑

current_date = datetime.strptime(row, "%Y-%m-%d")
数据格式不匹配,这条语句要求的日期格式是 Y-M-D,可是,实际提供的却是 Y/M/D 的格式,所以才会出错。

旧城1003 发表于 2019-10-23 18:13:26

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]
查看完整版本: 求大佬指点迷津