
本文介绍了如何使用 Pandas 将包含数值和非数值数据的年龄信息分配到预定义的分类区间中,包括处理缺失值和非标准格式数据,并确保结果分类的顺序符合特定要求。通过示例代码,读者可以学习如何有效地使用 pd.cut 和 pd.Categorical 函数进行数据转换和分类。
在数据分析中,经常需要将连续的数值数据转换为离散的分类数据,这有助于简化数据、提取关键信息,并方便进行后续的统计分析和建模。本文将详细介绍如何使用 Pandas 库将包含年龄信息的列数据分配到预定义的分类区间中,并处理可能存在的缺失值和非标准格式数据。
首先,确保已经安装了 Pandas 和 NumPy 库。如果没有安装,可以使用 pip 进行安装:
pip install pandas numpy
为了演示,我们创建一个包含年龄信息的 DataFrame,其中包含数值、非数值(例如 "45-55")和缺失值:
import pandas as pd
import numpy as np
data = {'age': ['45-55', '20', '56', '35', None, 'sixty-nine']}
df = pd.DataFrame(data)
print(df)输出:
age 0 45-55 1 20 2 56 3 35 4 None 5 sixty-nine
接下来,我们需要定义分类区间和对应的标签。题目要求如下:
定义区间和标签:
bins = [-float('inf'), -1, 17, 25, 35, 45, 55, float('inf')]
labels = ['unknown', '17 and under', '18-25', '26-35', '36-45', '46-55', '56+']注意:这里在 -float('inf') 和 17 之间添加了一个 -1,这是为了确保所有非数值数据,在转换为数值时变为 NaN,最终都被 fillna 函数填充为 unknown。 这样可以更明确地将所有无法转换为有效年龄的条目归类为“unknown”。
使用 pd.cut 函数将年龄数据分配到定义的区间中:
df['age_cat'] = pd.cut(pd.to_numeric(df['age'], errors='coerce'),
bins=bins, labels=labels)\
.fillna('unknown')
print(df)解释:
题目要求 'unknown' 类别必须在第一位。 为了保证顺序,我们可以使用pd.Categorical指定category的顺序。
df['age_cat'] = pd.Categorical(df['age_cat'], categories=['unknown', '17 and under', '18-25', '26-35', '36-45', '46-55', '56+'], ordered=False) print(df['age_cat'])
输出:
0 unknown 1 18-25 2 56+ 3 26-35 4 unknown 5 unknown Name: age_cat, dtype: category Categories (7, object): ['unknown', '17 and under', '18-25', '26-35', '36-45', '46-55', '56+']
import pandas as pd
import numpy as np
data = {'age': ['45-55', '20', '56', '35', None, 'sixty-nine']}
df = pd.DataFrame(data)
bins = [-float('inf'), -1, 17, 25, 35, 45, 55, float('inf')]
labels = ['unknown', '17 and under', '18-25', '26-35', '36-45', '46-55', '56+']
df['age_cat'] = pd.cut(pd.to_numeric(df['age'], errors='coerce'),
bins=bins, labels=labels)\
.fillna('unknown')
df['age_cat'] = pd.Categorical(df['age_cat'], categories=['unknown', '17 and under', '18-25', '26-35', '36-45', '46-55', '56+'], ordered=False)
print(df)
print(df['age_cat'])本文详细介绍了如何使用 Pandas 将年龄数据分配到预定义的分类区间中,并处理了缺失值和非标准格式数据。 通过使用 pd.cut 和 pd.Categorical 函数,可以灵活地进行数据转换和分类,并确保结果符合特定的要求。 在实际应用中,可以根据具体的需求调整分类区间和标签,以适应不同的数据分析任务。
以上就是使用 Pandas 将数值数据分配到分类区间的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号