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

python數(shù)據(jù)處理和數(shù)據(jù)清洗的示例詳解

 更新時(shí)間:2024年08月12日 11:05:03   作者:闌夢(mèng)清川  
數(shù)據(jù)清洗是指發(fā)現(xiàn)并糾正數(shù)據(jù)文件中可識(shí)別的錯(cuò)誤的最后一道程序,包括檢查數(shù)據(jù)一致性,處理無效值和缺失值等,數(shù)據(jù)清洗與處理的目的是提高數(shù)據(jù)的質(zhì)量,提高實(shí)驗(yàn)結(jié)果的可靠度,本文給大家介紹了python數(shù)據(jù)處理和數(shù)據(jù)清洗的示例,需要的朋友可以參考下

1.庫的相關(guān)簡(jiǎn)介

python里面是通過模塊體現(xiàn)庫的,可以降低程序員的使用成本,提高程序的開發(fā)效率;

標(biāo)準(zhǔn)庫:官方提供的;

第三方庫:其他的大佬做出來的(數(shù)量龐大);

2.數(shù)據(jù)處理之添加新列

import pandas as pd
df = pd.read_csv("/Users/feifei/hotpot.csv")
 
# 計(jì)算性價(jià)比評(píng)分,通過賦值,將結(jié)果添加為df的"性價(jià)比評(píng)分"列
df["性價(jià)比評(píng)分"] = (df["口味評(píng)分"]/df["人均消費(fèi)"])*40
 
# 計(jì)算氛圍評(píng)分,通過賦值,將結(jié)果添加為df的"氛圍評(píng)分"列
df["氛圍評(píng)分"] = (df["服務(wù)評(píng)分"]+df["環(huán)境評(píng)分"])/2
 
# 使用print()輸出df
print(df)

什么叫做添加新列,就是我們?cè)跀?shù)學(xué)建模對(duì)于數(shù)據(jù)集合進(jìn)行處理的時(shí)候,對(duì)于海量的數(shù)據(jù),我們可能會(huì)根據(jù)這個(gè)已知的數(shù)據(jù)添加新的變量之類的,這個(gè)新的變量就是我們通過已知的數(shù)據(jù)得到的新的數(shù)據(jù)變量;

在上面這個(gè)案例里面,我們通過一個(gè)店鋪的口味評(píng)分和人均消費(fèi)凝練出來一個(gè)性價(jià)比評(píng)分作為新的數(shù)據(jù)變量,根據(jù)這個(gè)店鋪的服務(wù)評(píng)分和環(huán)境評(píng)分凝練出來這個(gè)氛圍的評(píng)分作為新的數(shù)據(jù)變量,最后這兩個(gè)新的變量就會(huì)作為新的表頭顯示在我們?cè)瓉淼臄?shù)據(jù)表格里面去;

3.處理結(jié)果的小數(shù)位數(shù)的處理

我們想要對(duì)于這個(gè)處理結(jié)果的小數(shù)的位數(shù)進(jìn)行控制,我們可以使用一個(gè)函數(shù):

因?yàn)檫@個(gè)里面是進(jìn)行的多列索引,這個(gè)時(shí)候我們使用了這個(gè)索引的嵌套,round(2)表示對(duì)于所選擇的數(shù)據(jù)進(jìn)行保留兩位小數(shù)的處理,并且更新原來的數(shù)據(jù);

import pandas as pd
df = pd.read_csv("/Users/feifei/hotpot.csv")
 
# 計(jì)算性價(jià)比評(píng)分,通過賦值,將結(jié)果添加為df的"性價(jià)比評(píng)分"列
df["性價(jià)比評(píng)分"] = (df["口味評(píng)分"]/df["人均消費(fèi)"])*40
 
# 計(jì)算氛圍評(píng)分,通過賦值,將結(jié)果添加為df的"氛圍評(píng)分"列
df["氛圍評(píng)分"] = (df["服務(wù)評(píng)分"]+df["環(huán)境評(píng)分"])/2
 
# TODO 使用round()函數(shù)對(duì)2個(gè)新列保留2位小數(shù)
df[["性價(jià)比評(píng)分","氛圍評(píng)分"]] = df[["性價(jià)比評(píng)分","氛圍評(píng)分"]].round(2)
 
# 使用print()輸出df
print(df)

4.對(duì)于某一列的數(shù)據(jù)進(jìn)行排序

我們上面綜合得到了這個(gè)性價(jià)比評(píng)分和氛圍評(píng)分,我們想要根據(jù)這兩個(gè)指標(biāo)進(jìn)行這個(gè)店鋪的排名

sort_values就是一個(gè)函數(shù)的調(diào)用,by=""表示的是對(duì)于某一列的內(nèi)容進(jìn)行處理,ascending=False表示的就是以降序的形式進(jìn)行排序,如果我們沒有寫這個(gè)參數(shù)或者是等于true,都是以升序的形式進(jìn)行排序;

# 使用sort_values()對(duì)df的"性價(jià)比評(píng)分"列進(jìn)行降序排序,并賦值給df_1
df_1 = df.sort_values(by="性價(jià)比評(píng)分",ascending=False)
 
# 使用sort_values()對(duì)df的"氛圍評(píng)分"列進(jìn)行降序排序,并賦值給df_2 
df_2 = df.sort_values(by="氛圍評(píng)分",ascending=False)
 
# 使用print()輸出df_1
print(df_1)
 
# 使用print()輸出df_2
print(df_2)

5.選擇我們想要的數(shù)據(jù)集合

我們的排序也完成了,接下來的就是只保留這個(gè)店鋪的名稱和性價(jià)比,并且打印顯示出來前面的10名店鋪?zhàn)鳛槲覀兊淖罴堰x擇;

head函數(shù)就會(huì)篩選出來前面的10個(gè)店鋪打印出來,df_atmospyere這個(gè)里面存儲(chǔ)的就是我們想要的兩列的數(shù)據(jù)集合;

# TODO 使用sort_values()對(duì)df的列"氛圍評(píng)分"進(jìn)行降序排序,并賦值給df_2
df_2 = df.sort_values(by="氛圍評(píng)分",ascending=False)
 
# TODO 使用多列索引的方式,訪問df_2的"店鋪名稱"和"氛圍評(píng)分"2列,并賦值給df_atmosphere
df_atmosphere = df_2[["店鋪名稱","氛圍評(píng)分"]]
 
# TODO 使用print()輸出df_atmosphere的前10行
print(df_atmosphere.head(10))

6.臟數(shù)據(jù)的介紹

6.1背景介紹

臟數(shù)據(jù)包括異常值,缺失值和重復(fù)值,把臟數(shù)據(jù)篩選出來,進(jìn)行修正,填補(bǔ)的工作的過程,就是數(shù)據(jù)的清洗;

我們想要去處理這些臟的數(shù)據(jù),就要首先導(dǎo)入這個(gè)pandas模塊,進(jìn)行文件的讀取,然后進(jìn)行這個(gè)數(shù)據(jù)集的格式轉(zhuǎn)換,把這個(gè)里面的數(shù)據(jù)類型,單位進(jìn)行修改;

下面的這個(gè)是一個(gè)平臺(tái)的會(huì)員開通情況數(shù)據(jù)集合:

上面的這個(gè)就是我們要處理的數(shù)據(jù)大致情況,因?yàn)閿?shù)據(jù)量很大,我們只截取出來這個(gè)里面的一小部分?jǐn)?shù)據(jù),簡(jiǎn)單的說明一下,這個(gè)表頭的實(shí)際含義,分別是訂單的編號(hào),用戶的id,價(jià)格(以分為單位),支付平臺(tái),支付渠道,支付方式,交易時(shí)間,支付時(shí)間;

6.2時(shí)間序列轉(zhuǎn)換

# 導(dǎo)入pandas模塊,簡(jiǎn)稱為pd
import pandas as pd
 
# 讀取路徑為"/Users/clean/視頻會(huì)員訂單數(shù)據(jù)源.csv"的文件,賦值給變量df
df = pd.read_csv("/Users/clean/視頻會(huì)員訂單數(shù)據(jù)源.csv")
 
# 商品價(jià)格price,單位分轉(zhuǎn)化成元
df['price'] = df['price'] /100
 
# 使用to_datetime()函數(shù),將訂單創(chuàng)建時(shí)間create_time,轉(zhuǎn)化成時(shí)間格式
df['create_time'] = pd.to_datetime(df['create_time'])
 
# TODO 使用to_datetime()函數(shù),將訂單支付時(shí)間pay_time,轉(zhuǎn)化成時(shí)間格式
df['pay_time'] = pd.to_datetime(df['pay_time'])
 
# 輸出此時(shí)的df
print(df)

上面做的工作就是在原來的表格的基礎(chǔ)上面進(jìn)行這個(gè)單位的修改,把原來以分為單位的數(shù)據(jù)轉(zhuǎn)換為以元為單位,把這個(gè)訂單的兩個(gè)時(shí)間全部轉(zhuǎn)換為時(shí)間格式:使用to_datatime函數(shù);

7.數(shù)據(jù)清洗

7.1快速瀏覽數(shù)據(jù)

我們上面已經(jīng)完成了準(zhǔn)備的工作,就是把這個(gè)相關(guān)的單位進(jìn)行修正,和我們的這個(gè)時(shí)間序列的轉(zhuǎn)換

下面我們使用這個(gè)info函數(shù)快速地瀏覽全部數(shù)據(jù),確定每一列的數(shù)據(jù)的缺失情況,這個(gè)函數(shù)相當(dāng)于print打印功能,顯示出來存在的數(shù)據(jù)個(gè)數(shù),通過這個(gè)打印結(jié)果,我們就可以發(fā)現(xiàn),其他列的數(shù)據(jù)全部是78049,而這個(gè)platform這一列卻是77645,這個(gè)時(shí)候我們就可以知道那些列缺失了多少的數(shù)據(jù),因?yàn)榇蟛糠值臄?shù)據(jù)都是完整的,只需要找出與眾不同的數(shù)字;

7.2找到缺失值

我們上面已經(jīng)確定這個(gè)數(shù)據(jù)是存在缺失的情況的,但是我們應(yīng)該如何找到缺失數(shù)據(jù)的具體的位置呢

我們可以使用insull函數(shù):找到一列里面每一行的數(shù)據(jù)是否缺失;

8.分類對(duì)于缺失的數(shù)據(jù)進(jìn)行處理

數(shù)據(jù)缺失了怎么辦,直接刪除還是補(bǔ)全,針對(duì)于這個(gè)數(shù)據(jù)的多少和數(shù)據(jù)的重要程度,我們需要分情況進(jìn)行處理;

如果是對(duì)于我們的研究很重要的數(shù)據(jù),我們刪除顯然是不合適的;

但是如果一個(gè)數(shù)據(jù)集合有幾十萬的數(shù)據(jù),我們刪除幾百個(gè)也是無傷大雅的:drop函數(shù);

如果缺失值的數(shù)量較多,并且缺失值所在的這一列(這一個(gè)屬性),并不是我們分析的重點(diǎn)時(shí),可以對(duì)缺失值進(jìn)行補(bǔ)全:fillna函數(shù);

8.1對(duì)于缺失值的刪除

我們首先篩選出來這個(gè)缺失值所在的行標(biāo),存儲(chǔ)到dfPayNull這個(gè)series里面;

接下來使用drop函數(shù)進(jìn)行數(shù)據(jù)的刪除(刪除行),參數(shù)就是我們得到的這個(gè)dfpaynull的index索引

# 使用布爾索引和isnull函數(shù),將payment_provider這一列的缺失值篩選出,賦值給變量dfPayNull
 
# dfPayNull就是,包含所有payment_provider這一列缺失值的行
dfPayNull = df[df['payment_provider'].isnull()]
 
# TODO 使用drop函數(shù),將dfPayNull,也就是包含所有payment_provider這一列缺失值的行刪除
df.drop(index=dfPayNull.index,inplace=True)
 
# 使用df.info(),快速瀏覽數(shù)據(jù)集
df.info()

8.2對(duì)于缺失值的填充

df['platform']使我們需要填充的列對(duì)象,這個(gè)對(duì)象去調(diào)用fillna函數(shù),參數(shù)有兩個(gè),第一個(gè)就是填充的內(nèi)容,第二個(gè)就是缺失的行標(biāo);

# TODO 使用fillna()函數(shù),用"unknown"填充platform的缺失值
df['platform'].fillna("unknown",inplace=True)
 
# 輸出df.info()
df.info()

9.分析處理異常值

9.1一般處理

首先是一些比較明顯的異常值:例如這個(gè)id肯定不可能是負(fù)數(shù),這個(gè)時(shí)候?qū)τ趇d<0這個(gè)判斷條件對(duì)于異常值進(jìn)行刪選。但是更多的是下面的情況:

這個(gè)時(shí)候我們需要使用一個(gè)函數(shù)進(jìn)行處理:isin()函數(shù)

9.2特殊情況

我們使用這個(gè)函數(shù)篩選出來不是某些數(shù)據(jù)的索引,我們使用這個(gè)函數(shù),異常數(shù)據(jù)返回的是false,這個(gè)時(shí)候我們使用取反運(yùn)算符,當(dāng)這個(gè)返回false就是我們認(rèn)定的異常值;

9.3交易時(shí)間的篩選

交易時(shí)間必須在提交訂單時(shí)間的后面,這個(gè)才是正常的,這個(gè)可以作為一個(gè)判斷條件;

# TODO 使用布爾索引,將支付時(shí)間pay_time小于創(chuàng)建時(shí)間create_time的異常值篩選出來,賦值給變量dfWrongTime
 
dfWrongTime = df[df['pay_time'] < df['create_time']]
 
# 使用print輸出dfWrongTime
 
print(dfWrongTime)

10.分析處理重復(fù)值

pandas的duplicated()函數(shù)專門對(duì)重復(fù)值進(jìn)行處理。

duplicated()函數(shù),判斷重復(fù)的機(jī)制,是會(huì)把出現(xiàn)相同值的第二個(gè)及以后的數(shù)據(jù),判斷為True

這樣,保證每個(gè)數(shù)據(jù)都保留一個(gè)唯一值。

# 使用布爾索引、duplicated函數(shù),將order_id這一列的重復(fù)值篩選出來,賦值給變量dfOrderDu
dfOrderDu = df[df['order_id'].duplicated()]

以上就是python數(shù)據(jù)處理和數(shù)據(jù)清洗的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于python數(shù)據(jù)處理和清洗的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 關(guān)于Python代碼混淆和加密技術(shù)

    關(guān)于Python代碼混淆和加密技術(shù)

    這篇文章主要介紹了關(guān)于Python代碼混淆和加密技術(shù),Python進(jìn)行商業(yè)開發(fā)時(shí), 需要有一定的安全意識(shí), 為了不被輕易的逆向還原,混淆和加密就有所必要了,需要的朋友可以參考下
    2023-07-07
  • 深入理解python中sort()與sorted()的區(qū)別

    深入理解python中sort()與sorted()的區(qū)別

    Python list內(nèi)置sort()方法用來排序,也可以用python內(nèi)置的全局sorted()方法來對(duì)可迭代的序列排序生成新的序列。這篇文章主要介紹了python中sort()與sorted()的區(qū)別,需要的朋友可以參考下
    2018-08-08
  • Ollama Python 使用小結(jié)

    Ollama Python 使用小結(jié)

    Ollama提供了Python SDK,使得開發(fā)者能夠在Python環(huán)境中輕松集成和使用本地運(yùn)行的模型進(jìn)行自然語言處理任務(wù),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • 用python登錄Dr.com思路以及代碼分享

    用python登錄Dr.com思路以及代碼分享

    如今一般的大學(xué)校園或者公寓都是通過客戶端來限制路由器使用,基本上都是Dr.com客戶端,有的是登錄樣式,有的是插件樣式。下面我們來說說python定制自己的客戶端
    2014-06-06
  • python 裝飾器的使用與要點(diǎn)

    python 裝飾器的使用與要點(diǎn)

    python的裝飾器本質(zhì)上是一個(gè)Python函數(shù),它可以讓其他函數(shù)在不需要做任何代碼變動(dòng)的前提下增加額外功能;裝飾器的返回值也是一個(gè)函數(shù)對(duì)象。簡(jiǎn)單的說裝飾器就是一個(gè)用來返回函數(shù)的函數(shù)
    2021-05-05
  • Python實(shí)現(xiàn)特殊字符判斷并去掉非字母和數(shù)字的特殊字符

    Python實(shí)現(xiàn)特殊字符判斷并去掉非字母和數(shù)字的特殊字符

    在 Python 中,可以通過多種方法來判斷字符串中是否包含非字母、數(shù)字的特殊字符,并將這些特殊字符去掉,本文為大家整理了一些常用的,希望對(duì)大家有所幫助
    2025-04-04
  • Python?Math數(shù)學(xué)函數(shù)常數(shù)冪和對(duì)數(shù)基礎(chǔ)應(yīng)用實(shí)例

    Python?Math數(shù)學(xué)函數(shù)常數(shù)冪和對(duì)數(shù)基礎(chǔ)應(yīng)用實(shí)例

    Python中的math模塊是數(shù)學(xué)運(yùn)算的重要工具,提供了豐富的數(shù)學(xué)函數(shù)和常數(shù),本文將深入探討math模塊的功能和用法,使您能夠更好地利用Python進(jìn)行數(shù)學(xué)運(yùn)算
    2023-12-12
  • Python演化計(jì)算基準(zhǔn)函數(shù)詳解

    Python演化計(jì)算基準(zhǔn)函數(shù)詳解

    這篇文章主要介紹了Python演化計(jì)算基準(zhǔn)函數(shù),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧,希望能夠給你帶來幫助
    2021-10-10
  • python 打印出所有的對(duì)象/模塊的屬性(實(shí)例代碼)

    python 打印出所有的對(duì)象/模塊的屬性(實(shí)例代碼)

    下面小編就為大家?guī)硪黄猵ython 打印出所有的對(duì)象/模塊的屬性(實(shí)例代碼)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • python生成帶有表格的圖片實(shí)例

    python生成帶有表格的圖片實(shí)例

    今天小編就為大家分享一篇python生成帶有表格的圖片實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02

最新評(píng)論

保康县| 武胜县| 抚松县| 七台河市| 丰原市| 嵩明县| 公主岭市| 雷波县| 大埔区| 饶阳县| 福清市| 象山县| 芜湖市| 浮山县| 科尔| 邮箱| 永善县| 通许县| 灯塔市| 玉屏| 镇坪县| 沿河| 大关县| 三门县| 安徽省| 香港| 九龙城区| 富民县| 淮南市| 陆良县| 巨鹿县| 濮阳县| 大港区| 张家界市| 汤阴县| 永吉县| 天门市| 尚义县| 长兴县| 德庆县| 曲靖市|