学习数据处理的目的就是为了让机器自己读取试验测得的数据,然后以直观的图表的形式呈现出来,之前在学习 《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)

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 为阿拉斯加时间

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)
这正是我们需要的数据,但是仅仅如此还是不够,因为现在的数据 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)
这样出来的数据就没有上下引号,可以直接读取了,我们来试一下:

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()
图片就暂时补贴出来了,教材上都有。
接下来就是我遇见问题的一部分,关于 datetime 模块的导入,如果 pycharm 不行的话,建议使用 Ipython 试试,有时候不是你的错误哦。

1 from datetime import datetime 2 3 first_date = datetime.strptime('2014-7-1', '%Y-%m-%d') 4 print(first_date)
如果跑出来的结果是 2014-07-01 00:00:00 ,而不是提示错误,那么恭喜,可以进行下一步的学习了。