什麼是 Pandas?在資料分析中的角色
為什麼要學習 Pandas
Pandas 是在使用 Python 進行資料分析時不可或缺的函式庫。它提供了許多功能,可以有效地進行資料的前處理、轉換與分析。
在實際的資料分析工作中,我們經常需要處理大量資料,並從中提取出有用的資訊。
Pandas 能夠簡化這些資料操作流程,因此成為資料科學家與分析師必備的工具。
此外,Pandas 也可以輕鬆與 Python 的豐富生態系統整合,大幅提升資料分析的效率。
使用 Pandas 的優點
透過 Pandas,可以減少操作資料時的程式碼量,並撰寫出更具可讀性的代碼。同時,它也能夠快速處理大量資料。
Pandas 是建立在數值運算函式庫 NumPy 之上,內部實作上具有高效率的處理能力。
因此,即使是面對龐大的資料集,也能進行快速且簡潔的資料操作。
這讓開發效率提升,並能讓你更專注在分析本身。
Pandas 的安裝與環境設定
想要開始使用 Pandas,首先需要安裝它。可以使用 pip 命令簡單地完成安裝。我們也會介紹如何設定 Jupyter Notebook 等環境。
使用下列指令即可安裝 Pandas:
pip install pandas
進行資料分析時,Jupyter Notebook 是非常方便的工具。安裝後,你可以直接在網頁瀏覽器上編寫、執行程式碼,並立刻查看結果。
使用以下指令可以安裝 Jupyter Notebook:
pip install notebook
完成這些設定之後,就可以馬上開始使用 Pandas 進行資料分析了。

Pandas 基礎:Series 與 DataFrame
Series 的建立與操作
Pandas 的基礎資料結構之一是 Series,也就是一維的資料結構。可以從 list 或 NumPy 陣列輕鬆建立。我們將說明如何存取與操作元素。
Series 就像是帶有標籤的陣列,每個元素都有對應的索引。
從 list 建立 Series 可以使用 pandas.Series() 函數,如下所示:
import pandas as pd
data = [10, 20, 30, 40, 50]
s = pd.Series(data)
print(s)
你也可以指定自訂的索引值:
import pandas as pd
data = [10, 20, 30, 40, 50]
index = ['a', 'b', 'c', 'd', 'e']
s = pd.Series(data, index=index)
print(s)
若要存取 Series 中的元素,可以指定索引:
print(s[‘a’])
此外,也可以像 NumPy 陣列一樣進行切片操作:
print(s[‘b’:’d’])
DataFrame 的建立與操作
DataFrame 是二維的資料結構,適合用來處理表格形式的資料。我們將說明如何從 CSV 檔讀取資料,或是從字典建立 DataFrame。
DataFrame 由列與欄組成,每個欄位可以包含不同的資料型態。
要從字典建立 DataFrame,可以使用 pandas.DataFrame() 函數,如下所示:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 28],
'city': ['Tokyo', 'Osaka', 'Kyoto']}
df = pd.DataFrame(data)
print(df)
若要從 CSV 檔讀取資料,可以使用 pandas.read_csv():
import pandas as pd
df = pd.read_csv('data.csv')
print(df)
要存取 DataFrame 的欄位,請指定欄位名稱:
print(df[‘name’])
也可以一次選取多個欄位:
print(df[[‘name’,’age’]])
若要存取資料列,可以使用 loc 或 iloc,稍後會進一步說明它們的用法。
確認與轉換資料型態
Pandas 可以處理多種資料型態。我們將說明如何確認欄位的資料型態,以及在需要時如何轉換資料型態。
要確認 DataFrame 各欄的資料型態,可以使用 dtypes 屬性:
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [1.1, 2.2, 3.3], 'col3': ['a','b', 'c']}
df = pd.DataFrame(data)
print(df.dtypes)
若要轉換資料型態,可以使用 astype() 方法:
df['col1'] = df['col1'].astype('float')
print(df.dtypes)
常見的資料型態包括:int(整數)、float(浮點數)、str(字串)、datetime(日期時間)等等。根據需求轉換適當的型態,有助於節省記憶體並提升運算效率。
資料的參照與擷取
使用 loc 與 iloc 進行資料擷取
loc 與 iloc 是從 DataFrame 擷取特定資料列或欄的強大工具。以下將搭配範例說明其使用方法。
loc 是以標籤(Label)來指定列或欄:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 28],
'city': ['Tokyo', 'Osaka', 'Kyoto']}
df = pd.DataFrame(data, index=['row1', 'row2', 'row3'])
print(df.loc['row1', 'name'])
print(df.loc['row1':'row2', ['name','age']])
iloc 則是以整數位置來指定列或欄:
print(df.iloc[0, 0])
print(df.iloc[0:2, 0:2])
loc 和 iloc 都非常實用,是在資料探索與分析中不可或缺的工具。
依條件擷取資料列
說明如何根據特定條件篩選資料列。會介紹使用 query() 方法與比較運算子來進行條件篩選。
使用比較運算子篩選符合條件的資料列:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 28],
'city': ['Tokyo', 'Osaka', 'Kyoto']}
df = pd.DataFrame(data)
print(df[df['age'] > 28])
使用 query() 方法可撰寫更複雜的條件:
print(df.query('age > 28'))
print(df.query("city == 'Tokyo'"))
也可以組合多個條件:
print(df[(df['age'] > 25) & (df['city'] != 'Osaka')])
print(df.query("age > 25 and city != 'Osaka'"))
靈活運用這些方法,即可有效從 DataFrame 中擷取所需資料。
使用 head() 和 tail() 確認資料
head() 和 tail() 方法可以快速查看 DataFrame 的前幾列或後幾列,便於掌握資料概況。
使用 dataframe.head() 可顯示前幾列,若未指定參數,預設為前 5 列:
import pandas as pd
data = {'col1': range(10), 'col2': range(10, 20)}
df = pd.DataFrame(data)
print(df.head())
print(df.head(3))
使用 dataframe.tail() 可顯示後幾列,預設為最後 5 列:
print(df.tail())
print(df.tail(3))
這些方法在處理大型資料時特別有用,能快速掌握資料的整體輪廓。

資料的加工與整理
新增、刪除與修改欄位
這一節將說明如何在 DataFrame 中新增欄位、刪除不需要的欄位,以及修改現有欄位的資料。
要新增新的欄位,只需指定欄位名稱並賦值即可:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 28]}
df = pd.DataFrame(data)
df['gender'] = ['female', 'male', 'male']
print(df)
若要修改現有欄位的值,可直接重新賦值:
df['age'] = df['age'] + 1
print(df)
要刪除欄位,可使用 drop() 方法,並指定要刪除的欄位名稱。加上 inplace=True 表示直接修改原始 DataFrame:
df.drop('gender', axis=1, inplace=True)
print(df)
結合這些操作,就能靈活處理與整理資料。
資料排序(Sort)
說明如何根據特定欄位的值對 DataFrame 的資料列進行排序。可指定升冪(ascending)或降冪排序,亦可使用多個欄位排序。
使用 sort_values() 方法指定要排序的欄位:
import pandas as pd
data = {'name': ['Bob', 'Alice', 'Charlie'],
'age': [30, 25, 28]}
df = pd.DataFrame(data)
df_sorted = df.sort_values('age')
print(df_sorted)
預設為升冪排序。若要降冪排序,設定 ascending=False:
df_sorted = df.sort_values('age', ascending=False)
print(df_sorted)
若要以多個欄位排序,可傳入欄位名稱的列表:
df_sorted = df.sort_values(['age', 'name'])
print(df_sorted)
運用這些功能可將資料整理成更容易分析的格式。
資料的統計量
說明如何計算平均值、中位數、標準差等統計指標。使用 describe() 方法還可以一次取得整體概況。
要計算各欄的平均值,可使用 mean() 方法:
import pandas as pd
data = {'col1': [1, 2, 3, 4, 5], 'col2': [2, 4, 6, 8, 10]}
df = pd.DataFrame(data)
print(df.mean())
中位數可使用 median() 方法:
print(df.median())
標準差則使用 std() 方法:
print(df.std())
若要查看綜合統計量,可使用 describe() 方法:
print(df.describe())
這些統計量有助於理解資料的分佈與特性。

資料的輸出與實務應用
匯出為 CSV 檔
介紹如何將整理後的 DataFrame 匯出為 CSV 檔案,並說明如何設定編碼與分隔符號等參數。
使用 to_csv() 方法可以匯出為 CSV 檔,指定檔名即可:
import pandas as pd
data = {'name': ['Alice', 'Bob'], 'age': [25, 30]}
df = pd.DataFrame(data)
df.to_csv('output.csv', index=False)
指定 index=False 可避免將索引一起輸出。
若要指定分隔符號,可使用 sep 參數:
df.to_csv('output.csv', sep='\t', index=False)
若要指定編碼格式,可使用 encoding 參數:
df.to_csv('output.csv', encoding='utf-8', index=False)
透過這些設定,可以靈活輸出符合需求的 CSV 檔案。
缺失值的處理
說明如何處理缺失值(NaN),包括檢查、補值與刪除等策略。
使用 isnull() 方法可以檢查是否有缺失值,結果會以布林值表示:
import pandas as pd
import numpy as np
data = {'col1': [1, 2, np.nan], 'col2': [4, np.nan, 6]}
df = pd.DataFrame(data)
print(df.isnull())
使用 sum() 可計算每欄缺失值的數量:
print(df.isnull().sum())
若要以指定值填補缺失值,可使用 fillna() 方法:
df_filled = df.fillna(0)
print(df_filled)
若要刪除含有缺失值的列,可使用 dropna() 方法:
df_dropped = df.dropna()
print(df_dropped)
妥善處理缺失值有助於提高資料分析的準確性與完整性。
Pandas 總結與後續學習建議
回顧本文介紹的 Pandas 基礎知識,並提供進一步學習的方向。讓我們活用 Pandas 邁向更進階的資料分析之路。
本文說明了 Pandas 的基本用法,包括 Series 與 DataFrame 的建立、資料擷取、篩選、加工、整理、統計量計算、資料輸出與缺失值處理等實用操作。
若想進一步進行更進階的資料分析,建議學習 Pandas 的進階功能:如 groupby() 進行分組彙總、merge() 進行資料合併、pivot_table() 建立樞紐分析表等。
此外,若搭配 Matplotlib 或 Seaborn 等資料視覺化函式庫,將能進行更有說服力的分析與報告呈現。
透過持續學習與實作,你將能有效提升資料分析能力,挑戰更高層次的應用。
Pandas 是非常強大的工具,熟練掌握之後,能大幅提升分析效率與成果品質。讓我們每天都多學一點,把 Pandas 真正用在實務中!