如何處理 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 (如下圖)。

### 如何安裝&引入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 內的資料)

接下來我將數據載入到pandas,如下範例:
```
import pandas as pd
df = pd.read_csv("file_name.csv")
print(df)
```
執行後結果

如果你只想讀前面幾筆資料,可以使用 `head()` 這個功能,相反如果想取得最後幾筆資料,就使用 `tail()` 如下圖所示:
```
import pandas as pd
df = pd.read_csv("file_name.csv")
print(df.head(2))
```
執行後結果

```
import pandas as pd
df = pd.read_csv("file_name.csv")
print(df.tail(2))
```
執行後結果

再來是稍微進階一些選取資料,我們可以使用括號 `[]`,並指定特定的 ”欄位名稱” 或是 “索引值”
```
import pandas as pd
df = pd.read_csv("file_name.csv")
print("只取得單一維度的資料,數據型別又稱:Series")
print(df['ID'])
print("取得單雙維度的資料,數據型別又稱:DataFrame")
print(df[['ID']])
```

簡單區別以上兩個數據型別,你可以觀察二維度的有欄位名稱(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']])
```
執行後結果

### 如何篩選 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)])
```
執行後結果

此外,有時你可能會有一個列表(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)])
```

最後我們來試試看進階一點篩選方式
假設,要找出姓名內有包含 “ 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')])
```

*今天就先到這邊好了,因為沒想到寫一篇文章會這麼累人,原本想說把學到的東西整理出來就好,不知不覺已經到半夜了,所以在標題後面臨時加了 => (1/3)* 😂😂😂
### 小總結
今天我們介紹了什麼是Dataframe, 以及如何安裝及引入,最最最重要的是,提及了 **讀取**、**篩選** 的使用方法,既然已經學會了,不如自己動手試試看吧。
在下一篇文章,我將說明如何使用 ⇒ **排序**、**修改**、**刪除** 。
如果你喜歡這篇文章 記得給個讚喔 ^ ^
點擊複製文章連結
X