用法:
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。