亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

pandas處理缺失值的10種策略

 更新時(shí)間:2024年05月23日 09:38:58   作者:手把手PythonAI編程  
使用強(qiáng)大的Pandas庫(kù)處理數(shù)據(jù)中的缺失值是邁向數(shù)據(jù)清洗高手的第一步,本文主要介紹了pandas處理缺失值的10種策略,具有一定的參考價(jià)值,感興趣的可以了解一下

一、引言

在數(shù)據(jù)分析的世界里,數(shù)據(jù)清洗是一項(xiàng)至關(guān)重要的前期工作。它猶如給食材去皮、洗凈、切片,讓它們成為一道道美味佳肴的原材料。對(duì)于Python初學(xué)者來(lái)說(shuō),掌握如何使用強(qiáng)大的Pandas庫(kù)處理數(shù)據(jù)中的缺失值是邁向數(shù)據(jù)清洗高手的第一步。本文將帶領(lǐng)您探索使用Pandas處理缺失值的10種策略,讓您在實(shí)戰(zhàn)中游刃有余。

二、準(zhǔn)備工作:導(dǎo)入Pandas庫(kù)與加載示例數(shù)據(jù)集

首先,確保已經(jīng)安裝了Pandas庫(kù),可通過(guò)以下命令進(jìn)行安裝:

pip install pandas

然后,我們創(chuàng)建一個(gè)簡(jiǎn)單的示例數(shù)據(jù)集example_data.csv,其中包含一些故意引入的缺失值(用NaN表示),以方便演示各種處理策略。以下代碼導(dǎo)入Pandas庫(kù)并加載數(shù)據(jù)集:

import pandas as pd

# 加載示例數(shù)據(jù)集
df = pd.read_csv("example_data.csv")
print(df)

輸出結(jié)果類(lèi)似如下:

   A    B    C    D
0  1  2.0  NaN  foo
1  2  NaN  7.0  bar
2  3  4.0  5.0  baz
3  4  NaN  6.0  qux
4  5  6.0  NaN  quux

接下來(lái),我們將逐一介紹并演示10種處理缺失值的策略。

三、策略1:直接刪除含有缺失值的行

有時(shí),當(dāng)數(shù)據(jù)集中存在大量缺失值,且對(duì)分析影響較小時(shí),可以選擇直接刪除含有缺失值的行。Pandas的dropna()方法可以輕松實(shí)現(xiàn)這一操作:

# 刪除含有缺失值的行
df_cleaned = df.dropna()
print(df_cleaned)

注意:刪除數(shù)據(jù)需謹(jǐn)慎,確保缺失值的分布不會(huì)嚴(yán)重影響分析結(jié)果。

四、策略2:刪除含有缺失值的列

如果某一列的缺失值過(guò)多,可能對(duì)該列的分析價(jià)值產(chǎn)生較大影響,這時(shí)可以考慮刪除整列。只需將dropna()方法的axis參數(shù)設(shè)置為1(代表列):

# 刪除含有缺失值的列
df_cleaned = df.dropna(axis=1)
print(df_cleaned)

五、策略3:填充缺失值(替換為固定值)

若希望將所有缺失值替換為某個(gè)固定的值(如0、-1或特定字符串),使用fillna()方法即可:

# 將所有缺失值替換為0
df_filled = df.fillna(0)
print(df_filled)

六、策略4:基于前一個(gè)非空值進(jìn)行向前填充

對(duì)于時(shí)間序列數(shù)據(jù)或其他有序數(shù)據(jù),有時(shí)會(huì)采用“前一個(gè)非空值”來(lái)填充缺失值。只需將fillna()方法的method參數(shù)設(shè)為ffill(forward fill):

# 基于前一個(gè)非空值進(jìn)行向前填充
df_filled = df.fillna(method='ffill')
print(df_filled)

七、策略5:基于后一個(gè)非空值進(jìn)行向后填充

與向前填充相反,向后填充(backfill)使用的是“后一個(gè)非空值”。只需將fillna()方法的method參數(shù)設(shè)為bfill

# 基于后一個(gè)非空值進(jìn)行向后填充
df_filled = df.fillna(method='bfill')
print(df_filled)

八、策略6:基于平均值、中位數(shù)或眾數(shù)填充缺失值

對(duì)于數(shù)值型數(shù)據(jù),可以計(jì)算列的平均值、中位數(shù)或眾數(shù),然后用這些統(tǒng)計(jì)量填充缺失值。分為兩步:

  • 計(jì)算統(tǒng)計(jì)量:
mean_A = df['A'].mean()
median_B = df['B'].median()
mode_C = df['C'].mode()[0]
  • 使用fillna()方法進(jìn)行填充:
df_filled_A = df['A'].fillna(mean_A)
df_filled_B = df['B'].fillna(median_B)
df_filled_C = df['C'].fillna(mode_C)

九、策略7:使用插值法填充缺失值

對(duì)于連續(xù)的數(shù)值型數(shù)據(jù),可以使用插值法進(jìn)行填充。Pandas支持線(xiàn)性插值和時(shí)間序列插值:

  • 線(xiàn)性插值:使用interpolate()方法,無(wú)需額外參數(shù):
df_interpolated = df.interpolate()
print(df_interpolated)
  • 時(shí)間序列插值:假設(shè)數(shù)據(jù)集有時(shí)間戳列(如datetime),則可使用method='time'參數(shù):
df['datetime'] = pd.to_datetime(df['datetime'])  # 轉(zhuǎn)換為datetime類(lèi)型
df_interpolated = df.set_index('datetime').interpolate(method='time').reset_index()
print(df_interpolated)

十、策略8:使用特定函數(shù)填充缺失值

如果您想根據(jù)數(shù)據(jù)特點(diǎn)自定義填充規(guī)則,可以編寫(xiě)一個(gè)函數(shù),然后通過(guò)applymap()方法應(yīng)用到整個(gè)數(shù)據(jù)框:

def custom_fillna(x):
    if isinstance(x, float) and pd.isnull(x):
        return 0  # 對(duì)浮點(diǎn)數(shù)缺失值填充0
    else:
        return x  # 其他情況保持原樣

df_custom_filled = df.applymap(custom_fillna)
print(df_custom_filled)

十一、策略9:利用機(jī)器學(xué)習(xí)模型預(yù)測(cè)缺失值

對(duì)于復(fù)雜的數(shù)據(jù)集,可以訓(xùn)練一個(gè)簡(jiǎn)單的機(jī)器學(xué)習(xí)模型(如線(xiàn)性回歸)來(lái)預(yù)測(cè)缺失值。以下是一個(gè)簡(jiǎn)化的示例:

from sklearn.linear_model import LinearRegression

# 假設(shè)D列有缺失值,用A、B、C列作為特征預(yù)測(cè)D列
X = df.dropna(subset=['D'])[['A', 'B', 'C']]
y = df.dropna(subset=['D'])['D']

model = LinearRegression().fit(X, y)

# 預(yù)測(cè)并填充缺失值
df['D_pred'] = model.predict(df[['A', 'B', 'C']])
df['D_filled'] = df['D'].fillna(df['D_pred'])
print(df)

十二、策略10:多重填充策略的組合運(yùn)用

實(shí)際工作中,可能需要結(jié)合多種策略靈活應(yīng)對(duì)不同情況。例如,先用眾數(shù)填充類(lèi)別變量,再用線(xiàn)性插值填充數(shù)值變量:

df_filled_categories = df.fillna(df.mode().iloc[0])
df_filled_numerics = df_filled_categories.interpolate()
print(df_filled_numerics)

十三、結(jié)論與實(shí)踐建議

處理數(shù)據(jù)中的缺失值沒(méi)有絕對(duì)的“最佳實(shí)踐”,應(yīng)根據(jù)數(shù)據(jù)特性和分析目標(biāo)靈活選擇合適的方法。理解并熟練運(yùn)用Pandas提供的工具,結(jié)合實(shí)際情況創(chuàng)新組合策略,將使你在數(shù)據(jù)清洗的道路上更加自信從容。

到此這篇關(guān)于pandas處理缺失值的10種策略的文章就介紹到這了,更多相關(guān)pandas 缺失值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)方便使用的級(jí)聯(lián)進(jìn)度信息實(shí)例

    Python實(shí)現(xiàn)方便使用的級(jí)聯(lián)進(jìn)度信息實(shí)例

    這篇文章主要介紹了Python實(shí)現(xiàn)方便使用的級(jí)聯(lián)進(jìn)度信息,實(shí)例分析了Python顯示級(jí)聯(lián)進(jìn)度信息的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-05-05
  • 解決使用pip安裝報(bào)錯(cuò):Microsoft?Visual?C++?14.0?is?required.

    解決使用pip安裝報(bào)錯(cuò):Microsoft?Visual?C++?14.0?is?required.

    對(duì)于程序員來(lái)說(shuō),經(jīng)常pip安裝自己所需要的包,大部分的包基本都能安裝,但是總會(huì)遇到包安裝不了的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于如何解決使用pip安裝報(bào)錯(cuò):Microsoft?Visual?C++?14.0?is?required.的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 使用Matplotlib繪制不同顏色的帶箭頭的線(xiàn)實(shí)例

    使用Matplotlib繪制不同顏色的帶箭頭的線(xiàn)實(shí)例

    這篇文章主要介紹了使用Matplotlib繪制不同顏色的帶箭頭的線(xiàn)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • 使用Python代碼進(jìn)行PowerPoint演示文稿的合并與拆分

    使用Python代碼進(jìn)行PowerPoint演示文稿的合并與拆分

    多個(gè)PowerPoint演示文稿的處理可能會(huì)成為非常麻煩的工作,有時(shí)需要將多個(gè)演示文稿合并為一個(gè)演示文稿,從而不用在演示時(shí)重復(fù)打開(kāi)演示文稿,本文我們可以使用Python代碼來(lái)快速、準(zhǔn)確的執(zhí)行PowerPoint演示文稿的合并于拆分操作,需要的朋友可以參考下
    2024-03-03
  • python按行讀取文件,去掉每行的換行符\n的實(shí)例

    python按行讀取文件,去掉每行的換行符\n的實(shí)例

    下面小編就為大家分享一篇python按行讀取文件,去掉每行的換行符\n的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python基于類(lèi)路徑字符串獲取靜態(tài)屬性

    Python基于類(lèi)路徑字符串獲取靜態(tài)屬性

    這篇文章主要介紹了Python基于類(lèi)路徑字符串獲取靜態(tài)屬性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)間數(shù)據(jù)同步功能

    python實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)間數(shù)據(jù)同步功能

    這篇文章主要介紹了python實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)間數(shù)據(jù)同步功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 一文搞懂???????python可迭代對(duì)象,迭代器,生成器,協(xié)程

    一文搞懂???????python可迭代對(duì)象,迭代器,生成器,協(xié)程

    這篇文章主要介紹了一文搞懂???????python可迭代對(duì)象,迭代器,生成器,協(xié)程,微博吱嘎部分圍繞主題展開(kāi)詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Django框架驗(yàn)證碼用法實(shí)例分析

    Django框架驗(yàn)證碼用法實(shí)例分析

    這篇文章主要介紹了Django框架驗(yàn)證碼用法,結(jié)合實(shí)例形式分析了Python Django框架驗(yàn)證碼的功能、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • 如何用Python讀取pdf中的文字與表格

    如何用Python讀取pdf中的文字與表格

    這篇文章主要介紹了如何在Python中安裝和使用PyPDF2和pdfplumber庫(kù)來(lái)處理PDF文件,包括安裝步驟、庫(kù)的使用方法以及它們?cè)谔崛∥谋竞捅砀穹矫娴牟煌瑑?yōu)勢(shì),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-11-11

最新評(píng)論