pandas.Series.factorize()用法及代码示例

1.基本背景

将对象编码为枚举类型或分类变量。

​    Pandas.factorize()方法通过标识不同的值来获得数组的数字表示形式。该方法可以同时

使用pandas.factorize()Series.factorize()

  factorize英文意思:分解,分解为因数,因式分解的意思

2.语法结构

pandas.factorize(values, sort=False, na_sentinel=- 1, size_hint=None)

参数详解:

values:sequence

  一维数组,非pandas对象在分解之前被强制转换为序列格式

**sort:bool,default False

  排序唯一性和随机编码保持对应关系

na_sentinelint or None, default -1

  标记"not found"值,如果为None,则不会从值的唯一性中删除NaN。

size_hintint, optional

  哈希表大小调节器

Return:

codesndarray

  整数ndarray,唯一索引器

uniquesndarray, Index, or Categorical

  唯一的有效值。

​    当values是Categorical时,uniques也是Categorical。当values是其他pandas对象时,返回一个Index。否则,返回1-D ndarray。

3.代码示例

3.1 示例1

需求:演示pd.factorize()的使用

import pandas as pd
codes, uniques = pd.factorize(['b', 'b', 'a', 'c', 'b'])
print(codes)
print(uniques)

在这里插入图片描述

3.2 示例2

需求:演示sort=True的情况

import pandas as pd
codes, uniques = pd.factorize(['b', 'b', 'a', 'c', 'b'], sort=True)
print(codes)
print(uniques)

在这里插入图片描述

3.3 示例3

需求:演示存在None值得情况 (na_sentinel=-1 默认值)

import pandas as pd
codes, uniques = pd.factorize(['b', None, 'a', 'c', 'b'])
print(codes)
print(uniques)

在这里插入图片描述

3.4 示例4

需求:当为Categoricals时,uniques返回值也是Categorical

import pandas as pd
cat = pd.Categorical(['a', 'a', 'c'], categories=['a', 'b', 'c'])
codes, uniques = pd.factorize(cat)
print(codes)
print(uniques)

在这里插入图片描述

Notice that 'b' is in uniques.categories, despite not being present in cat.values.

3.5 示例5

需求:当输入为其他pandas对象时,返回索引

import pandas as pd
cat = pd.Series(['a', 'a', 'c'])
codes, uniques = pd.factorize(cat)
print(codes)
print(uniques)

在这里插入图片描述

3.6 示例6

需求:保证NaN值在唯一性中,可设置na_sentinel=None

Changed in version 1.1.2.

import pandas  as pd
values = np.array([1, 2, 1, np.nan])
codes, uniques = pd.factorize(values)  # default: na_sentinel=-1
print(codes)
print(uniques)

codes, uniques = pd.factorize(values, na_sentinel=None)
print(codes)
print(uniques)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-44l1GVWl-1640873166074)(C:\Users\hbwhx\Desktop\pandas\pandas.Series.factorize()]用法及代码示例.assets\image-20211230220547099.png)

4.总结

1.当一个特征中存在较多的类别时,使用get_dummies()会导致DataFrame中的columns激增。

2.factorize()可以对特征中的类别创建一些数字,来表示分类变量或者枚举型变量(enumerated type)。

3.factorize()只产生一个特征变量,这个特征中对类别使用数字进行区分。适用于出现较多独立变量的

情况。

参考连接:

1.https://vimsky.com/zh-tw/examples/usage/python-pandas-factorize.html

2.https://blog.csdn.net/ssswill/article/details/86555935

3.https://www.cxybb.com/article/eerywh/115363882

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值