千家信息网

如何使用pandas解决常见的预处理任务

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"如何使用pandas解决常见的预处理任务",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用pandas解决常见的预处理任务"
千家信息网最后更新 2026年11月01日如何使用pandas解决常见的预处理任务

这篇文章主要为大家展示了"如何使用pandas解决常见的预处理任务",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用pandas解决常见的预处理任务"这篇文章吧。

数据预处理常用的处理步骤,包括找出异常值、处理缺失值、过滤不合适值、去掉重复行、分箱、分组、排名、category转数值等,下面使用 pandas 解决这些最常见的预处理任务。

找出异常值常用两种方法:

  • 标准差法:异常值平均值上下1.96个标准差区间以外的值

  • 分位数法:小于 1/4分位数减去 1/4和3/4分位数差的1.5倍,大于3/4减去 1/4和3/4分位数差的1.5倍,都为异常值

技能1 :标准差法

import pandas as pd  df = pd.DataFrame({'a':[1,3,np.nan],'b':[4,np.nan,np.nan]})  # 异常值平均值上下1.96个标准差区间以外的值 meangrade = df['a'].mean() stdgrade = df['a'].std() toprange = meangrade + stdgrade * 1.96 botrange = meangrade - stdgrade * 1.96  # 过滤区间外的值 copydf = df copydfcopydf = copydf.drop(copydf[copydf['a']         > toprange].index) copydfcopydf = copydf.drop(copydf[copydf['a']         < botrange].index) copydf

技能2:分位数法

q1 = df['a'].quantile(.25) q3 = df['a'].quantile(.75) iqr = q3-q1 toprange = q3 + iqr * 1.5 botrange = q1 - iqr * 1.5  copydf = df copydfcopydf = copydf.drop(copydf[copydf['a']         > toprange].index) copydfcopydf = copydf.drop(copydf[copydf['a']         < botrange].index) copydf

技能3:处理空值

np.nan 是 pandas 中常见空值,使用 dropna 过滤空值,axis 0 表示按照行,1 表示按列,how 默认为 any ,意思是只要有一个 nan 就过滤某行或某列,all 所有都为 nan

# axis 0 表示按照行,all 此行所有值都为 nan df.dropna(axis=0, how='all')

技能4:充填空值

空值一般使用某个统计值填充,如平均数、众数、中位数等,使用函数 fillna:

# 使用a列平均数填充列的空值,inplace true表示就地填充 df["a"].fillna(df["a"].mean(), inplace=True)

技能5:修复不合适值

假如某门课最高分100,如果出现 -2, 120 这样的值,显然不合理,使用布尔类型的Series对象修改数值:

df.loc[(df['a'] < -2,'a')] = 0 df.loc[(df['a'] >= 100,'a')] = 100

技能6:过滤重复值

过滤某列重复值,使用 drop_duplicated 方法,第一个参数为列名,keep关键字等于last:最后一次出现此值行:

df.drop_duplicates(['Names'], keep='last')

技能7:apply 元素级:去掉特殊字符

某列单元格含有特殊字符,如标点符号,使用元素级操作方法 apply 干掉它们:

import string exclude = set(string.punctuation)  def remove_punctuation(x):     x = ''.join(ch for ch in x if ch not in exclude)     return x # 原df Out[26]:        a       b 0   c,d  edc.rc 1     3       3 2  d ef       4  # 过滤a列标点 In [27]: dfdf.a = df.a.apply(remove_punctuation)  In [28]: df                 Out[28]:        a       b 0    cd  edc.rc 1     3       3 2  d ef       4

技能8:cut 数据分箱

将百分制分数转为A,B,C,D四个等级,bins 被分为 [0,60,75,90,100],labels 等于['D', 'C', 'B', 'A']:

# 生成20个[0,100]的随机整数 In [30]: a = np.random.randint(1,100,20)                    In [31]: a                                     Out[31]:  array([48, 22, 46, 84, 13, 52, 36, 35, 27, 99, 31, 37, 15, 31,  5, 46, 98,99, 60, 43])  # cut分箱 In [33]: pd.cut(a, [0,60,75,90,100], labels = ['D', 'C', 'B', 'A'])              Out[33]:  [D, D, D, B, D, ..., D, A, A, D, D] Length: 20 Categories (4, object): [D < C < B < A]

技能9:rank 排名

rank 方法,生成数值排名,ascending 为False,分值越大,排名越靠前:

In [36]: df = pd.DataFrame({'a':[46, 98,99, 60, 43]} ))  In [53]: df['a'].rank(ascending=False)                    Out[53]:  0    4.0 1    2.0 2    1.0 3    3.0 4    5.0

技能10:category列转数值

某列取值只可能为有限个枚举值,往往需要转为数值,使用get_dummies,或自己定义函数:

pd.get_dummies(df['a'])

自定义函数,结合 apply:

def c2n(x):     if x=='A':         return 95     if x=='B':         return 80  df['a'].apply(c2n)

以上结合数据预处理的十个小任务,分别找到对应pandas中的实现。

以上是"如何使用pandas解决常见的预处理任务"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

技能 预处理 任务 常见 位数 数值 方法 标准 内容 函数 区间 数据 篇文章 处理 特殊 上下 元素 字符 常用 平均值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司排名 互联网科技公司的优势 厦门中拓互联网络科技有限公司 中国互联网科技发展 互联网金融科技平台 融贸通互联网科技 中盈科技互联网信息有限公司 科技与互联网哪个更好 贵州叶脉互联网科技有限公司所属行业 互联网科技革命什么开始 崇明区互联网教育科技售后服务 苏州铭阳互联网科技有限公司 中天科技中国工业互联网 江苏互联网智能科技软件 互联网硬科技公司 全球科技与互联网公司市值变化 互联网科技机房 互联网科技收购价值 网互联网络科技 互联网科技企业文化 互联网科技企业 金融科技 互联网金融 苏州大垚互联网科技 互联网科技有限公司 翻译 隆华科技工业互联网 黑科技 体验场景 互联网大会 南通创西澳互联网科技有限公司 易企秀互联网科技是做什么的 互联网科技和医药行业 优雇互联网科技有限公司
0