五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

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

發(fā)布日期:2021-12-08 19:55 | 文章來源:CSDN

我們知道現(xiàn)實中的數(shù)據(jù)通常是雜亂無章的,需要大量的預(yù)處理才能使用。Pandas 是應(yīng)用最廣泛的數(shù)據(jù)分析和處理庫之一,它提供了多種對原始數(shù)據(jù)進(jìn)行預(yù)處理的方法。

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

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

這些就是現(xiàn)實數(shù)據(jù)中的一些典型問題。我們將創(chuàng)建一個管道來處理剛才描述的問題。對于每個任務(wù),我們都需要一個函數(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ù)字列中缺少的值,當(dāng)然你也可以根據(jù)具體場景來定義。只要它將數(shù)據(jù)幀作為參數(shù)并返回數(shù)據(jù)幀,它就可以在管道中工作。

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

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

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

最后一個函數(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ù)幀和一列列表
  • 對于列表中的每一列,它計算平均值和標(biāo)準(zhǔn)偏差
  • 計算標(biāo)準(zhǔn)差,并使用下限平均值
  • 刪除下限和上限定義的范圍之外的值

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

創(chuàng)建管道

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

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

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

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

解決此問題的一個方法是在管道中使用原始數(shù)據(jù)幀的副本。如果你不關(guān)心保持原始數(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ù)幀:

結(jié)論

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

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

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

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部