【有书共读05】python编程--从入门到实践16
分析csv文件
csv文件格式:数据是以一系列逗号分隔(,)的文件
highs_lows.py
#coding:utf-8
import csv
from datetime import datetime
from matplotlib import pyplot as plt
# 从csv文件中获取最高温和最低温的记录.
filename = 'death_valley_2014.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
dates, highs, lows = [], [], []
for row in reader:
try:
current_date = datetime.strptime(row[0], "%Y-%m-%d")
high = int(row[1])
low = int(row[3])
except ValueError:
print(current_date, 'missing data')
else:
dates.append(current_date)
highs.append(high)
lows.append(low)
# 根据数据绘制图形.
fig = plt.figure(dpi=128, figsize=(10, 6))
plt.plot(dates, highs, c='red', alpha=0.5)
plt.plot(dates, lows, c='blue', alpha=0.5)
plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)
#设置图形的格式.
title = "Daily high and low temperatures - 2014\nDeath Valley, CA"
plt.title(title, fontsize=20)
plt.xlabel('', fontsize=16)
fig.autofmt_xdate()
plt.ylabel("Temperature (F)", fontsize=16)
plt.tick_params(axis='both', which='major', labelsize=16)
plt.show()
1、导入csv模块后,将要使用的文件的名称存储在filename中。接下来,我们打开这个文件,并将结果文件对象存储在f中。然后,我们调用csv.reader(),并将前面存储的文件对象作为实参传递给它,从而创建一个与该文件向关联的阅读器(reader)对象。
2、模块csv包含函数next(),调用它并将阅读器对象传递给它时,它将返回文件中的下一行。
3、我们对列表调用了enumerate()来获取每个元素的索引和其值。
4、我们创建了一个名为highs的列表,再遍历文件中余下的各行。阅读器从其停留的地方继续往下读取csv文件,每次都自动返回当前所处位置的下一行。
5、我们将最高气温列表传递给polt(),并传递 c = 'red' 以便将数据点绘制成红色(红色代表最高气温,蓝色代表最低气温)。
6、最低气温的操作也如同4和5大致相同。
7、在图表中添加日期,使其更有用。首先导入模块datetime中的datetime类,然后调用方法strptime(),并将包含所需日期的字符串作为第一个参数。第二个参数告诉python如何设置日期的格式。
8、按照前面讲过的图表绘制方法即可绘制