目录
第二部分 项目-数据可视化
第十六章 下载数据
读取CSV数据的头行信息
import csv
filename = '../data/csv_sitka_weather_07-2014.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
print(header_row)
输出信息:
['AKDT', 'Max TemperatureF', 'Mean TemperatureF', 'Min TemperatureF', 'Max Dew PointF', 'MeanDew PointF', 'Min DewpointF', 'Max Humidity', ' Mean Humidity', ' Min Humidity', ' Max Sea Level PressureIn', ' Mean Sea Level PressureIn', ' Min Sea Level PressureIn', ' Max VisibilityMiles', ' Mean VisibilityMiles', ' Min VisibilityMiles', ' Max Wind SpeedMPH', ' Mean Wind SpeedMPH', ' Max Gust SpeedMPH', 'PrecipitationIn', ' CloudCover', ' Events', ' WindDirDegrees']
发现idea也有不好的时候比如for关键字不如sublime提示的多,估计还得自己配模板。
提取数据-折线图
import csv
from matplotlib import pyplot as plt
filename = '../data/csv_sitka_weather_07-2014.csv'
hights = []
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader) # 读取头信息
print(header_row)
for row in reader:
hights.append(row[1]) # 取高温信息
print(hights) # 打印所有的高温信息
plt.figure(dpi=128, figsize=(10, 6))
plt.plot(hights, c='red')
plt.title('Daily high temperatures, July 2014', fontsize=24)
plt.xlabel('', fontsize=14)
plt.ylabel('Temperature (F)', fontsize=14)
plt.tick_params(axis='both', which='major', labelsize=14)
plt.show()
输出效果:
日期测试
import csv
from matplotlib import pyplot as plt
from datetime import datetime
filename = '../data/csv_sitka_weather_07-2014.csv'
hights, dates = [], []
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader) # 读取头信息
print(header_row)
for row in reader:
dates.append(datetime.strptime(row[0], "%Y-%m-%d")) # 日期函数格式化日期信息
hights.append(row[1]) # 取高温信息
print(hights) # 打印所有的高温信息
print(dates)
fig = plt.figure(dpi=128, figsize=(10, 6))
plt.plot(dates, hights, c='red')
plt.title('Daily high temperatures, July 2014', fontsize=24)
plt.xlabel('', fontsize=14)
plt.ylabel('Temperature (F)', fontsize=14)
plt.tick_params(axis='both', which='major', labelsize=14)
fig.autofmt_xdate() # 斜的日期标签
plt.show()
# 枚举输出每个表头信息
for index, header_column in enumerate(header_row):
print(index, header_column)
输出结果:
增加多个折线和中间填色(多个折线图)
import csv
from matplotlib import pyplot as plt
from datetime import datetime
filename = '../data/csv_sitka_weather_2014.csv'
hights, lows, dates = [], [], []
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader) # 读取头信息
print(header_row)
for row in reader:
dates.append(datetime.strptime(row[0], "%Y-%m-%d")) # 日期函数格式化日期信息
hights.append(int(row[1])) # 取高温信息,注意如果不转换 int,数轴可能乱序值
lows.append(int(row[3]))
print(hights) # 打印所有的高温信息
fig = plt.figure(dpi=128, figsize=(10, 6))
plt.plot(dates, hights, c='red')
plt.plot(dates, lows, c='blue') # 增加一个低值得曲线
plt.title('Daily high temperatures, July 2014', fontsize=24)
plt.xlabel('', fontsize=14)
plt.ylabel('Temperature (F)', fontsize=14)
plt.tick_params(axis='both', which='major', labelsize=14)
fig.autofmt_xdate() # 斜的日期标签
plt.fill_between(dates, hights, lows, facecolor='blue', alpha=0.1) # 两个曲线之间涂颜色
plt.show()
# 枚举输出每个表头信息
for index, header_column in enumerate(header_row):
print(index, header_column)
输出效果: