最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年09月23日 16:04:58   作者:sharon@zhang  
本文主要介紹了利用pandas進行數(shù)據(jù)清洗的方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

在這里插入圖片描述

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

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

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

1、完整性

1.1 缺失值

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

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

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

df['Age'].fillna(df['Age'].mean(), inplace=True)

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

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

1.2 空行

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

# 刪除全空的行
df.dropna(how='all',inplace=True) 

2、全面性

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

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

# 獲取 weight 數(shù)據(jù)列中單位為 lbs 的數(shù)據(jù)
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ù)第三個字符之前,即去掉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方法:

# 刪除非 ASCII 字符
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 一列有多個參數(shù)

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

# 切分名字,刪除源數(shù)據(jù)列
df[['first_name','last_name']] = df['name'].str.split(expand=True)
df.drop('name', axis=1, inplace=True)

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

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

# 刪除重復(fù)數(shù)據(jù)行
df.drop_duplicates(['first_name','last_name'],inplace=True)

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

在這里插入圖片描述

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

相關(guān)文章

  • Python之freegames?零代碼的22個小游戲集合

    Python之freegames?零代碼的22個小游戲集合

    這篇文章主要介紹了,Python之freegames?零代碼的22個小游戲集合,文章內(nèi)容詳細,簡單易懂,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2023-01-01
  • python 定時任務(wù)去檢測服務(wù)器端口是否通的實例

    python 定時任務(wù)去檢測服務(wù)器端口是否通的實例

    今天小編就為大家分享一篇python 定時任務(wù)去檢測服務(wù)器端口是否通的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python Flask框架擴展操作示例

    Python Flask框架擴展操作示例

    這篇文章主要介紹了Python Flask框架擴展操作,結(jié)合實例形式分析了Python Flask-Script擴展命令行操作實現(xiàn)方法,需要的朋友可以參考下
    2019-05-05
  • Django csrf 兩種方法設(shè)置form的實例

    Django csrf 兩種方法設(shè)置form的實例

    今天小編就為大家分享一篇Django csrf 兩種方法設(shè)置form的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 教你使用Psycopg2連接openGauss的方法

    教你使用Psycopg2連接openGauss的方法

    Psycopg是一種用于執(zhí)行SQL語句的PythonAPI,可以為PostgreSQL、openGauss數(shù)據(jù)庫提供統(tǒng)一訪問接口,應(yīng)用程序可基于它進行數(shù)據(jù)操作,這篇文章主要介紹了教你使用Psycopg2連接openGauss的方法,需要的朋友可以參考下
    2022-11-11
  • 6行Python代碼實現(xiàn)進度條效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI庫)

    6行Python代碼實現(xiàn)進度條效果(Progress、tqdm、alive-progress​​

    這篇文章主要介紹了6行Python代碼實現(xiàn)進度條效果(Progress、tqdm、alive-progress和PySimpleGUI庫),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • Python獲取接口數(shù)據(jù)的實現(xiàn)示例

    Python獲取接口數(shù)據(jù)的實現(xiàn)示例

    本文主要介紹了Python獲取接口數(shù)據(jù)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • 詳解如何使用Pyecharts制作Map3D

    詳解如何使用Pyecharts制作Map3D

    本文基于 Python3 的 Pyecharts 制作 Map3D(三維地圖) 時需要使用的設(shè)置參數(shù)和常用模板案例,使用 Pyecharts 進行數(shù)據(jù)可視化時可提供直觀、交互豐富、可高度個性化定制的數(shù)據(jù)可視化圖表。案例中的代碼內(nèi)容基于 Pyecharts 1.x 版本,需要的朋友可以參考下
    2021-06-06
  • Mac 安裝 Python3.10 和 配置環(huán)境的詳細教程

    Mac 安裝 Python3.10 和 配置環(huán)境的詳細教程

    這篇文章主要介紹了Mac 安裝 Python3.10 和 配置環(huán)境,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • 教你用Python代碼實現(xiàn)合并excel文件

    教你用Python代碼實現(xiàn)合并excel文件

    近幾天一直因為excel文件太多太雜的原因苦惱,今天特地整理了本篇文章,文章介紹的非常詳細,對正在學習python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05

最新評論

广水市| 石家庄市| 台南县| 石林| 龙江县| 赤壁市| 康马县| 文水县| 深州市| 乌审旗| 康定县| 涡阳县| 武威市| 大田县| 盐边县| 柞水县| 砚山县| 微山县| 济阳县| 长宁区| 江源县| 泰和县| 永城市| 宁国市| 靖州| 聊城市| 西安市| 喀喇| 宜丰县| 石楼县| 都安| 大港区| 迁安市| 锡林郭勒盟| 正蓝旗| 万山特区| 沁水县| 墨脱县| 龙江县| 新邵县| 思茅市|