簡體   English   中英

熊貓:get_dummies與分類

[英]Pandas: get_dummies vs categorical

我有一個數據集,其中包含一些帶有分類數據的列。

我一直在使用Categorical函數將數字值替換為分類值。

data[column] = pd.Categorical.from_array(data[column]).codes

我最近碰到了pandas.get_dummies函數。 這些可以互換嗎? 使用一個優於另一個有優勢嗎?

為什么要將分類數據轉換為整數? 如果這是你的目標,我不相信你會節省記憶。

df = pd.DataFrame({'cat': pd.Categorical(['a', 'a', 'a', 'b', 'b', 'c'])})
df2 = pd.DataFrame({'cat': [1, 1, 1, 2, 2, 3]})

>>> df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 6 entries, 0 to 5
Data columns (total 1 columns):
cat    6 non-null category
dtypes: category(1)
memory usage: 78.0 bytes

>>> df2.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 6 entries, 0 to 5
Data columns (total 1 columns):
cat    6 non-null int64
dtypes: int64(1)
memory usage: 96.0 bytes

分類代碼只是給定類別中唯一項的整數值。 相比之下, get_dummies為每個唯一項返回一個新列。 列中的值指示記錄是否具有該屬性。

>>> pd.core.reshape.get_dummies(df)
Out[30]: 
   cat_a  cat_b  cat_c
0      1      0      0
1      1      0      0
2      1      0      0
3      0      1      0
4      0      1      0
5      0      0      1

要直接獲取代碼,您可以使用:

df['codes'] = [df.cat.codes.to_list()]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM