文章

AI 第4天:補充範例與技巧:數據分析與處理

以下提供更多實用的程式碼範例與數據分析技巧,幫助您深入掌握 Pandas 和 NumPy 的功能。


1. 數據探索技巧與範例

範例:快速查看數據資訊

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd

# 讀取數據
df = pd.read_csv('sample_data.csv')

# 查看數據集的基本信息
print("數據集的維度 (行數, 列數):", df.shape)
print("\n前 5 行數據:")
print(df.head())
print("\n數據類型:")
print(df.dtypes)

技巧:檢查數據分佈

  • 使用 describe() 查看數據的基本統計資訊。
  • 使用 value_counts() 查看類別型數據的分佈。
    ```python

    基本統計資訊

    print(df.describe())

類別型數據分佈

print(df[‘Category_Column’].value_counts())

1
2
3
4
5
6
7
8
9
10
11
12
13
14
---

## **2. 處理遺漏值的技巧**

### **範例:替換遺漏值或刪除行/列**  
```python
# 替換遺漏值
df['Column_Name'].fillna(0, inplace=True)  # 用 0 替換遺漏值
df['Column_Name'].fillna(df['Column_Name'].median(), inplace=True)  # 用中位數替換

# 刪除包含遺漏值的行或列
df.dropna(axis=0, inplace=True)  # 刪除包含遺漏值的行
df.dropna(axis=1, inplace=True)  # 刪除包含遺漏值的列

3. 處理異常值的技巧

範例:使用盒鬚圖檢測異常值

1
2
3
4
5
6
import matplotlib.pyplot as plt

# 繪製盒鬚圖
plt.boxplot(df['Numeric_Column'])
plt.title("Boxplot of Numeric_Column")
plt.show()

技巧:移除或替換異常值

1
2
3
4
5
6
7
8
9
# 計算上下四分位數與界限
Q1 = df['Numeric_Column'].quantile(0.25)
Q3 = df['Numeric_Column'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

# 過濾掉異常值
df_filtered = df[(df['Numeric_Column'] >= lower_bound) & (df['Numeric_Column'] <= upper_bound)]

4. 資料轉換與特徵工程

範例:數據標準化與正規化

1
2
3
4
5
6
7
8
9
from sklearn.preprocessing import StandardScaler, MinMaxScaler

# 標準化
scaler = StandardScaler()
df['Standardized'] = scaler.fit_transform(df[['Numeric_Column']])

# 正規化
normalizer = MinMaxScaler()
df['Normalized'] = normalizer.fit_transform(df[['Numeric_Column']])

範例:新增衍生欄位

1
2
3
4
5
# 計算兩欄位的差值作為新特徵
df['Difference'] = df['Column1'] - df['Column2']

# 建立類別型特徵
df['Category_Label'] = df['Category_Column'].apply(lambda x: 1 if x == 'Yes' else 0)

5. 資料視覺化技巧

範例:繪製數據分佈圖

1
2
3
4
5
6
7
8
9
10
11
import seaborn as sns

# 繪製直方圖
sns.histplot(df['Numeric_Column'], kde=True)
plt.title("Histogram with KDE")
plt.show()

# 類別型數據的長條圖
sns.countplot(x='Category_Column', data=df)
plt.title("Category Distribution")
plt.show()

範例:散佈圖與相關性分析

1
2
3
4
5
6
7
8
# 散佈圖
sns.scatterplot(x='Feature1', y='Feature2', data=df)
plt.title("Scatter Plot")
plt.show()

# 計算相關係數
correlation_matrix = df.corr()
print("相關性矩陣:\n", correlation_matrix)

6. 數據處理綜合範例

目標:清洗並分析一組房價數據

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 假設數據包含房價、房屋面積、建造年份等欄位
df = pd.read_csv('housing_data.csv')

# 1. 查看基本資訊
print(df.info())

# 2. 處理遺漏值
df['Price'].fillna(df['Price'].mean(), inplace=True)

# 3. 處理異常值
Q1 = df['Area'].quantile(0.25)
Q3 = df['Area'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
df = df[(df['Area'] >= lower_bound) & (df['Area'] <= upper_bound)]

# 4. 新增每平米價格特徵
df['Price_per_sqm'] = df['Price'] / df['Area']

# 5. 繪製房價分佈圖
sns.histplot(df['Price'], kde=True)
plt.title("House Price Distribution")
plt.show()

進一步練習與挑戰

  1. 練習題目:下載公開數據集(如房價、銷售記錄、電商數據),嘗試清洗並進行分析。
  2. 挑戰:計算並視覺化數據中的相關性,找出與目標變數(如房價)的強相關特徵。

需要更深入的數據分析方法或更高階的應用嗎?

本文章以 CC BY 4.0 授權