基于pandas數(shù)據(jù)清洗的實現(xiàn)示例
數(shù)據(jù)清洗是數(shù)據(jù)科學(xué)和數(shù)據(jù)分析中非常重要的一個步驟。它指的是在數(shù)據(jù)分析之前,對數(shù)據(jù)進(jìn)行預(yù)處理,以確保數(shù)據(jù)的質(zhì)量和一致性。使用Python的pandas庫進(jìn)行數(shù)據(jù)清洗是一種常見的做法,因為pandas提供了豐富的數(shù)據(jù)操作和清洗功能。
1.導(dǎo)入需要的庫
import pandas as pd from pandas import DataFrame import numpy as np
2.處理丟失數(shù)據(jù)
有兩種丟失數(shù)據(jù):
- None
- np.nan(NaN)
為什么在數(shù)據(jù)分析中需要用到的是浮點類型的空而不是對象類型?
- 數(shù)據(jù)分析中會常常使用某些形式的運(yùn)算來處理原始數(shù)據(jù),如果原數(shù)數(shù)據(jù)中的空值為NAN的形式,則不會干擾或者中斷運(yùn)算。
- NAN可以參與運(yùn)算的
- None是不可以參與運(yùn)算
df = DataFrame(data=np.random.randint(0,100,size=(7,5))) df.iloc[2,3] = None df.iloc[4,2] = np.nan df.iloc[5,4] = None df
運(yùn)行結(jié)果為:
3.pandas處理空值操作
- isnull
- notnull
- any
- all
- dropna
- filln
#哪些行中有空值 #any(axis=1)檢測哪些行中存有空值 df.isnull().any(axis=1) #any會作用isnull返回結(jié)果的每一行 #true對應(yīng)的行就是存有缺失數(shù)據(jù)的行
運(yùn)行結(jié)果:
df.notnull() df.notnull().all(axis=1) #將布爾值作為源數(shù)據(jù)的行索引 df.loc[df.notnull().all(axis=1)] #獲取空對應(yīng)的行數(shù)據(jù) df.loc[df.isnull().any(axis=1)] #獲取空對應(yīng)行數(shù)據(jù)的行索引 indexs = df.loc[df.isnull().any(axis=1)].index indexs df.drop(labels=indexs,axis=0)
3.案例分析
數(shù)據(jù)說明:
- 數(shù)據(jù)是1個冷庫的溫度數(shù)據(jù),1-7對應(yīng)7個溫度采集設(shè)備,1分鐘采集一次。
數(shù)據(jù)處理目標(biāo):
- 用1-4對應(yīng)的4個必須設(shè)備,通過建立冷庫的溫度場關(guān)系模型,預(yù)估出5-7對應(yīng)的數(shù)據(jù)。
- 最后每個冷庫中僅需放置4個設(shè)備,取代放置7個設(shè)備。
- f(1-4) --> y(5-7)
數(shù)據(jù)處理過程:
- 1、原始數(shù)據(jù)中有丟幀現(xiàn)象,需要做預(yù)處理;
- 2、matplotlib 繪圖;
- 3、建立邏輯回歸模型。
無標(biāo)準(zhǔn)答案,按個人理解操作即可,請把自己的操作過程以文字形式簡單描述一下,謝謝配合。
測試數(shù)據(jù)為testData.xlsx
data = pd.read_excel('./data/testData.xlsx').drop(labels=['none','none1'],axis=1) data
運(yùn)行結(jié)果為:
data.shape #刪除空對應(yīng)的行數(shù)據(jù) data.dropna(axis=0).shape df = DataFrame(data=np.random.randint(0,100,size=(8,6))) df.iloc[1] = [1,1,1,1,1,1] df.iloc[3] = [1,1,1,1,1,1] df.iloc[5] = [1,1,1,1,1,1] df #檢測哪些行存有重復(fù)的數(shù)據(jù) df.duplicated(keep='first') df.loc[~df.duplicated(keep='first')] #異步到位刪除 df.drop_duplicates(keep='first') df = DataFrame(data=np.random.random(size=(1000,3)),columns=['A','B','C']) df.head() #制定判定異常值的條件 twice_std = df['C'].std() * 2 twice_std df.loc[~(df['C'] > twice_std)]
運(yùn)行結(jié)果:
到此這篇關(guān)于基于pandas數(shù)據(jù)清洗的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)pandas 數(shù)據(jù)清洗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談pandas dataframe對除數(shù)是零的處理
這篇文章主要介紹了淺談pandas dataframe對除數(shù)是零的處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07python?針對在子文件夾中的md文檔實現(xiàn)批量md轉(zhuǎn)word
這篇文章主要介紹了python?針對在子文件夾中的md文檔實現(xiàn)批量md轉(zhuǎn)word,但是自己保存的md文檔在不同的文件夾,而大部分只能實現(xiàn)同一文件夾內(nèi)的轉(zhuǎn)換,得出下列總結(jié),需要的朋友可以參考一下2022-04-04使用BeautifulSoup爬蟲程序獲取百度搜索結(jié)果的標(biāo)題和url示例
這篇文章主要介紹了使用BeautifulSoup編寫了一段爬蟲程序獲取百度搜索結(jié)果的標(biāo)題和url的示例,大家參考使用吧2014-01-01Python的Django框架中設(shè)置日期和字段可選的方法
這篇文章主要介紹了Python的Django框架中設(shè)置日期和字段可選的方法,是Django設(shè)置當(dāng)中的基本操作,需要的朋友可以參考下2015-07-07