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()
進一步練習與挑戰
- 練習題目:下載公開數據集(如房價、銷售記錄、電商數據),嘗試清洗並進行分析。
- 挑戰:計算並視覺化數據中的相關性,找出與目標變數(如房價)的強相關特徵。
需要更深入的數據分析方法或更高階的應用嗎?
本文章以 CC BY 4.0 授權