欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python數(shù)據(jù)預(yù)處理時缺失值的不同處理方式總結(jié)

 更新時間:2022年12月22日 08:15:23   作者:Python 集中營  
在使用python做數(shù)據(jù)分析的時候,經(jīng)常需要先對數(shù)據(jù)做統(tǒng)一化的處理,缺失值的處理是經(jīng)常會使用到的。今天介紹的是使用差補法/均值/固定值等不同的方式完成數(shù)據(jù)填充從而保證數(shù)據(jù)的完整性,感興趣的可以了解一下

在使用python做數(shù)據(jù)分析的時候,經(jīng)常需要先對數(shù)據(jù)做統(tǒng)一化的處理,缺失值的處理是經(jīng)常會使用到的。

一般情況下,缺失值的處理要么是刪除缺失數(shù)據(jù)所在的行,要么就是對缺失的單元格數(shù)據(jù)進(jìn)行填充。

今天介紹的是使用差補法/均值/固定值等不同的方式完成數(shù)據(jù)填充從而保證數(shù)據(jù)的完整性!

這里采用的還是pandas模塊的DataFrame數(shù)據(jù)對象來做數(shù)據(jù)處理,因此,沒有pandas的話使用pip的方式安裝一下即可。

pip?install?pandas

下面是我們需要處理的源數(shù)據(jù),由于是本地測試數(shù)據(jù),數(shù)據(jù)量比較小。

使用pandas模塊的read_excel函數(shù)將源數(shù)據(jù)全部讀取出來返回DataFrame對象。

#?Importing?the?pandas?module?and?giving?it?the?alias?pd.
import?pandas?as?pd

#?Reading?the?excel?file?and?storing?it?in?a?dataframe.
data_frame?=?pd.read_excel('D:/test-data-work/data.xlsx')

#?Printing?the?dataframe.
print(data_frame)

#???????????姓名??????年齡??????班級?????成績???表現(xiàn)
#?0???Python?集中營??10.0??1210.0???99.0????A
#?1???Python?集中營??11.0??1211.0??100.0????A
#?2???Python?集中營??12.0??1212.0??101.0????A
#?3???Python?集中營??13.0??1213.0??102.0????A
#?4???Python?集中營??14.0??1214.0??103.0??NaN
#?5???Python?集中營??15.0??1215.0??104.0????A
#?6???Python?集中營??16.0??1216.0??105.0????A
#?7???Python?集中營??17.0?????NaN??106.0????A
#?8???Python?集中營??18.0??1218.0????NaN????A
#?9???Python?集中營??19.0??1219.0??108.0????A
#?10??Python?集中營???NaN??1220.0??109.0??NaN
#?11??Python?集中營???NaN?????NaN??110.0????A
#?12??Python?集中營???NaN??1222.0????NaN????A
#?13??Python?集中營??23.0??1223.0??112.0????A
#?14??Python?集中營??24.0??1224.0??113.0????A
#?15??Python?集中營??25.0?????NaN????NaN??NaN
#?16??Python?集中營???NaN??1226.0??115.0????A
#?17??Python?集中營??27.0??1227.0????NaN????A
#?18??Python?集中營??10.0??1210.0???99.0??NaN

源數(shù)據(jù)已經(jīng)讀取完成了,接下來使用四種常見的缺失值的處理方式來進(jìn)行批量的數(shù)據(jù)填充。

1. 固定值填充

固定值填充也是一種比較簡單并且常用的填充方式,只需要給某個列填充自己想要填充的值即可。

這里我們把'表現(xiàn)'這一個列的空值全部填充成'B',fillna函數(shù)就是填充空值的意思。

#?Replacing?all?the?NaN?values?in?the?column?'表現(xiàn)'?with?the?value?'B'.
data_frame['表現(xiàn)']?=?data_frame['表現(xiàn)'].fillna('B')

#?Printing?the?dataframe.
print(data_frame)

#???????????姓名??????年齡??????班級?????成績?表現(xiàn)
#?0???Python?集中營??10.0??1210.0???99.0??A
#?1???Python?集中營??11.0??1211.0??100.0??A
#?2???Python?集中營??12.0??1212.0??101.0??A
#?3???Python?集中營??13.0??1213.0??102.0??A
#?4???Python?集中營??14.0??1214.0??103.0??B
#?5???Python?集中營??15.0??1215.0??104.0??A
#?6???Python?集中營??16.0??1216.0??105.0??A
#?7???Python?集中營??17.0?????NaN??106.0??A
#?8???Python?集中營??18.0??1218.0????NaN??A
#?9???Python?集中營??19.0??1219.0??108.0??A
#?10??Python?集中營???NaN??1220.0??109.0??B
#?11??Python?集中營???NaN?????NaN??110.0??A
#?12??Python?集中營???NaN??1222.0????NaN??A
#?13??Python?集中營??23.0??1223.0??112.0??A
#?14??Python?集中營??24.0??1224.0??113.0??A
#?15??Python?集中營??25.0?????NaN????NaN??B
#?16??Python?集中營???NaN??1226.0??115.0??A
#?17??Python?集中營??27.0??1227.0????NaN??A
#?18??Python?集中營??10.0??1210.0???99.0??B

2. 均值填充

均值填充就是將缺失值所在列的數(shù)據(jù)進(jìn)行一次均值計算,計算出結(jié)果后再填充到缺失值所在的單元格上面。

使用均值填充的前提是這一列的數(shù)據(jù)可以進(jìn)行均值計算,比如'成績'這一列都是數(shù)字可以使用mean函數(shù)做均值計算。

#?Replacing?all?the?NaN?values?in?the?column?'成績'?with?the?mean?of?the?column?'成績'.
data_frame['成績']?=?data_frame['成績'].fillna(data_frame['成績'].mean())

#?It's?printing?the?dataframe.
print(data_frame)

#???????????姓名??????年齡??????班級??????????成績?表現(xiàn)
#?0???Python?集中營??10.0??1210.0???99.000000??A
#?1???Python?集中營??11.0??1211.0??100.000000??A
#?2???Python?集中營??12.0??1212.0??101.000000??A
#?3???Python?集中營??13.0??1213.0??102.000000??A
#?4???Python?集中營??14.0??1214.0??103.000000??B
#?5???Python?集中營??15.0??1215.0??104.000000??A
#?6???Python?集中營??16.0??1216.0??105.000000??A
#?7???Python?集中營??17.0?????NaN??106.000000??A
#?8???Python?集中營??18.0??1218.0??105.733333??A
#?9???Python?集中營??19.0??1219.0??108.000000??A
#?10??Python?集中營???NaN??1220.0??109.000000??B
#?11??Python?集中營???NaN?????NaN??110.000000??A
#?12??Python?集中營???NaN??1222.0??105.733333??A
#?13??Python?集中營??23.0??1223.0??112.000000??A
#?14??Python?集中營??24.0??1224.0??113.000000??A
#?15??Python?集中營??25.0?????NaN??105.733333??B
#?16??Python?集中營???NaN??1226.0??115.000000??A
#?17??Python?集中營??27.0??1227.0??105.733333??A
#?18??Python?集中營??10.0??1210.0???99.000000??B

可以發(fā)現(xiàn)計算出的均值是105.733333,已經(jīng)都填充到'成績'這一列的缺失值上面了。

3. 中位數(shù)填充

中位數(shù)填充和均值填充差不多是一樣的,不同的是使用median函數(shù)來計算缺失值所在列的中位數(shù)。

#?Replacing?all?the?NaN?values?in?the?column?'年齡'?with?the?median?of?the?column?'年齡'.
data_frame['年齡']?=?data_frame['年齡'].fillna(data_frame['年齡'].median())

#?It's?printing?the?dataframe.
print(data_frame)

#???????????姓名??????年齡??????班級??????????成績?表現(xiàn)
#?0???Python?集中營??10.0??1210.0???99.000000??A
#?1???Python?集中營??11.0??1211.0??100.000000??A
#?2???Python?集中營??12.0??1212.0??101.000000??A
#?3???Python?集中營??13.0??1213.0??102.000000??A
#?4???Python?集中營??14.0??1214.0??103.000000??B
#?5???Python?集中營??15.0??1215.0??104.000000??A
#?6???Python?集中營??16.0??1216.0??105.000000??A
#?7???Python?集中營??17.0?????NaN??106.000000??A
#?8???Python?集中營??18.0??1218.0??105.733333??A
#?9???Python?集中營??19.0??1219.0??108.000000??A
#?10??Python?集中營??16.0??1220.0??109.000000??B
#?11??Python?集中營??16.0?????NaN??110.000000??A
#?12??Python?集中營??16.0??1222.0??105.733333??A
#?13??Python?集中營??23.0??1223.0??112.000000??A
#?14??Python?集中營??24.0??1224.0??113.000000??A
#?15??Python?集中營??25.0?????NaN??105.733333??B
#?16??Python?集中營??16.0??1226.0??115.000000??A
#?17??Python?集中營??27.0??1227.0??105.733333??A
#?18??Python?集中營??10.0??1210.0???99.000000??B

4. 插補法填充

差補法填充可以根據(jù)該列的上一個數(shù)據(jù)和下一個數(shù)據(jù)得到該單元格需要插入的數(shù)據(jù)是多少。

比如:上一個班級是1220,下一個班級是1222,那么該單元格需要插入的數(shù)據(jù)應(yīng)該是1221。

#?Replacing?all?the?NaN?values?in?the?column?'班級'?with?the?interpolated?values?of?the?column?'班級'.
data_frame['班級']?=?data_frame['班級'].interpolate()

#?It's?printing?the?dataframe.
print(data_frame)

#???????????姓名??????年齡??????班級??????????成績?表現(xiàn)
#?0???Python?集中營??10.0??1210.0???99.000000??A
#?1???Python?集中營??11.0??1211.0??100.000000??A
#?2???Python?集中營??12.0??1212.0??101.000000??A
#?3???Python?集中營??13.0??1213.0??102.000000??A
#?4???Python?集中營??14.0??1214.0??103.000000??B
#?5???Python?集中營??15.0??1215.0??104.000000??A
#?6???Python?集中營??16.0??1216.0??105.000000??A
#?7???Python?集中營??17.0??1217.0??106.000000??A
#?8???Python?集中營??18.0??1218.0??105.733333??A
#?9???Python?集中營??19.0??1219.0??108.000000??A
#?10??Python?集中營??16.0??1220.0??109.000000??B
#?11??Python?集中營??16.0??1221.0??110.000000??A
#?12??Python?集中營??16.0??1222.0??105.733333??A
#?13??Python?集中營??23.0??1223.0??112.000000??A
#?14??Python?集中營??24.0??1224.0??113.000000??A
#?15??Python?集中營??25.0??1225.0??105.733333??B
#?16??Python?集中營??16.0??1226.0??115.000000??A
#?17??Python?集中營??27.0??1227.0??105.733333??A
#?18??Python?集中營??10.0??1210.0???99.000000??B

到此這篇關(guān)于Python數(shù)據(jù)預(yù)處理時缺失值的不同處理方式總結(jié)的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)預(yù)處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中使用插入排序算法的簡單分析與代碼示例

    Python中使用插入排序算法的簡單分析與代碼示例

    這篇文章主要介紹了Python使用插入排序算法的簡單分析與代碼示例,插入算法的平均時間復(fù)雜度為O(n^2),需要的朋友可以參考下
    2016-05-05
  • Python中使用遍歷在列表中添加字典遇到的坑

    Python中使用遍歷在列表中添加字典遇到的坑

    今天小編就為大家分享一篇關(guān)于Python中使用遍歷在列表中添加字典遇到的坑,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Scrapy 配置動態(tài)代理IP的實現(xiàn)

    Scrapy 配置動態(tài)代理IP的實現(xiàn)

    這篇文章主要介紹了Scrapy 配置動態(tài)代理IP的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python批量刪除txt文本指定行的思路與代碼

    Python批量刪除txt文本指定行的思路與代碼

    在深度學(xué)習(xí)項目中常常會處理各種數(shù)據(jù)集,下面這篇文章主要給大家介紹了關(guān)于Python批量刪除txt文本指定行的思路與代碼,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • python 使用pandas讀取csv文件的方法

    python 使用pandas讀取csv文件的方法

    這篇文章主要介紹了python 使用pandas讀取csv文件的方法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • tensorflow 只恢復(fù)部分模型參數(shù)的實例

    tensorflow 只恢復(fù)部分模型參數(shù)的實例

    今天小編就為大家分享一篇tensorflow 只恢復(fù)部分模型參數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python使用OpenCV實現(xiàn)多目標(biāo)跟蹤

    python使用OpenCV實現(xiàn)多目標(biāo)跟蹤

    這篇文章主要介紹了python使用OpenCV實現(xiàn)多目標(biāo)跟蹤,如何在OpenCV中使用MultiTracker類實現(xiàn)多目標(biāo)跟蹤API。在深入了解詳細(xì)信息之前,請查看下面列出的關(guān)于目標(biāo)跟蹤的帖子,以了解在OpenCV中實現(xiàn)的單個目標(biāo)跟蹤器的基礎(chǔ)知識,需要的朋友可以參考一下
    2022-04-04
  • django自帶serializers序列化返回指定字段的方法

    django自帶serializers序列化返回指定字段的方法

    今天小編就為大家分享一篇django自帶serializers序列化返回指定字段的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python數(shù)據(jù)持久化shelve模塊用法分析

    Python數(shù)據(jù)持久化shelve模塊用法分析

    這篇文章主要介紹了Python數(shù)據(jù)持久化shelve模塊用法,結(jié)合實例形式較為詳細(xì)的總結(jié)分析了shelve模塊的功能、原理及簡單使用方法,需要的朋友可以參考下
    2018-06-06
  • python中is與雙等于號“==”的區(qū)別示例詳解

    python中is與雙等于號“==”的區(qū)別示例詳解

    Python中有很多運算符,下面這篇文章主要給大家介紹了關(guān)于python中is與雙等于號“==”區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11

最新評論