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
广告