目錄
    Add a header to begin generating the table of contents

    新手 3/3:如何用 Google Colab 讀取/輸出檔案?從 Google Drive 存取 CSV

    新手 3/3:Google Colab 如何讀取/輸出檔案?從 Google Drive 存取 CSV
    Share on facebook
    Share on twitter
    Share on linkedin
    Share on whatsapp
    目錄
      Add a header to begin generating the table of contents

      更多精選新手系列:

      上回詳盡介紹了免安裝的網上工具 Google Colab Notebook 是新手學習 Python 的最佳選擇,有興趣了解如何使用可以點這裡

      這次,我們希望延伸 Google Colab Notebook 的功能至讀取/寫出(I/O)檔案。I/O 是 Python 重要的一環,尤其是我們使用 Python 分析數據時,更需要懂得匯入原始數據以及輸出成統計結果。

      作為 Python 新手,我們以 Google Colab Notebook 為我們的起跑點,學習 Google Colab Notebook 讀取 Google Drive 的數據吧!

      目的

      上一篇文章裡,我們透過 pandas_datareader 的 Library 讀取歷史股票價格,並輸出成 2 張漂亮而具互動性(Interactive)的圖表。

      我是廣告 ^o^

      這次,我們保留上一篇文章的框架,但作出以下改變,以學習使用 Google Colab Notebook 讀取/輸出檔案:

      • 使用一個在 Google Drive 裡的 CSV 檔案取代 pandas_datareader
      • 匯出圖表至 Google Drive

      CSV 檔

      CSV 檔是一個常見的數據檔案類型,全名是 Comma-Separated Values。CSV檔案就像一個 Excel 的試算表,只不過每一行(Row)皆由一串逗號分隔的數據組成,例如「蘋果,Apple,生果,甜,紅色」就是一行 CSV 的數據。

      CSV 檔與 Python 可謂是一拍即合,許多 Python 應用都會以讀取一個原始(Raw)的 CSV 檔案開始,並以寫出一個經過處理(Transform)的 CSV 結束。

      從 Yahoo! Finance 下載 CSV 檔案

      Yahoo! Finance 網頁,我們可以找到下載免費的股票歷史價格 CSV 檔案連結。教程開始前,請先按以下連結下載 0005.HK 的股票數據:

      您可能感興趣:yfinance 攻略!Python 下載股票價格數據無難度

      我是廣告 ^o^

      上傳到 Google Drive

      下載了 CSV 檔案後,請到 Google Drive 建立新的資料夾,並命名為「CSV 原始檔」。

      建立了資料夾後,把剛才下載的 CSV(檔案名稱是 0005.HK.csv)上傳到 Google Drive 的「CSV 原始檔」文件夾裡。

      現在我們來看看如何在 Google Colab Notebook 讀取這個檔案。

      在 Google Colab 連結 Google Drive

      from google.colab import drive
      drive.mount('/content/drive')

      現在我們開啟一個新的 Google Colab Notebook 並貼上這 2 行程式碼。按了播放鍵(Play)以後,您應該會見到以下的提示:

      我們把 Google Drive 連結到這個 Google Colab Notebook 裡,就如把一隻 USB 手指插入電腦一樣,我們可以任意更改 Google Drive 的文件。所以 Google 提醒我們是否希望這個 Google Colab Notebook 存取 Google Drive 裡的文件。記得不要 run 來歷不明的 Notebook!

      我是廣告 ^o^

      按下「Connect to Google Drive」後,會彈出一下的頁面。請選擇自己的 Google 帳戶並按「Allow」。

      成功後,會見到 Code Block 輸出「Mounted at /content/drive」的信息。在螢幕右方的 “Files”(下面的右圖),亦可以點選「drive/MyDrive/CSV 原始檔」,即可找到我們先前上傳的 0005.HK.csv!

      現在我們可以把 Google Drive 當成系統位置(System Path)使用。

      在 Google Colab 讀取 CSV

      匯入所需 Library

      開始以前,我們先匯入一些待會需要使用的 Python Library。與上次的例子唯一不同的,是我們直接匯入 pandas 而不是 pandas_datareader

      Pandas 是直接進行數據處理(Data Transformation)的基石 Library 之一。我們會以 Pandas 的 CSV 讀取功能直接存取 Google Drive 裡面的 0005.HK.csv。

      我是廣告 ^o^

      讀取 CSV

      data = pd.read_csv('/content/drive/MyDrive/CSV 原始檔/0005.HK.csv')
      print(data)

      短短的一行程式碼便能在 Google Drive 讀取到 CSV。pd.read_csv() 將會是您的 Python 編碼中非常重要的夥伴。

      由於我們先前已經將 Google Drive 的位置定義成「/content/drive」(詳見上面的編程),所以我們引用的系統位置是上圖的格式。小提示:您也可以在左面的 Files 找出檔案的位置,不用記下每個檔案的名稱。

      整合數據(月份)

      我們把 CSV 匯出前,先作一些數據的整理。Python 的 Library 使數據整理非常簡單,這也是 Python 其中一個普及的原因。

      data['Date'] = pd.to_datetime(data['Date'])
      output = data.set_index('Date').tail(255)
      output = output.groupby(pd.Grouper(freq='M'))['Adj Close'].agg(
          ['first','max','min','last','mean','median','std']
          )
      
      output.columns = ['Open','High','Low','Close','Avg','Median','SD']
      
      pd.set_option('display.max_columns', None)
      print(output)

      現在我們希望輸出一個每月的 0005.HK 報告,內容是有關對上 1 年的股價走勢,例如月份開市價(Open)、最高價(High)、最低價(Low)、收市價(Close)、平均價(Average)、中位價(Median)和標準差(Standard Deviation)。

      有興趣如何使用 pd.Groupby() 完成以上的編程可以按此,但完成以上的程式碼後,我們提取到 output 這一個變數。這個 Pandas Dataframe 會是我們匯出 CSV 的來源。

      我是廣告 ^o^

      匯出 CSV 到 Google Drive

      output.to_csv('/content/drive/MyDrive/Report_of_0005.HK.csv')

      最後一步十分簡單。我們把剛才的 output 變數(是一個 Pandas Dataframe) 以 to_csv 的方法寫成 CSV 檔案,並儲存到「/content/drive/MyDrive/」裡。

      完成後,您會見到 Google Drive 裡多了一個檔案,就是我們的「Report_of_0005.HK.csv」!其內容就是我們的月報告。

      完整範例

      如果您想下載完成的編程檔,可以在下面按一下 Open in Colab 直接在您個人的 Google Colab Notebook 運行。

      恭喜您已經完成基本的 Google Colab Notebook Python 編程訓練!希望您學到一點 Python 編程的技巧!

      接下來我們會介紹適合中高手使用的 Visual Studio Code,記得留意詳情喔。

      我是廣告 ^o^

      其他相關文章:

      人氣文章

      快讓我學更多

      small_c_popup.png
      想學習 Python 嗎?
      快來訂閱我們的電子報!