Pandas 中的 get_dummies 方法
本教程解释了如何从带有分类列的 DataFrame 中生成带有虚拟变量或指标变量的 DataFrame。
pandas.get_dummies()
方法
pandas.get_dummies(
data,
prefix=None,
prefix_sep="_",
dummy_na=False,
columns=None,
sparse=False,
drop_first=False,
dtype=None,
)
使用 pandas.get_dummies()
方法创建带有虚拟变量列的 DataFrame
import pandas as pd
students_df = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303],
"Name": ["Mike", "Christine", "Rob", "Daniel", "Jennifer"],
"Sex": ["Male", "Female", "Male", "Male", "Female"],
}
)
students_df_dummies = pd.get_dummies(students_df)
print("The original DataFrame is:")
print(students_df, "\n")
print("DataFrame with Dummies:")
print(students_df_dummies)
输出:
The original DataFrame is:
Id Name Sex
0 302 Mike Male
1 504 Christine Female
2 708 Rob Male
3 103 Daniel Male
4 303 Jennifer Female
DataFrame with Dummies:
Id Name_Christine Name_Daniel Name_Jennifer Name_Mike Name_Rob Sex_Female Sex_Male
0 302 0 0 0 1 0 0 1
1 504 1 0 0 0 0 1 0
2 708 0 0 0 0 1 0 1
3 103 0 1 0 0 0 0 1
4 303 0 0 1 0 0 1 0
它生成一个 DataFrame,其中包含由原始列名和该列的每个唯一值连接而成的虚拟列名。
对于 Name
列,我们有五个唯一的值,因此 Name
分裂成 Name_
加上 DataFrame 中的每个唯一的名字。虚列的值将根据初始 DataFrame 中的值为 1 或 0。
students_df
DataFrame 中 Name
列 Daniel
值的行,students_df_dummies
DataFrame 中 Name_Daniel
列的值为 1,而 students_df_dummies
DataFrame 中 Name_Daniel
列的值为 0。
设置 columns
只为指定的列创建虚拟变量
默认情况下,get_dummies()
方法将为每一列的 dtypes object
或 category
创建带有虚拟列的 DataFrame。我们可以将列的列表作为 columns
参数来指定特定的列。
import pandas as pd
students_df = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303],
"Name": ["Mike", "Christine", "Rob", "Daniel", "Jennifer"],
"Sex": ["Male", "Female", "Male", "Male", "Female"],
}
)
students_df_dummies = pd.get_dummies(students_df, columns=["Sex"])
print("The original DataFrame is:")
print(students_df, "\n")
print("DataFrame with Dummies:")
print(students_df_dummies)
输出:
The original DataFrame is:
Id Name Sex
0 302 Mike Male
1 504 Christine Female
2 708 Rob Male
3 103 Daniel Male
4 303 Jennifer Female
DataFrame with Dummies:
Id Name Sex_Female Sex_Male
0 302 Mike 0 1
1 504 Christine 1 0
2 708 Rob 0 1
3 103 Daniel 0 1
4 303 Jennifer 1 0
它只为 Sex
列创建虚拟变量。
设置 prefix
来改变虚拟列的默认名称
import pandas as pd
students_df = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303],
"Name": ["Mike", "Christine", "Rob", "Daniel", "Jennifer"],
"Sex": ["Male", "Female", "Male", "Male", "Female"],
}
)
students_df_dummies = pd.get_dummies(students_df, columns=["Sex"], prefix="Column")
print("The original DataFrame is:")
print(students_df, "\n")
print("DataFrame with Dummies:")
print(students_df_dummies)
输出:
The original DataFrame is:
Id Name Sex
0 302 Mike Male
1 504 Christine Female
2 708 Rob Male
3 103 Daniel Male
4 303 Jennifer Female
DataFrame with Dummies:
Id Name Column_Female Column_Male
0 302 Mike 0 1
1 504 Christine 1 0
2 708 Rob 0 1
3 103 Daniel 0 1
4 303 Jennifer 1 0
它将 Sex
列生成的虚拟列的前缀设置为 Column
。现在虚拟列的名称变成了 Column_Female
和 Column_Male
。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串