Pandas 是 Python 的一個強大數據操作與分析庫。它提供高效且靈活的資料結構,如 Series 和 DataFrame,適合用於資料清理、操作及分析。在本教學中,我們將深入探討 Pandas 的核心功能,並以範例展示如何進行資料處理。
如果尚未安裝 Pandas,可以使用 pip 進行安裝:
pip install pandas
安裝完成後,導入 Pandas:
import pandas as pd
Series 是一維的資料結構,類似於 Python 的 List 或 NumPy 的一維陣列,但具有索引。
import pandas as pd
# 建立 Series
data = pd.Series([10, 20, 30, 40], index=['A', 'B', 'C', 'D'])
print(data)
輸出:
A 10
B 20
C 30
D 40
dtype: int64
基本操作:
# 取值
print(data['A']) # 10
# 過濾
print(data[data > 20]) # 篩選值大於 20 的元素
# 運算
print(data + 5) # 每個元素加 5
DataFrame 是二維的資料結構,可以視為資料表格式。它是 Pandas 的核心資料結構。
# 建立 DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Salary': [50000, 60000, 70000]
}
df = pd.DataFrame(data)
print(df)
輸出:
Name Age Salary
0 Alice 25 50000
1 Bob 30 60000
2 Charlie 35 70000
Pandas 支援多種資料格式的讀取與匯出,包括 CSV、Excel、JSON 等。
# 從 CSV 檔案讀取資料
df = pd.read_csv('data.csv')
# 從 Excel 檔案讀取資料
df = pd.read_excel('data.xlsx')
# 匯出為 CSV
df.to_csv('output.csv', index=False)
# 匯出為 Excel
df.to_excel('output.xlsx', index=False)
檢視資料的結構與內容是資料分析的第一步。
print(df.head()) # 顯示前 5 筆資料
print(df.tail()) # 顯示後 5 筆資料
print(df.info()) # 顯示資料摘要
print(df.describe()) # 顯示數值欄位的統計摘要
print(df.columns) # 查看欄位名稱
print(df.shape) # 查看資料維度 (列數, 欄數)
print(df.isnull().sum()) # 檢查缺失值
資料清理是分析過程中的重要步驟,包含處理缺失值、重命名欄位、刪除重複值等。
# 填補缺失值
df['Age'].fillna(df['Age'].mean(), inplace=True) # 填補為平均值
# 刪除包含缺失值的列
df = df.dropna()
df.rename(columns={'Name': 'Employee Name'}, inplace=True)
df = df.drop_duplicates()
# 篩選特定條件
filtered_df = df[df['Age'] > 30]
# 篩選多條件
filtered_df = df[(df['Age'] > 25) & (df['Salary'] > 50000)]
# 新增欄位
df['Bonus'] = df['Salary'] * 0.1
# 刪除欄位
df.drop(columns=['Bonus'], inplace=True)
# 依據某欄位排序
df.sort_values(by='Age', ascending=False, inplace=True)
Pandas 提供強大的分組與聚合功能,能輕鬆實現統計分析。
# 按 'Department' 分組,並計算平均薪水
grouped = df.groupby('Department')['Salary'].mean()
print(grouped)
# 建立樞紐表
pivot = pd.pivot_table(df, values='Salary', index='Department', columns='Gender', aggfunc='mean')
print(pivot)
Pandas 對時間序列資料提供良好支援。
# 將資料轉為日期型別
df['Date'] = pd.to_datetime(df['Date'])
# 篩選特定日期範圍
filtered_df = df[(df['Date'] > '2023-01-01') & (df['Date'] < '2023-12-31')]
# 自訂函數應用於某欄位
df['Salary After Tax'] = df['Salary'].apply(lambda x: x * 0.8)
# 左連接 (Left Join)
merged_df = pd.merge(df1, df2, on='Employee ID', how='left')
Pandas 是 Python 資料處理的強大工具,適合處理結構化數據。以下是使用 Pandas 的建議:
Pandas 是一個靈活且高效的資料處理工具,透過多練習與實戰,將能夠快速掌握資料處理技能,並應用於多種場景。