Pandas 中的 get_dummies 方法
Suraj Joshi
2023年1月30日
Pandas
Pandas DataFrame Column
-
pandas.get_dummies()方法 -
使用
pandas.get_dummies()方法建立帶有虛擬變數列的 DataFrame -
設定
columns只為指定的列建立虛擬變數 -
設定
prefix來改變虛擬列的預設名稱
本教程解釋瞭如何從帶有分類列的 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。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn