【有书共读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、按照前面讲过的图表绘制方法即可绘制

#Python#
全部评论

相关推荐

11-13 10:17
门头沟学院 Java
昨天面美团,jvm,juc问的好深啊,感觉小林coding不太够喔,牛油们有没有什么推荐的八股网站嘛🕒 岗位/面试时间👥 面试题目🤔 面试感受
明天不下雨了:小林Coding:https://xiaolincoding.com/ 全栈哥:https://www.pdai.tech/ Guide哥:https://javaguide.cn/ 秀哥:https://interviewguide.cn/ 沉默王二:https://javabetter.cn/home.html 磊哥:https://www.javacn.site/interview/basic/ 小傅哥:https://bugstack.cn/ 源码哥:https://doocs.github.io/source-code-hunter/#/ 各大厂的公众号技术文章和一些经典的书籍
面试太紧张了怎么办?
点赞 评论 收藏
分享
10-21 00:37
已编辑
门头沟学院 C++
小浪_Coding:你问别人,本来就是有求于人,别人肯定没有义务免费回答你丫, 有点流量每天私信可能都十几,几十条的,大家都有工作和自己的事情, 付费也是正常的, 就像你请别人搭把手, 总得给人家买瓶水喝吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务