日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

怎么用python处理数据_Python数据清洗 - 洗什么?怎么洗?看完就明白了

發布時間:2025/3/19 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么用python处理数据_Python数据清洗 - 洗什么?怎么洗?看完就明白了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編輯推薦:

文章來自于csdn,本文主要講解python數據預處理中的數據清洗的主要工作:缺失值處理、重復值處理、異常值處理的相關內容,希望對您的學習有所幫助。

數據挖掘過程中,采集的原始數據里存在著各種不利于分析與建模工作的因素,比如數據不完整、數據矛盾、異常值等。這些因素不僅影響建模的執行過程,更有甚者在不知不覺間給出錯誤的建模結果,這就使得數據清洗顯得尤為重要。但是數據清洗并不是數據預處理的全部內容,它只是第一步而已,接下來還有數據集成、數據轉換和數據規約等一系列處理。在實際應用中,數據預處理的工作量占整個建模過程的60%,可以說,預處理做得好,模型基本就出來了。

數據預處理的主要內容包括:

數據清洗;

數據集成;

數據轉換;

數據規約;

但是在這一篇里,我們只講數據清洗,其他部分會慢慢整理。

數據清洗主要是刪除原始數據中的無關數據,重復數據,平滑噪聲數據,篩選掉與建模目的無關的數據,處理缺失值與異常值等。

缺失值處理

除了很明顯的缺失值(單元格處無值)之外,還有一種隱形的缺失值,比如,你要分析一個人從2018年初到現在每個月的收入情況,加入某個月這個人完全沒有收入,賬單流水中是不會顯示這種情況的,如果你想把對這些沒有收入的月份進行缺失值處理的話,首先你就要找出哪些月份不在賬單流水中。那么請看下面這個鏈接中的文章吧,文章會給出2018年初到現在連續的日期,你只需要匹配一下就知道哪些月份不在賬單中了。

處理缺失值的方法分為3類:刪除、插補、不處理。

刪除缺失值

如果通過刪除小部分的數據就可以達到目標,那么這無疑是最簡單高效的辦法。但是考慮到數據采集的不易,因此一般不會輕易刪除數據。

先來看看數據的大致情況import pandas

as pd

#讀取文件

datafile = u'E:\\pythondata\\tt.xlsx'#文件所在位置

data = pd.read_excel(datafile)#如果是csv文件則用read_csv

print("顯示缺失值,缺失則顯示為TRUE:\n", data.isnull())#是缺失值返回True,否則范圍False

print("---------------------------------\n顯示每一列中有多少個缺失值:\n",data.isnull().sum())#返回每列包含的缺失值的個數

運行結果:

顯示缺失值,缺失則顯示為TRUE:

姓名 身高 性別 血型 出生年份 籍貫

0 False False False False False False

1 False False False False False True

2 True True True True True True

3 False False False False False False

4 False False False False False False

5 False False False False False False

6 False True True False True True

7 False False False False False False

---------------------------------

顯示每一列中有多少個缺失值:

姓名 1

身高 2

性別 2

血型 1

出生年份 2

籍貫 3

dtype: int64

刪除缺失值具體的情況是一下幾種:

data.dropna() #直接刪除含有缺失值的行

data.dropna(axis = 1) #直接刪除含有缺失值的列

data.dropna(how = 'all') #只刪除全是缺失值的行

data.dropna(thresh = 3) #保留至少有3個非空值的行

data.dropna(subset = [u'血型 '])?#判斷特定的列,若該列含有缺失值則刪除缺失值所在的行

插補缺失值

常見的插補方法:

看一眼源數據:

import pandas

as pd

#讀取文件

datafile = u'E:\\pythondata\\ttt.xlsx'#文件所在位置

data = pd.read_excel(datafile)#如果是csv文件則用read_csv

print("顯示源數據data:\n", data)#是缺失值返回True,否則范圍False

print("------------------\n用均值插補后的數據data:\n",

data.fillna(data.mean()))

運行結果:

顯示源數據data:

姓名 工資

0 張三 11687.0

1 李四 10237.0

2 王五 8971.0

3 趙六 9310.0

4 馬七 15890.0

5 楊八 NaN

6 譚九 12361.0

7 黃十 9219.0

------------------

用均值插補后的數據data:

姓名 工資

0 張三 11687.000000

1 李四 10237.000000

2 王五 8971.000000

3 趙六 9310.000000

4 馬七 15890.000000

5 楊八 11096.428571

6 譚九 12361.000000

7 黃十 9219.000000

簡單的缺失值插補方法:

data.fillna(data.mean()) #均值插補

data.fillna(data.median()) #中位數插補

data.fillna(data.mode()) #眾數插補

data.fillna(data.max()) #最大值插補

data.fillna(data.min()) #最小值插補

data.fillna(0) #固定值插補--用0填充

data.fillna(5000) #固定值插補--用已知的行業基本工資填充

data.fillna(method='ffill')#最近鄰插補--用缺失值的前一個值填充

data.fillna(method='pad') #最近鄰插補--用缺失值的前一個值填充

通過擬合函數來插補的方法:

主要說一說拉格朗日插值法吧,除了拉格朗日插值法,還有牛頓插值法、Hermite插值法、分段插值法和樣條插值法。有興趣的可以把后幾種方法的代碼也研究出來。

或者,也可以使用缺失值所在行的上一行填補缺失值

不處理缺失值

不處理就是不管,所以此處省略一萬字......

重復值處理

在Pandas中,.duplicated()表示找出重復的行,默認是判斷全部列,返回布爾類型的結果。對于完全沒有重復的行,返回

False,對于有重復的行,第一次出現的那一行返回 False,其余的返回 True。

與.duplicated()對應的,.drop_duplicates()表示去重,即刪除布爾類型為

True的所有行,默認是判斷全部列

import pandas

as pd

import numpy as np

from pandas import DataFrame,Series

#讀取文件

datafile = u'E:\\pythondata\\tt.xlsx'#文件所在位置,u為防止路徑中有中文名稱,此處沒有,可以省略

data = pd.read_excel(datafile)#datafile是excel文件,所以用read_excel,如果是csv文件則用read_csv

examDf = DataFrame(data)

#去重

print(examDf.duplicated())#判斷是否有重復行,重復的顯示為TRUE,

examDf.drop_duplicates()#去掉重復行

#指定某列判斷是否有重復值

print(examDf.duplicated('name'))#判斷name列是否有重復行,重復的顯示為TRUE,

examDf.drop_duplicates('name')#去掉重復行

#根據多列判斷是否有重復值

print(examDf.duplicated(['name','sex','birthday']))#判斷name,sex,birthday列是否有重復行,重復的顯示為TRUE,

examDf.drop_duplicates(['name','sex','birthday'])#去掉重復行

此處只是放出代碼來.

異常值處理

數據清洗過程中的異常值的處理,是選擇剔除還是用其他值代替,需要視情況而定。有些異常值可能包含某些信息,需認真思考后采取處理方法。

常見的異常值處理辦法:

遍歷查找異常值,并根據規則調整大小

刪除異常值

import pandas

as pd #導入pandas庫

inputfile = u'E:\\pythondata\\ttt.xlsx'

data= pd.read_excel(inputfile)

#將工資低于1000或者高于10萬的異常值清空

data[u'工資'][(data[u'工資']<1000) | (data[u'工資']>100000)]

= None

#清空后刪除

print(data.dropna())

視為缺失值后進行插補

#將工資低于1000或者高于10萬的異常值清空

data[u'工資'][(data[u'工資']<1000) | (data[u'工資']>100000)]

= None

#清空后用均值插補

print(data.fillna(data.mean()))

除了用均值插補之外還可以用中位數、眾數、最值、固定值、最近鄰值、拉格朗日等插值,具體方法往前翻,上面剛寫完。

OVER!

總結

以上是生活随笔為你收集整理的怎么用python处理数据_Python数据清洗 - 洗什么?怎么洗?看完就明白了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。