激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

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

服務(wù)器之家 - 腳本之家 - Python - 利用pandas進(jìn)行數(shù)據(jù)清洗的方法

利用pandas進(jìn)行數(shù)據(jù)清洗的方法

2022-01-10 00:40sharon@zhang Python

本文主要介紹了利用pandas進(jìn)行數(shù)據(jù)清洗的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

我們有下面的一個(gè)數(shù)據(jù),利用其做簡(jiǎn)單的數(shù)據(jù)分析。

利用pandas進(jìn)行數(shù)據(jù)清洗的方法

這是一家服裝店統(tǒng)計(jì)的會(huì)員數(shù)據(jù)。最上面的一行是列坐標(biāo),最左側(cè)一列是行坐標(biāo)。列坐標(biāo)中,第 0 列代表的是序號(hào),第 1 列代表的會(huì)員的姓名,第 2 列代表年齡,第 3 列代表體重,第 4~6 列代表男性會(huì)員的三圍尺寸,第 7~9 列代表女性會(huì)員的三圍尺寸。

數(shù)據(jù)清洗規(guī)則總結(jié)為以下 4 個(gè)關(guān)鍵點(diǎn),統(tǒng)一起來叫“完全合一”,下面來解釋下:

  • 完整性:?jiǎn)螚l數(shù)據(jù)是否存在空值,統(tǒng)計(jì)的字段是否完善。
  • 全面性:觀察某一列的全部數(shù)值,比如在 Excel 表中,我們選中一列,可以看到該列的平均值、最大值、最小值。我們可以通過常識(shí)來判斷該列是否有問題,比如:數(shù)據(jù)定義、單位標(biāo)識(shí)、數(shù)值本身。
  • 合法性:數(shù)據(jù)的類型、內(nèi)容、大小的合法性。比如數(shù)據(jù)中存在非 ASCII 字符,性別存在了未知,年齡超過了 150 歲等。
  • 唯一性:數(shù)據(jù)是否存在重復(fù)記錄,因?yàn)閿?shù)據(jù)通常來自不同渠道的匯總,重復(fù)的情況是常見的。行數(shù)據(jù)、列數(shù)據(jù)都需要是唯一的,比如一個(gè)人不能重復(fù)記錄多次,且一個(gè)人的體重也不能在列指標(biāo)中重復(fù)記錄多次。

1、完整性

1.1 缺失值

一般情況下,由于數(shù)據(jù)量巨大,在采集數(shù)據(jù)的過程中,會(huì)出現(xiàn)有些數(shù)據(jù)單元沒有被采集到,也就是數(shù)據(jù)存在缺失。通常面對(duì)這種情況,我們可以采用以下三種方法:

  • 刪除:刪除數(shù)據(jù)缺失的記錄
  • 均值:使用當(dāng)前列的均值填充
  • 高頻:使用當(dāng)前列出現(xiàn)頻率最高的數(shù)據(jù)

比如我們相對(duì)data[‘Age']中缺失的數(shù)值使用平均年齡進(jìn)行填充,可以寫:

)

如果我們用最高頻的數(shù)據(jù)進(jìn)行填充,可以先通過 value_counts 獲取 Age 字段最高頻次 age_maxf,然后再對(duì) Age 字段中缺失的數(shù)據(jù)用 age_maxf 進(jìn)行填充:

train_features['Age'].fillna(age_maxf, inplace=True)

1.2 空行

我們發(fā)現(xiàn)數(shù)據(jù)中有一個(gè)空行,除了 index 之外,全部的值都是 NaN。Pandas 的 read_csv() 并沒有可選參數(shù)來忽略空行,這樣,我們就需要在數(shù)據(jù)被讀入之后再使用 dropna() 進(jìn)行處理,刪除空行。

df.dropna(how='all',inplace=True) 

2、全面性

列數(shù)據(jù)的單位不統(tǒng)一

如果某一列數(shù)據(jù)其單位并不統(tǒng)一,比如weight列,有的單位為千克(Kgs),有的單位是磅(Lbs)。
這里我們使用千克作為統(tǒng)一的度量單位,將磅轉(zhuǎn)化為千克:

rows_with_lbs = df['weight'].str.contains('lbs').fillna(False)
print df[rows_with_lbs]
# 將 lbs轉(zhuǎn)換為 kgs, 2.2lbs=1kgs
for i,lbs_row in df[rows_with_lbs].iterrows():
  # 截取從頭開始到倒數(shù)第三個(gè)字符之前,即去掉lbs。
  weight = int(float(lbs_row['weight'][:-3])/2.2)
  df.at[i,'weight'] = '{}kgs'.format(weight) 

3、合理性

 非ASCII字符

假設(shè)在數(shù)據(jù)集中 Firstname 和 Lastname 有一些非 ASCII 的字符。我們可以采用刪除或者替換的方式來解決非 ASCII 問題,這里我們使用刪除方法,也就是用replace方法:

df['first_name'].replace({r'[^\x00-\x7F]+':''}, regex=True, inplace=True)
df['last_name'].replace({r'[^\x00-\x7F]+':''}, regex=True, inplace=True)

4、唯一性

4.1 一列有多個(gè)參數(shù)

假設(shè)姓名(Name)包含了兩個(gè)參數(shù) Firstname和Lastname。為了達(dá)到數(shù)據(jù)整潔的目的,我們將 Name 列拆分成 Firstname 和 Lastname 兩個(gè)字段。我們使用 Python 的 split 方法,str.split(expand=True),將列表拆成新的列,再將原來的 Name 列刪除。

df[['first_name','last_name']] = df['name'].str.split(expand=True)
df.drop('name', axis=1, inplace=True)

4.2 重復(fù)數(shù)據(jù)

我們校驗(yàn)一下數(shù)據(jù)中是否存在重復(fù)記錄。如果存在重復(fù)記錄,就使用 Pandas 提供的 drop_duplicates() 來刪除重復(fù)數(shù)據(jù)。

df.drop_duplicates(['first_name','last_name'],inplace=True)

這樣,我們就將上面案例中中的會(huì)員數(shù)據(jù)進(jìn)行了清理,來看看清理之后的數(shù)據(jù)結(jié)果。

利用pandas進(jìn)行數(shù)據(jù)清洗的方法

到此這篇關(guān)于利用pandas進(jìn)行數(shù)據(jù)清洗的方法的文章就介紹到這了,更多相關(guān)pandas 數(shù)據(jù)清洗內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

原文鏈接:https://blog.csdn.net/baidu_41797613/article/details/120420358

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产视频在线观看一区二区三区 | 免费在线观看成人av | 91精品动漫在线观看 | 俄罗斯16一20sex牲色另类 | 午夜视 | 精品久久久久久 | 国产资源在线观看 | 欧美福利视频一区二区三区 | 18一20岁一级毛片 | 黄色毛片视频在线观看 | 欧美性色生活片免费播放 | 精品国产乱码一区二区三区四区 | chinesehdxxxx无套| 嫩草91在线 | 精品爱爱| 久久综合爱 | 免费福利在线视频 | 日本黄色一级电影 | 久久久久久艹 | 欧美人人干 | 97久久曰曰久久久 | 国产精品成人一区 | 欧美一级高清片 | 午夜伊人| 夫妻性生活交换 | 欧美视屏一区二区 | 国产成人精品网站 | 黄片一级毛片 | 亚洲国产高清视频 | 欧美成人一区二区三区 | 亚洲一二区精品 | 久久亚洲线观看视频 | 中文字幕在线播放不卡 | 黄视频网站免费在线观看 | 亚洲精品成人久久久 | 天天好比网 | 久久99精品久久久久久秒播蜜臀 | 91久久国产综合久久91猫猫 | 国产午夜精品视频免费不卡69堂 | 超碰97国产在线 | 欧美精品电影一区 |