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