CSV文件的读取和展示


  学习数据处理的目的就是为了让机器自己读取试验测得的数据,然后以直观的图表的形式呈现出来,之前在学习 《python数据处理》 一书时,我了解到python最容易读取的文件格式就是 CSV格式,因为这是一个纯数据文本的文件,而 xls 、xml  和 pdf 这些的读取相对较为麻烦,由于《python数据处理》 一书是基于python 2.7 编写的,而python 2.X 的版本在2020年之后就会停止支持,所以我入手的就是 python 3.6,因此在学习过程中碰见不少麻烦,转而放弃了对《python数据处理》 一书的学习,但是对于初学者来说这绝对是一本好书,而且读完这本书之后还可以学习《用python进行数据分析》。

  在本书的学习过程中,我也碰见了一些不可预知的问题,比如说 导入模块 datetime 时 ,我使用 pip3 安装成功后,在 pycharm 和 jupyter notebook中居然说无法导入,而在 ipython notebook 中居然没有报错,还呈现了预知的答案,按道理来说 jupyter 来自于 ipython ,如果 pycharm 是我设置环境的问题(但是我导入的就是 conda 环境),那么 jupyter 就不可能出现这种问题,因为 jupyter 和 ipython 都是使用 Anaconda 直接安装的,这个问题我研究了一个晚上也没有能够解决,所以放弃了。在学习过程中我不断地在这三个编辑器之间切换,因为 notebook 最大的优势在于 可以在一个页面中存储多个代码,然后分别运行, pycharm 有不错的自动补全和舒服的编辑界面,而且总会遇见一些问题,有的成功解决了,有的无奈放弃了。

  现在我们开始这章内容的学习与记录,其中的文件可在本书的配套资源( https://www.nostarch.com/pythoncrashcourse/ )中找到,同时我们可以从(http://www.wunderground.com/history/)获取各种天气数据:

  首先是读取文件的标题:

1 # -*- coding:utf-8 -*-
2 
3 import csv
4 
5 filename = 'sitka_weather_07-2014.csv'
6 with open(filename) as f:
7     reader = csv.reader(f)
8     header_row = next(reader)
9     print(header_row)
Head_row
 1 # 打印文件头及其位置
 2 import csv
 3 
 4 filename = 'sitka_weather_07-2014.csv'
 5 with open(filename) as f:
 6     reader = csv.reader(f)
 7     header_row = next(reader)
 8 
 9     for index, column_header in enumerate(header_row):
10         print(index, column_header)
11 
12 # AKDT 为阿拉斯加时间
index
 1 # 读取每天的最高温度
 2 import csv
 3 
 4 filename = 'sitka_weather_07-2014.csv'
 5 with open(filename) as f:
 6     reader = csv.reader(f)
 7     header_row = next(reader)
 8 
 9     highs = []
10     for row in reader:
11         highs.append(row[1])
12 
13     print(highs)
Highs

  这正是我们需要的数据,但是仅仅如此还是不够,因为现在的数据 matplotlib 并不能够直接读取,怎么办呢? 用 int() 就能够解决啦。

 1 # int()将这些字符串转换为数字,让 matplotlib 能够读取它们
 2 import csv
 3 
 4 filename = 'sitka_weather_07-2014.csv'
 5 with open(filename) as f:
 6     reader = csv.reader(f)
 7     header_row = next(reader)
 8 
 9     highs = []
10     for row in reader:
11         high = int(row[1])
12         highs.append(high)
13 
14     print(highs)
Int

  这样出来的数据就没有上下引号,可以直接读取了,我们来试一下:

 1 import csv
 2 from matplotlib import pyplot as plt
 3 
 4 # 从文件中获取最高气温
 5 
 6 filename = 'sitka_weather_07-2014.csv'
 7 with open(filename) as f:
 8     reader = csv.reader(f)
 9     header_row = next(reader)
10 
11     highs = []
12     for row in reader:
13         high = int(row[1])
14         highs.append(high)
15 
16 # 根据数据绘制图形
17 fig = plt.figure(dpi=128, figsize=(10, 6))
18 plt.plot(highs, c='red')
19 
20 # 设置图形的格式
21 plt.title('Daily high temperatures, July 2014', fontsize=24)
22 plt.xlabel('', fontsize=16)
23 plt.ylabel('Temperature (F)', fontsize=16)
24 plt.tick_params(axis='both', which='major', labelsize=16)
25 
26 plt.show()
Show01

  图片就暂时补贴出来了,教材上都有。

  接下来就是我遇见问题的一部分,关于 datetime 模块的导入,如果 pycharm 不行的话,建议使用 Ipython 试试,有时候不是你的错误哦。

1 from datetime import datetime
2 
3 first_date = datetime.strptime('2014-7-1', '%Y-%m-%d')
4 print(first_date)
Datetime

  如果跑出来的结果是  2014-07-01 00:00:00 ,而不是提示错误,那么恭喜,可以进行下一步的学习了。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM