一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python優(yōu)化數(shù)據(jù)預處理方法Pandas pipe詳解

python優(yōu)化數(shù)據(jù)預處理方法Pandas pipe詳解

2022-03-05 14:21Python學習與數(shù)據(jù)挖掘 Python

在本文中,我們將重點討論一個將多個預處理操作組織成單個操作的特定函數(shù):pipe。我將通過示例方式來展示如何使用它,讓我們從數(shù)據(jù)創(chuàng)建數(shù)據(jù)幀開始吧

我們知道現(xiàn)實中的數(shù)據(jù)通常是雜亂無章的,需要大量的預處理才能使用。

Pandas 是應用最廣泛的數(shù)據(jù)分析和處理庫之一,它提供了多種對原始數(shù)據(jù)進行預處理的方法。

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

python優(yōu)化數(shù)據(jù)預處理方法Pandas pipe詳解

上述數(shù)據(jù)中 NaN 表示的缺失值,id 列包含重復的值,B 列中的 112 似乎是一個異常值。

這些就是現(xiàn)實數(shù)據(jù)中的一些典型問題。我們將創(chuàng)建一個管道來處理剛才描述的問題。對于每個任務,我們都需要一個函數(shù)。因此,首先是創(chuàng)建放置在管道中的函數(shù)。需要注意的是,管道中使用的函數(shù)需要將數(shù)據(jù)幀作為參數(shù)并返回數(shù)據(jù)幀。

 

第一個函數(shù)是處理缺少的值

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

我喜歡用列的平均值替換數(shù)字列中缺少的值,當然你也可以根據(jù)具體場景來定義。只要它將數(shù)據(jù)幀作為參數(shù)并返回數(shù)據(jù)幀,它就可以在管道中工作。

 

第二個函數(shù)是幫助我們刪除重復的值

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

調(diào)用 Pandas 內(nèi)置的 drop duplicates 函數(shù),它可以消除給定列中的重復值。

 

最后一個函數(shù)是用于消除異常值

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

此函數(shù)的作用如下:

  • 需要一個數(shù)據(jù)幀和一列列表
  • 對于列表中的每一列,它計算平均值和標準偏差
  • 計算標準差,并使用下限平均值
  • 刪除下限和上限定義的范圍之外的值

與前面的函數(shù)一樣,你可以選擇自己的檢測異常值的方法。

 

創(chuàng)建管道

我們現(xiàn)在有3個函數(shù)來進行數(shù)據(jù)預處理的任務。接下來就是使用這些函數(shù)創(chuàng)建管道。

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

此管道按給定順序執(zhí)行函數(shù)。我們可以將參數(shù)和函數(shù)名一起傳遞給管道。

這里需要提到的一點是,管道中的一些函數(shù)修改了原始數(shù)據(jù)幀。因此,使用上述管道也將更新df。

解決此問題的一個方法是在管道中使用原始數(shù)據(jù)幀的副本。如果你不關心保持原始數(shù)據(jù)幀的原樣,那么可以在管道中使用它。

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

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

讓我們看一下原始數(shù)據(jù)幀和處理后的數(shù)據(jù)幀:

python優(yōu)化數(shù)據(jù)預處理方法Pandas pipe詳解

python優(yōu)化數(shù)據(jù)預處理方法Pandas pipe詳解

 

結(jié)論

當然,你可以通過單獨使用這些函數(shù)來完成相同的任務。但是,管道函數(shù)提供了一種結(jié)構(gòu)化和有組織的方式,可以將多個功能組合到單個操作中。

根據(jù)原始數(shù)據(jù)和任務,預處理可能包括更多步驟。可以根據(jù)需要在管道函數(shù)中添加任意數(shù)量的步驟。隨著步驟數(shù)量的增加,與單獨執(zhí)行函數(shù)相比,管道函數(shù)的語法變得更清晰。

以上就是python優(yōu)化數(shù)據(jù)預處理方法Pandas pipe詳解的詳細內(nèi)容,更多關于pandas pipe數(shù)據(jù)預處理優(yōu)化的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/weixin_38037405/article/details/119301610

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产午夜不卡 | 国产亚洲精品aaa大片 | 欧美精品一二三区 | 楚乔传第二部免费播放电视连续剧 | 美女免费观看一区二区三区 | 91精品导航在线观看 | 成人免费在线视频观看 | 性德国高清xxxxbbbb | 国内精品伊人久久大香线焦 | 三极片在线观看 | 啊好大好粗 | www视频免费看 | 91高清国产视频 | chinese特色video | 九九精品国产兔费观看久久 | 国产另类视频一区二区三区 | 四虎影库紧急大通知 | 日本特级a禁片在线播放 | 成人中文字幕在线观看 | 麻豆找网服 | 国产成人精品一区二三区在线观看 | 久久精品国产免费播高清无卡 | 亚洲国产精品综合久久一线 | 短篇小说肉 | 色老板成人永久免费视频 | 欧美1区 | caopren免费视频国产 | 污网站免费观看在线高清 | 羲义嫁密着中出交尾gvg794 | 亚洲国产一区二区三区青草影视 | 欧美色精品天天在线观看视频 | 白鹿扒开内裤露出尿孔 | 亚洲2023无矿砖码砖区 | 国产18在线| 久久re这里精品在线视频7 | 日本欧美不卡一区二区三区在线 | 欧美国产精品久久 | 果冻传媒天美传媒在线小视频播放 | 美国video | 国产精品一区二区不卡的视频 | 91精品手机国产露脸 |