在pandas使用的過程中我們會發(fā)現(xiàn)有兩個函數(shù)的功能有很多相似之處。它們就是get_dummies()和factorize(),它們功能上都是對分類變量進行操作。那么get_dummies()和factorize()有什么區(qū)別呢?接下來的這篇文章告訴你。
1.get_dummies()
pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None,sparse=False, drop_first=False):Convert categorical variable into dummy/indicator variables
>>> import pandas as pd
>>> s = pd.Series(list('abca'))
>>> pd.get_dummies(s)
a b c
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
2.pd.factorize()
pandas.factorize(values, sort=False, order=None, na_sentinel=-1,size_hint=None):Encode input values as an enumerated type or categorical variable
Series.factorize(sort=False, na_sentinel=-1):Encode the object as an enumerated type or categorical variable
Pandas有一個方法叫做factorize(),它可以創(chuàng)建一些數(shù)字,來表示類別變量,對每一個類別映射一個ID,這種映射最后只生成一個特征,不像dummy那樣生成多個特征。
Parameters: |
sort : boolean, default False
na_sentinel: int, default -1
|
---|---|
Returns: |
labels : the indexer to the original array uniques : the unique Index |
labels:對應(yīng)的編碼array
uniques:需要編碼的類型
補充:pandas.get_dummies 的使用及含義
get_dummies 是利用pandas實現(xiàn)one hot encode的方式
get_dummies參數(shù)如下:
pandas.get_dummies(data,prefix = None,prefix_sep ='_',dummy_na = False,columns = None,sparse = False,drop_first = False,dtype = None )
data
: array-like,Series或DataFrame
prefix
:string,字符串列表或字符串dict,默認為None,
用于追加DataFrame列名的字符串。在DataFrame上調(diào)用get_dummies時,傳遞一個長度等于列數(shù)的列表?;蛘撸熬Y 可以是將列名稱映射到前綴的字典。
prefix_sep
: string,默認為'_'
如果附加前綴,分隔符/分隔符要使用?;蛘邆鬟f與前綴一樣的列表或字典。
dummy_na
: bool,默認為False
如果忽略False NaN,則添加一列以指示NaN。
columns
: 類似列表,默認為無
要編碼的DataFrame中的列名稱。如果列是None,那么所有與列 對象或類別 D型細胞將被轉(zhuǎn)換。
sparse
: bool,默認為False
偽編碼列是否應(yīng)由SparseArray(True)或常規(guī)NumPy數(shù)組(False)支持。
drop_first
: bool,默認為False
是否通過刪除第一級別從k分類級別獲得k-1個假人。
版本0.18.0中的新功能。
dtype
: D型,默認np.uint8
新列的數(shù)據(jù)類型。只允許一個dtype。
版本0.23.0中的新功能。
實例
prefix自定義前綴
以上就是get_dummies()和factorize()有什么區(qū)別的全部內(nèi)容,希望能給大家一個參考,也希望大家多多支持W3Cschool。