文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python优化数据预处理方法Pandaspipe详解

2024-04-02 19:55

关注

我们知道现实中的数据通常是杂乱无章的,需要大量的预处理才能使用。Pandas 是应用最广泛的数据分析和处理库之一,它提供了多种对原始数据进行预处理的方法。


import numpy as np
import pandas as pd
df = pd.DataFrame({
   "id": [100, 100, 101, 102, 103, 104, 105, 106],
   "A": [1, 2, 3, 4, 5, 2, np.nan, 5],
   "B": [45, 56, 48, 47, 62, 112, 54, 49],
   "C": [1.2, 1.4, 1.1, 1.8, np.nan, 1.4, 1.6, 1.5]
})
df

上述数据中 NaN 表示的缺失值,id 列包含重复的值,B 列中的 112 似乎是一个异常值。

这些就是现实数据中的一些典型问题。我们将创建一个管道来处理刚才描述的问题。对于每个任务,我们都需要一个函数。因此,首先是创建放置在管道中的函数。需要注意的是,管道中使用的函数需要将数据帧作为参数并返回数据帧。

第一个函数是处理缺少的值


def fill_missing_values(df):
   for col in df.select_dtypes(include= ["int","float"]).columns:
      val = df[col].mean()
      df[col].fillna(val, inplace=True)
   return df

我喜欢用列的平均值替换数字列中缺少的值,当然你也可以根据具体场景来定义。只要它将数据帧作为参数并返回数据帧,它就可以在管道中工作。

第二个函数是帮助我们删除重复的值


def drop_duplicates(df, column_name):
   df = df.drop_duplicates(subset=column_name)
   return df
 

调用 Pandas 内置的 drop duplicates 函数,它可以消除给定列中的重复值。

最后一个函数是用于消除异常值


def remove_outliers(df, column_list):
   for col in column_list:
      avg = df[col].mean()
      std = df[col].std()
      low = avg - 2 * std
      high = avg + 2 * std
      df = df[df[col].between(low, high, inclusive=True)]
   return df

此函数的作用如下:

与前面的函数一样,你可以选择自己的检测异常值的方法。

创建管道

我们现在有3个函数来进行数据预处理的任务。接下来就是使用这些函数创建管道。


df_processed = (df.pipe(fill_missing_values).pipe(drop_duplicates, "id").pipe(remove_outliers, ["A","B"]))

此管道按给定顺序执行函数。我们可以将参数和函数名一起传递给管道。

这里需要提到的一点是,管道中的一些函数修改了原始数据帧。因此,使用上述管道也将更新df。

解决此问题的一个方法是在管道中使用原始数据帧的副本。如果你不关心保持原始数据帧的原样,那么可以在管道中使用它。

我将更新管道,如下所示:


my_df = df.copy()
df_processed = (my_df.pipe(fill_missing_values).pipe(drop_duplicates, "id").pipe(remove_outliers, ["A","B"]))

让我们看一下原始数据帧和处理后的数据帧:

结论

当然,你可以通过单独使用这些函数来完成相同的任务。但是,管道函数提供了一种结构化和有组织的方式,可以将多个功能组合到单个操作中。

根据原始数据和任务,预处理可能包括更多步骤。可以根据需要在管道函数中添加任意数量的步骤。随着步骤数量的增加,与单独执行函数相比,管道函数的语法变得更清晰。

以上就是python优化数据预处理方法Pandas pipe详解的详细内容,更多关于pandas pipe数据预处理优化的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯