Pandas 是 Python 進行 數據挖掘 和 數據分析 的核心庫之一,提供了強大的 數據清洗、預處理、轉換、分析 和 可視化 功能。它通常與 NumPy、Matplotlib、Seaborn、Scikit-Learn 等庫結合使用,幫助構建高效的數據挖掘流程。
📌 1. 讀取數據
Pandas 支持多種數據格式,如 CSV、Excel、JSON、SQL、Parquet 等。
import pandas as pd# 讀取 CSV 文件
df = pd.read_csv("data.csv")# 讀取 Excel 文件
df = pd.read_excel("data.xlsx")# 讀取 JSON 文件
df = pd.read_json("data.json")# 讀取 SQL 數據庫
import sqlite3
conn = sqlite3.connect("database.db")
df = pd.read_sql("SELECT * FROM table_name", conn)
📌 2. 數據探索(EDA)
2.1 查看數據基本信息
print(df.head()) # 查看前5行
print(df.tail()) # 查看后5行
print(df.info()) # 數據類型、缺失值情況
print(df.describe()) # 統計摘要(僅適用于數值列)
print(df.shape) # 行列數
print(df.columns) # 列名
print(df.dtypes) # 每列的數據類型
2.2 缺失值檢測
print(df.isnull().sum()) # 統計每列的缺失值數量
print(df.dropna().shape) # 刪除含有缺失值的行
df.fillna(df.mean(), inplace=True) # 用均值填充缺失值
📌 3. 數據清洗
3.1 處理缺失值
df.fillna(df.median(), inplace=True) # 用中位數填充
df.dropna(inplace=True) # 刪除缺失值
3.2 處理重復值
df.drop_duplicates(inplace=True)
3.3 處理異常值
# 以標準差為例,刪除 3 倍標準差外的異常值
import numpy as np
df = df[(np.abs(df["column"] - df["column"].mean()) <= (3 * df["column"].std()))]
📌 4. 數據轉換
4.1 數據類型轉換
df["date_column"] = pd.to_datetime(df["date_column"]) # 轉換為日期格式
df["int_column"] = df["int_column"].astype(float) # int 轉 float
4.2 處理分類數據
df["category"] = df["category"].astype("category") # 轉換為類別數據
df = pd.get_dummies(df, columns=["category"]) # 獨熱編碼(One-Hot Encoding)
4.3 歸一化 & 標準化
from sklearn.preprocessing import MinMaxScaler, StandardScalerscaler = MinMaxScaler() # 歸一化到 [0,1]
df["normalized"] = scaler.fit_transform(df[["column"]])scaler = StandardScaler() # 標準化為均值 0,標準差 1
df["standardized"] = scaler.fit_transform(df[["column"]])
📌 5. 數據分組 & 統計分析
5.1 分組計算
df.groupby("category")["value"].mean() # 按類別分組求均值
df.groupby("category")["value"].sum() # 按類別求和
df.groupby(["category", "sub_category"])["value"].agg(["mean", "sum", "count"]) # 多指標統計
5.2 透視表
df.pivot_table(values="value", index="category", columns="year", aggfunc="sum")
5.3 計算相關性
df.corr() # 計算數值型變量之間的相關性
📌 6. 數據可視化
import matplotlib.pyplot as plt
import seaborn as sns# 柱狀圖
df["category"].value_counts().plot(kind="bar")# 直方圖
df["value"].hist(bins=30)# 相關性熱圖
sns.heatmap(df.corr(), annot=True, cmap="coolwarm")# 散點圖
sns.scatterplot(x=df["feature1"], y=df["feature2"])# 盒須圖(查看異常值)
sns.boxplot(x=df["category"], y=df["value"])
📌 7. 數據分割
7.1 訓練集 & 測試集劃分
from sklearn.model_selection import train_test_splitX = df.drop("target", axis=1) # 特征
y = df["target"] # 目標變量X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
📌 8. 數據導出
df.to_csv("cleaned_data.csv", index=False) # 導出為 CSV
df.to_excel("cleaned_data.xlsx", index=False) # 導出為 Excel
df.to_json("cleaned_data.json") # 導出為 JSON
📌 9. Pandas + Scikit-Learn 數據挖掘
Pandas 可用于構建 機器學習模型,以下是一個簡單的 回歸分析示例:
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 選擇特征和目標變量
X = df[["feature1", "feature2"]]
y = df["target"]# 訓練模型
model = LinearRegression()
model.fit(X, y)# 預測
y_pred = model.predict(X)# 計算誤差
mse = mean_squared_error(y, y_pred)
print("均方誤差:", mse)
📌 總結
Pandas 任務 | 函數/方法 |
---|---|
讀取數據 | read_csv() 、read_excel() 、read_json() |
數據探索 | head() 、info() 、describe() 、isnull() |
數據清洗 | dropna() 、fillna() 、drop_duplicates() |
數據轉換 | astype() 、get_dummies() 、MinMaxScaler() |
分組統計 | groupby() 、pivot_table() 、corr() |
可視化 | hist() 、plot() 、heatmap() |
機器學習 | train_test_split() 、LinearRegression() |
Pandas 是數據挖掘的 核心工具,熟練掌握它能大幅提高數據分析和建模的效率! 🚀 🚀 🚀