WeHelp
如何處理 Pandas DataFrame ( 1/3 )
2022-09-08 23:18:04
最近在工作上接到一個看似簡單的任務,但是真要執行時才發現…..天阿!!怎麼有這麼多不同的方式去存取數據。 今天我將簡單介紹~如何簡單的使用Python(pandas) 快速過濾你所需要的數據,並取代傳統用Excel filter 的手動功能。 ___ # 基本要求 1. 已安裝Python3 和 pandas 模組,或是可以使用其他軟件(Google Colab, Jupyter Notebook etc.)。 2. 已知道Python的基本操作(例如:如何宣告一個變數,並且給予一個值 等等) 。 # 將說明以下 Pandas 基本觀念&操作 - 什麼是 Pandas DataFrame ? - 如何安裝&引入 Pandas - 如何讀取 DataFrame 數據 - 如何篩選 DataFrame 數據 ### 什麼是 Pandas DataFrame > Pandas DataFrame 是一種二維數據結構,如二維數組或具有行和列的表。簡單來說我們在Excel 內看到的表格就是一種 Pandas DataFrame (如下圖)。 ![image](wehelp-storage://d537a19150e9bb5ae859aeddd4635a5e) ### 如何安裝&引入Pandas 安裝程序非常的簡單輕鬆,只需輸入下列的代碼即可安裝pandas ``` $ pip install pandas ``` 安裝完成後,引入模組也只需一行代碼(如下) ``` import pandas as pd ``` 在 `as` 後面的 `pd` 是作為`pandas`作為一種簡寫,所以你可以將`pd`改成任何你想要的簡稱 但是引入的代碼,一般來說,都需要被放置在所有代碼的最頂部(如下圖代碼)。 ``` import pandas as pd df = pd.read_csv("file_name.csv") ``` ### 如何讀取 DataFrame 數據 > 對於如何將 Excel 檔案運用Python讀取,有幾中不同的方式,這邊我將用pandas 模組內的功能展示,如果你想了解不同方式讀取 Excel 檔案,可以參考這篇文章 “**Python 如何處理 CSV 格式檔案**”。 > 為了讓你可以更容易理解,我將配合使用一些圖片作為輔助說明 (下圖是 CSV 內的資料) ![image](wehelp-storage://7eed9e20b69a240fc056a1792a70da7d) 接下來我將數據載入到pandas,如下範例: ``` import pandas as pd df = pd.read_csv("file_name.csv") print(df) ``` 執行後結果 ![image](wehelp-storage://1e659f9ed03b973e6f42dd63ce3522a5) 如果你只想讀前面幾筆資料,可以使用 `head()` 這個功能,相反如果想取得最後幾筆資料,就使用 `tail()` 如下圖所示: ``` import pandas as pd df = pd.read_csv("file_name.csv") print(df.head(2)) ``` 執行後結果 ![image](wehelp-storage://4e121d79b6d562f842deb1741004e4b5) ``` import pandas as pd df = pd.read_csv("file_name.csv") print(df.tail(2)) ``` 執行後結果 ![image](wehelp-storage://ce10a963b6f54c9f9ac9cf64d74d2d00) 再來是稍微進階一些選取資料,我們可以使用括號 `[]`,並指定特定的 ”欄位名稱” 或是 “索引值” ``` import pandas as pd df = pd.read_csv("file_name.csv") print("只取得單一維度的資料,數據型別又稱:Series") print(df['ID']) print("取得單雙維度的資料,數據型別又稱:DataFrame") print(df[['ID']]) ``` ![image](wehelp-storage://f3806f2fd8c587f375e89b55666067a7) 簡單區別以上兩個數據型別,你可以觀察二維度的有欄位名稱(ID),一維度僅有資料而已 接著你可能會問,要怎麼在選定特定欄位的同時,只要其中特定幾筆資料就好? 假設,你只想要第一筆跟最後一筆資料,又或者你想要一個範圍的資料,你可以用以下的方式: ``` import pandas as pd df = pd.read_csv("file_name.csv") print("假設你只想要第一筆跟最後一筆資料,你可以用以下的方式") print(df.loc[[0,6],['ID']]) print("又或者你想要一個範圍的資料,也可以使用以下方式") print(df.loc[df[1:5]['ID']]) ``` 執行後結果 ![image](wehelp-storage://11391bf70068f2a654438ab759c4684b) ### 如何篩選 DataFrame 數據 > 來來來~哩來~這裡應該算是本篇的重點了,如何像 Excel filter 一樣去過濾資料,但是用更輕鬆的方式呢? 假設,你想知道誰會說中文,又或者 誰會說中文同時年紀又小於20,可以使用以下方式: ``` import pandas as pd df = pd.read_csv("file_name.csv") print("假設你想知道誰會說中文,你可以用以下的方式") print(df.loc[df['Languages'] == "Mandarin"]) print() print("或者會說普通話中的人,誰是年紀小於20歲,可以使用以下方式") print(df.loc[(df['Languages'] == "Mandarin") & (df['Age'] < 20)]) ``` 執行後結果 ![image](wehelp-storage://2571711e8761da2faf1731dfd16700db) 此外,有時你可能會有一個列表(list), 然後你想塞選出跟列表內的內容符合的資料你可以使用以下方式: 假設,你想找出誰會講法文或是西班牙文 ``` import pandas as pd df = pd.read_csv("file_name.csv") print("全部資料") print(df) print() languages_list = ['Spanish', 'Frence'] print("找出會說會講法文或是西班牙文的人") print(df.loc[df['Languages'].isin(languages_list)]) ``` ![image](wehelp-storage://064b58204ca95170987a975d57460bb2) 最後我們來試試看進階一點篩選方式 假設,要找出姓名內有包含 “ i ” 的人 ``` import pandas as pd df = pd.read_csv("file_name.csv") print("全部資料") print(df) print() print("姓名內包含 “i” 的人") print(df[df['Name'].str.contains('i')]) ``` ![image](wehelp-storage://6f882169eee212630eed5eaba131d743) *今天就先到這邊好了,因為沒想到寫一篇文章會這麼累人,原本想說把學到的東西整理出來就好,不知不覺已經到半夜了,所以在標題後面臨時加了 => (1/3)* 😂😂😂 ### 小總結 今天我們介紹了什麼是Dataframe, 以及如何安裝及引入,最最最重要的是,提及了 **讀取**、**篩選** 的使用方法,既然已經學會了,不如自己動手試試看吧。 在下一篇文章,我將說明如何使用 ⇒ **排序**、**修改**、**刪除** 。 如果你喜歡這篇文章 記得給個讚喔 ^ ^