學習數據處理的目的就是為了讓機器自己讀取試驗測得的數據,然后以直觀的圖表的形式呈現出來,之前在學習 《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 ,而不是提示錯誤,那么恭喜,可以進行下一步的學習了。