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

詳解Python如何利用Pandas與NumPy進(jìn)行數(shù)據(jù)清洗

 更新時(shí)間:2022年04月13日 11:11:02   作者:Mr數(shù)據(jù)楊  
許多數(shù)據(jù)科學(xué)家認(rèn)為獲取和清理數(shù)據(jù)的初始步驟占工作的 80%,花費(fèi)大量時(shí)間來清理數(shù)據(jù)集并將它們歸結(jié)為可以使用的形式。本文將利用 Python 的 Pandas和 NumPy 庫來清理數(shù)據(jù),需要的可以參考一下

許多數(shù)據(jù)科學(xué)家認(rèn)為獲取和清理數(shù)據(jù)的初始步驟占工作的 80%,花費(fèi)大量時(shí)間來清理數(shù)據(jù)集并將它們歸結(jié)為可以使用的形式。

因此如果你是剛剛踏入這個(gè)領(lǐng)域或計(jì)劃踏入這個(gè)領(lǐng)域,重要的是能夠處理雜亂的數(shù)據(jù),無論數(shù)據(jù)是否包含缺失值、不一致的格式、格式錯誤的記錄還是無意義的異常值。

將利用 Python 的 Pandas和 NumPy 庫來清理數(shù)據(jù)。

準(zhǔn)備工作

導(dǎo)入模塊后就開始正式的數(shù)據(jù)預(yù)處理吧。

import pandas as pd
import numpy as np

DataFrame 列的刪除

通常會發(fā)現(xiàn)并非數(shù)據(jù)集中的所有數(shù)據(jù)類別都有用。例如可能有一個(gè)包含學(xué)生信息(姓名、年級、標(biāo)準(zhǔn)、父母姓名和地址)的數(shù)據(jù)集,但希望專注于分析學(xué)生成績。在這種情況下地址或父母的姓名并不重要。保留這些不需要的數(shù)據(jù)將占用不必要的空間。

BL-Flickr-Images-Book.csv 數(shù)據(jù)操作。

df = pd.read_csv('數(shù)據(jù)科學(xué)必備Pandas、NumPy進(jìn)行數(shù)據(jù)清洗/BL-Flickr-Images-Book.csv')
df.head()

可以看到這些列是對 Edition Statement, Corporate Author, Corporate Contributors, Former owner, Engraver, Issuance type and Shelfmarks 沒有任何信息幫助的,因此可以進(jìn)行批量刪除處理。

to_drop_column = [ 'Edition Statement',
?? ??? ? ? ? ? ? ? 'Corporate Author',
?? ??? ? ? ? ? ? ? 'Corporate Contributors',
?? ??? ? ? ? ? ? ? 'Former owner',
?? ??? ? ? ? ? ? ? 'Engraver',
?? ??? ? ? ? ? ? ? 'Contributors',
?? ??? ? ? ? ? ? ? 'Issuance type',
?? ??? ? ? ? ? ? ? 'Shelfmarks']

df.drop(to_drop_column , inplace=True, axis=1)
df.head()

DataFrame 索引更改

Pandas 索引擴(kuò)展了 NumPy 數(shù)組的功能,以允許更通用的切片和標(biāo)記。 在許多情況下,使用數(shù)據(jù)的唯一值標(biāo)識字段作為其索引是有幫助的。

獲取唯一標(biāo)識符。

df['Identifier'].is_unique
True

Identifier列替換索引列。

df = df.set_index('Identifier')
df.head()

206 是索引的第一個(gè)標(biāo)簽,可以使用 df.iloc[0] 基于位置的索引訪問。

DataFrame 數(shù)據(jù)字段整理

清理特定列并將它們轉(zhuǎn)換為統(tǒng)一格式,以更好地理解數(shù)據(jù)集并強(qiáng)制保持一致性。

處理 Date of Publication 出版日期 列,發(fā)現(xiàn)該數(shù)據(jù)列格式并不統(tǒng)一。

df.loc[1905:, 'Date of Publication'].head(10)

Identifier
1905           1888
1929    1839, 38-54
2836           1897
2854           1865
2956        1860-63
2957           1873
3017           1866
3131           1899
4598           1814
4884           1820
Name: Date of Publication, dtype: object

我們可以使用正則表達(dá)式的方式直接提取連續(xù)的4個(gè)數(shù)字即可。

extr = df['Date of Publication'].str.extract(r'^(\d{4})', expand=False)
extr.head()

Identifier
206 ? ?1879
216 ? ?1868
218 ? ?1869
472 ? ?1851
480 ? ?1857
Name: Date of Publication, dtype: object

最后獲取數(shù)字字段列。

df['Date of Publication'] = pd.to_numeric(extr)

str 方法與 NumPy 結(jié)合清理列

df[‘Date of Publication’].str 。 此屬性是一種在 Pandas 中訪問快速字符串操作的方法,這些操作在很大程度上模仿了對原生 Python 字符串或編譯的正則表達(dá)式的操作,例如 .split()、.replace() 和 .capitalize()。

要清理 Place of Publication 字段,我們可以將 Pandas 的 str 方法與 NumPy 的 np.where 函數(shù)結(jié)合起來,該函數(shù)基本上是 Excel 的 IF() 宏的矢量化形式。

np.where(condition, then, else)

在這里 condition 要么是一個(gè)類似數(shù)組的對象,要么是一個(gè)布爾掩碼。 then 是如果條件評估為 True 時(shí)使用的值,否則是要使用的值。

本質(zhì)上 .where() 獲取用于條件的對象中的每個(gè)元素,檢查該特定元素在條件上下文中的計(jì)算結(jié)果是否為 True,并返回一個(gè)包含 then 或 else 的 ndarray,具體取決于哪個(gè)適用??梢郧短自趶?fù)合 if-then 語句中,允許根據(jù)多個(gè)條件計(jì)算值.

處理 Place of Publication 出版地 數(shù)據(jù)。

df['Place of Publication'].head(10)

Identifier
206 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?London
216 ? ? ? ? ? ? ? ?London; Virtue & Yorston
218 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?London
472 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?London
480 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?London
481 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?London
519 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?London
667 ? ? pp. 40. G. Bryan & Co: Oxford, 1898
874 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? London]
1143 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? London
Name: Place of Publication, dtype: object

使用包含的方式提取需要的數(shù)據(jù)信息。

pub = df['Place of Publication']
london = pub.str.contains('London')
london[:5]

Identifier
206 ? ?True
216 ? ?True
218 ? ?True
472 ? ?True
480 ? ?True
Name: Place of Publication, dtype: bool

也可以使用 np.where 處理。

df['Place of Publication'] = np.where(london, 'London',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pub.str.replace('-', ' ')))

Identifier
206 ? ? ? ? ? ? ? ? ? ? London
216 ? ? ? ? ? ? ? ? ? ? London
218 ? ? ? ? ? ? ? ? ? ? London
472 ? ? ? ? ? ? ? ? ? ? London
480 ? ? ? ? ? ? ? ? ? ? London
? ? ? ? ? ? ? ? ? ... ? ? ? ??
4158088 ? ? ? ? ? ? ? ? London
4158128 ? ? ? ? ? ? ? ? ?Derby
4159563 ? ? ? ? ? ? ? ? London
4159587 ? ?Newcastle upon Tyne
4160339 ? ? ? ? ? ? ? ? London
Name: Place of Publication, Length: 8287, dtype: object

apply 函數(shù)清理整個(gè)數(shù)據(jù)集

在某些情況下,將自定義函數(shù)應(yīng)用于 DataFrame 的每個(gè)單元格或元素。 Pandas.apply() 方法類似于內(nèi)置的 map() 函數(shù),只是將函數(shù)應(yīng)用于 DataFrame 中的所有元素。

例如將數(shù)據(jù)的發(fā)布日期進(jìn)行處理成 xxxx 年的格式,就可以使用apply。

def clean_date(text):
    try:
        return str(int(text)) + "年"
    except:
        return text

df["new_date"] = df["Date of Publication"].apply(clean_date)
df["new_date"] 

Identifier
206        1879年
216        1868年
218        1869年
472        1851年
480        1857年
           ...  
4158088    1838年
4158128    1831年
4159563      NaN
4159587    1834年
4160339    1834年
Name: new_date, Length: 8287, dtype: object

DataFrame 跳過行

olympics_df = pd.read_csv('數(shù)據(jù)科學(xué)必備Pandas、NumPy進(jìn)行數(shù)據(jù)清洗/olympics.csv')
olympics_df.head()

可以在讀取數(shù)據(jù)時(shí)候添加參數(shù)跳過某些不要的行,比如索引 0 行。

olympics_df = pd.read_csv('數(shù)據(jù)科學(xué)必備Pandas、NumPy進(jìn)行數(shù)據(jù)清洗/olympics.csv',header=1)
olympics_df.head()

DataFrame 重命名列

new_names =  {'Unnamed: 0': 'Country',
              '? Summer': 'Summer Olympics',
               '01 !': 'Gold',
              '02 !': 'Silver',
              '03 !': 'Bronze',
              '? Winter': 'Winter Olympics',
              '01 !.1': 'Gold.1',
              '02 !.1': 'Silver.1',
              '03 !.1': 'Bronze.1',
              '? Games': '# Games',
              '01 !.2': 'Gold.2',
              '02 !.2': 'Silver.2',
              '03 !.2': 'Bronze.2'}

olympics_df.rename(columns=new_names, inplace=True)

olympics_df.head()

以上就是詳解Python如何利用Pandas與NumPy進(jìn)行數(shù)據(jù)清洗的詳細(xì)內(nèi)容,更多關(guān)于Python數(shù)據(jù)清洗的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一個(gè)入門級python爬蟲教程詳解

    一個(gè)入門級python爬蟲教程詳解

    這篇文章主要介紹了一個(gè)入門級python爬蟲教程詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Python3.7安裝pyaudio教程解析

    Python3.7安裝pyaudio教程解析

    這篇文章主要介紹了Python3.7安裝pyaudio教程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • python實(shí)現(xiàn) 獲取b站主播直播間 粉絲牌信息的方法

    python實(shí)現(xiàn) 獲取b站主播直播間 粉絲牌信息的方法

    這篇文章主要介紹了python實(shí)現(xiàn) 獲取b站主播直播間粉絲牌信息 ,用于實(shí)現(xiàn)通過牌子逆向查主播信息這個(gè)功能,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • python列表嵌套引發(fā)的問題總結(jié)

    python列表嵌套引發(fā)的問題總結(jié)

    這篇文章主要介紹了python列表嵌套引發(fā)的問題總結(jié),下面問文章引發(fā)問題來自日常工作總結(jié),具有一定的參考價(jià)值需要的小伙伴可以參考一下
    2022-05-05
  • python利用pd.cut()和pd.qcut()對數(shù)據(jù)進(jìn)行分箱操作

    python利用pd.cut()和pd.qcut()對數(shù)據(jù)進(jìn)行分箱操作

    本文主要介紹了python利用pd.cut()和pd.qcut()對數(shù)據(jù)進(jìn)行分箱操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python實(shí)現(xiàn)從常規(guī)文檔中提取圖片的方法詳解

    Python實(shí)現(xiàn)從常規(guī)文檔中提取圖片的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)從常規(guī)文檔(Word,PDF,Excel,HTML)中提取圖片的方法,有需要的小伙伴可以參考一下
    2025-03-03
  • 對python的bytes類型數(shù)據(jù)split分割切片方法

    對python的bytes類型數(shù)據(jù)split分割切片方法

    今天小編就為大家分享一篇對python的bytes類型數(shù)據(jù)split分割切片方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python實(shí)現(xiàn)簡單的索引排序與搜索功能

    Python實(shí)現(xiàn)簡單的索引排序與搜索功能

    這篇文章主要介紹了Python實(shí)現(xiàn)簡單的索引排序與搜索功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Pandas數(shù)據(jù)分析之groupby函數(shù)用法實(shí)例詳解

    Pandas數(shù)據(jù)分析之groupby函數(shù)用法實(shí)例詳解

    這篇文章主要為大家介紹了Pandas數(shù)據(jù)分析之groupby函數(shù)用法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Python模塊搜索路徑代碼詳解

    Python模塊搜索路徑代碼詳解

    這篇文章主要介紹了Python模塊搜索路徑代碼詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01

最新評論

阿克苏市| 胶南市| 霍州市| 隆尧县| 江西省| 漯河市| 安溪县| 田林县| 鄄城县| 唐海县| 江津市| 连江县| 彭州市| 临夏县| 分宜县| 天门市| 乐东| 汝州市| 鸡东县| 井研县| 股票| 天门市| 泸溪县| 德庆县| 博湖县| 永和县| 镇巴县| 南宫市| 米林县| 固安县| 平和县| 华阴市| 肃北| 甘孜| 新民市| 永济市| 宁晋县| 鹤山市| 垫江县| 车致| 栖霞市|