Python Pandas - 計算虛擬變數



虛擬變數,也稱為指示變數,是表示分類資料的二元 (0 或 1) 變數。在資料分析中,尤其是在處理分類資料時,通常需要將分類變數轉換為數值格式。一種常用的方法是使用虛擬變數。

本教程將介紹如何在 Python Pandas 中使用 get_dummies()from_dummies() 函式建立虛擬變數。

使用 get_dummies() 建立虛擬變數

Pandas 中的 get_dummies() 函式用於將 Series 或 DataFrame 的分類變數轉換為虛擬變數。

示例:建立虛擬變數的基本示例

這是一個使用 pandas.get_dummies() 函式建立虛擬變數的基本示例。

import pandas as pd
import numpy as np

# Create a DataFrame
df = pd.DataFrame({"keys": list("aeeioou"), "values": range(7)})

# Display the Input DataFrame
print('Input DataFrame:\n',df)

# Create dummy variables for the keys column
dummies = pd.get_dummies(df["keys"])
print('Resultant Dummy Variables:\n',dummies)

以下是上述程式碼的輸出:

Input DataFrame:
keysvalues
a0
e1
e2
i3
o4
o5
u6
Resultant Dummy Variables:
aeiou
0TrueFalseFalseFalseFalse
1FalseTrueFalseFalseFalse
2FalseTrueFalseFalseFalse
3FalseFalseTrueFalseFalse
4FalseFalseFalseTrueFalse
5FalseFalseFalseTrueFalse
6FalseFalseFalseFalseTrue

使用字首建立虛擬變數

get_dummies() 函式允許您透過使用 prefix 引數,在將 Pandas 物件的分類變數轉換為虛擬變數時,為虛擬變數列名新增字首。

示例

此示例演示了使用 pandas.get_dummies() 函式使用字首建立虛擬變數。

import pandas as pd
import numpy as np

# Create a DataFrame
df = pd.DataFrame({"keys": list("aeeioou"), "values": range(7)})

# Display the Input DataFrame
print('Input DataFrame:\n',df)

# Create dummy variables for the keys column
dummies = pd.get_dummies(df["keys"], prefix="Col_")

print('Resultant Dummy Variables with Prefix:\n',dummies)

以下是上述程式碼的輸出:

Input DataFrame:
keysvalues
a0
e1
e2
i3
o4
o5
u6
Resultant Dummy Variables with Prefix:
Col__aCol__eCol__iCol__oCol__u
0TrueFalseFalseFalseFalse
1FalseTrueFalseFalseFalse
2FalseTrueFalseFalseFalse
3FalseFalseTrueFalseFalse
4FalseFalseFalseTrueFalse
5FalseFalseFalseTrueFalse
6FalseFalseFalseFalseTrue

建立虛擬變數時處理共線性

為了避免統計模型中的共線性問題,您可以透過將 drop_first 引數設定為 True 來刪除第一個虛擬變數。

示例

此示例使用 pandas.get_dummies() 函式的 drop_first 引數刪除第一個虛擬變數。

import pandas as pd
import numpy as np

# Create a DataFrame
df = pd.DataFrame({"keys": list("aeeioou"), "values": range(7)})

# Display the Input DataFrame
print('Input DataFrame:\n',df)

# Create dummy variables for the keys column
dummies = pd.get_dummies(df["keys"], drop_first=True)

print('Resultant Dummy Variables with Prefix:\n',dummies)

以下是上述程式碼的輸出:

Input DataFrame:
keysvalues
a0
e1
e2
i3
o4
o5
u6
Resultant Dummy Variables with Prefix:
eiou
0FalseFalseFalseFalse
1TrueFalseFalseFalse
2TrueFalseFalseFalse
3FalseTrueFalseFalse
4FalseFalseTrueFalse
5FalseFalseTrueFalse
6FalseFalseFalseTrue

從虛擬變數建立分類變數

pandas.from_dummies() 函式用於將 get_dummies() 的輸出轉換回分類 Series。

示例

此示例演示了使用 pandas.from_dummies() 函式從虛擬變數建立分類 Series。

import pandas as pd
import numpy as np

# Create a DataFrame with dummy variables
df = pd.DataFrame({"Col_a": [0, 1, 0], "Col_b": [1, 0, 1]})

# Display the Input DataFrame
print('Input DataFrame:\n',df)

# Convert the Dummies back to categorical
original_series = pd.from_dummies(df, sep="_")

print('Resultant Categorical Variables:\n',original_series )

以下是上述程式碼的輸出:

Input DataFrame:
Col_aCol_b
01
10
01
Resultant Categorical Variables:
Col
b
a
b
廣告