pandas
因子化
看过来
《pandas 教程》 持续更新中,可作为 pandas 入门进阶课程、pandas 中文手册、用法大全,配有案例讲解和速查手册。提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。查看更新日志。作者开办 Python 数据分析训练营正在报名中,详情 Python 数据分析训练营。
![]() |
本教程作者所著新书《Python之光:Python编程入门与实战》(ISBN:9787111729891)已由机械工业出版社出版上市,各大电商平台有售,欢迎:查看详情并关注购买。 |
![]() |
本教程作者所著新书《深入浅出Pandas:利用Python进行数据处理与分析》(ISBN:9787111685456)已由机械工业出版社出版上市,各大电商平台有售,欢迎:查看详情并关注购买。 |
因子化值是指将个一维的数据,由于在大量的重复值,可以解析成枚举值,这样我们就方便进行分辨。factorize 既可以用作顶层函数 pandas.factorize()
,也可以用作Series.factorize()
和 Index.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
参数后将对唯一性进行排序,编码列表将继续与原值保持对应关系,但从值的大小上将体现出顺序。
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)
缺失值不会出现在唯一值列表中,在编码中将为 -1:
codes, uniques = pd.factorize(['b', None, 'a', 'c', 'b'])
codes
# array([ 0, -1, 1, 2, 0])
uniques
# array(['b', 'a', 'c'], dtype=object)
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]
对 Series 操作后唯一值将生成一个 index 对象:
cat = pd.Series(['a', 'a', 'c'])
codes, uniques = pd.factorize(cat)
codes
# array([0, 0, 1])
uniques
# Index(['a', 'c'], dtype='object')
无「盖若」授权,请勿以任何形式转载,公众号:gairuo
Copyright © 2019 - 2023
Gairuo.com All Rights Reserved v7.6.1.0919
京公网安备11010502033395号
京ICP备15019454号-4