用法:
pandas.factorize(values, sort=False, na_sentinel=- 1, size_hint=None)
將對象編碼為枚舉類型或分類變量。
當重要的是識別不同的值時,此方法對於獲取數組的數字表示很有用。
factorize
既可用作頂級函數pandas.factorize()
,也可用作方法Series.factorize()
和Index.factorize()
。- values:序列
一維序列。不是 pandas 對象的序列在分解之前被強製轉換為 ndarray。
- sort:布爾值,默認為 False
排序
uniques
並打亂codes
以保持關係。- na_sentinel:int 或無,默認 -1
標記“not found”的值。如果沒有,將不會從值的唯一性中刪除 NaN。
- size_hint:int 可選
提示哈希表大小。
- codes:ndarray
一個整數 ndarray,它是
uniques
的索引器。uniques.take(codes)
將具有與values
相同的值。- uniques:ndarray、索引或分類
唯一的有效值。當
values
為分類時,uniques
為分類。當values
是其他一些 pandas 對象時,返回一個Index
。否則,返回一維 ndarray。注意
即使有缺失值
values
,uniques
將要不是包含一個條目。
參數:
返回:
注意:
有關更多示例,請參閱用戶指南。
例子:
這些示例都將 factorize 顯示為頂級方法,例如
pd.factorize(values)
。對於像Series.factorize()
這樣的方法,結果是相同的。>>> codes, uniques = pd.factorize(['b', 'b', 'a', 'c', 'b']) >>> codes array([0, 0, 1, 2, 0]...) >>> uniques array(['b', 'a', 'c'], dtype=object)
使用
sort=True
,將對uniques
進行排序,並打亂codes
以保持關係。>>> codes, uniques = pd.factorize(['b', 'b', 'a', 'c', 'b'], sort=True) >>> codes array([1, 1, 0, 2, 1]...) >>> uniques array(['a', 'b', 'c'], dtype=object)
codes
和na_sentinel
(默認為-1
)中指示缺失值。請注意,缺失值永遠不會包含在uniques
中。>>> codes, uniques = pd.factorize(['b', None, 'a', 'c', 'b']) >>> codes array([ 0, -1, 1, 2, 0]...) >>> uniques array(['b', 'a', 'c'], dtype=object)
到目前為止,我們隻分解了列表(內部強製轉換為 NumPy 數組)。在分解 pandas 對象時,
uniques
的類型會有所不同。對於分類,返回Categorical
。>>> cat = pd.Categorical(['a', 'a', 'c'], categories=['a', 'b', 'c']) >>> codes, uniques = pd.factorize(cat) >>> codes array([0, 0, 1]...) >>> uniques ['a', 'c'] Categories (3, object): ['a', 'b', 'c']
請注意,
'b'
在uniques.categories
中,盡管cat.values
中不存在。對於所有其他 pandas 對象,將返回適當類型的索引。
>>> cat = pd.Series(['a', 'a', 'c']) >>> codes, uniques = pd.factorize(cat) >>> codes array([0, 0, 1]...) >>> uniques Index(['a', 'c'], dtype='object')
如果 NaN 在值中,並且我們希望在值的唯一性中包含 NaN,則可以通過設置
na_sentinel=None
來實現。>>> values = np.array([1, 2, 1, np.nan]) >>> codes, uniques = pd.factorize(values) # default: na_sentinel=-1 >>> codes array([ 0, 1, 0, -1]) >>> uniques array([1., 2.])
>>> codes, uniques = pd.factorize(values, na_sentinel=None) >>> codes array([0, 1, 0, 2]) >>> uniques array([ 1., 2., nan])
相關用法
- Python pandas.arrays.IntervalArray.is_empty用法及代碼示例
- Python pandas.DataFrame.ewm用法及代碼示例
- Python pandas.api.types.is_timedelta64_ns_dtype用法及代碼示例
- Python pandas.DataFrame.dot用法及代碼示例
- Python pandas.DataFrame.apply用法及代碼示例
- Python pandas.DataFrame.combine_first用法及代碼示例
- Python pandas.read_pickle用法及代碼示例
- Python pandas.Index.value_counts用法及代碼示例
- Python pandas.DatetimeTZDtype用法及代碼示例
- Python pandas.DataFrame.cumsum用法及代碼示例
- Python pandas.Interval.is_empty用法及代碼示例
- Python pandas.api.indexers.FixedForwardWindowIndexer用法及代碼示例
- Python pandas.core.resample.Resampler.nearest用法及代碼示例
- Python pandas.Series.add_prefix用法及代碼示例
- Python pandas.Period.strftime用法及代碼示例
- Python pandas.Series.map用法及代碼示例
- Python pandas.Series.max用法及代碼示例
- Python pandas.DataFrame.rename用法及代碼示例
- Python pandas.DataFrame.to_numpy用法及代碼示例
- Python pandas.Period.dayofyear用法及代碼示例
注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.factorize。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。