用法:
Index.factorize(sort=False, na_sentinel=- 1)
將對象編碼為枚舉類型或分類變量。
當重要的是識別不同的值時,此方法對於獲取數組的數字表示很有用。
factorize
既可用作頂級函數pandas.factorize()
,也可用作方法Series.factorize()
和Index.factorize()
。- sort:布爾值,默認為 False
排序
uniques
並打亂codes
以保持關係。- na_sentinel:int 或無,默認 -1
標記“not found”的值。如果沒有,將不會從值的唯一性中刪除 NaN。
- 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.Index.value_counts用法及代碼示例
- Python pandas.Index.argmin用法及代碼示例
- Python pandas.Index.to_series用法及代碼示例
- Python pandas.Index.str用法及代碼示例
- Python pandas.Index.to_numpy用法及代碼示例
- Python pandas.Index.is_object用法及代碼示例
- Python pandas.Index.slice_indexer用法及代碼示例
- Python pandas.Index.is_interval用法及代碼示例
- Python pandas.Index.notnull用法及代碼示例
- Python pandas.Index.equals用法及代碼示例
- Python pandas.Index.set_names用法及代碼示例
- Python pandas.Index.searchsorted用法及代碼示例
- Python pandas.Index.duplicated用法及代碼示例
- Python pandas.Index.is_categorical用法及代碼示例
- Python pandas.Index.is_monotonic_increasing用法及代碼示例
- Python pandas.Index.min用法及代碼示例
- Python pandas.Index.is_monotonic_decreasing用法及代碼示例
- Python pandas.Index.max用法及代碼示例
- Python pandas.Index.shift用法及代碼示例
- Python pandas.Index.argmax用法及代碼示例
注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.Index.factorize。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。