您好,登录后才能下订单哦!
本篇内容主要讲解“python优化数据预处理方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python优化数据预处理方法是什么”吧!
我们知道现实中的数据通常是杂乱无章的,需要大量的预处理才能使用。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优化数据预处理方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。