欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?Pandas輕松實(shí)現(xiàn)數(shù)據(jù)清理

 更新時(shí)間:2024年12月31日 15:58:02   作者:傻啦嘿喲  
在當(dāng)今的數(shù)據(jù)驅(qū)動(dòng)時(shí)代,數(shù)據(jù)清理是數(shù)據(jù)分析、機(jī)器學(xué)習(xí)項(xiàng)目中至關(guān)重要的一步,本文將帶大家輕松上手使用Python和Pandas進(jìn)行數(shù)據(jù)清理,希望對(duì)大家有所幫助

在當(dāng)今的數(shù)據(jù)驅(qū)動(dòng)時(shí)代,數(shù)據(jù)清理是數(shù)據(jù)分析、機(jī)器學(xué)習(xí)項(xiàng)目中至關(guān)重要的一步。臟數(shù)據(jù)、缺失值、重復(fù)記錄等問(wèn)題都可能?chē)?yán)重影響結(jié)果的準(zhǔn)確性。Python中的Pandas庫(kù)憑借其強(qiáng)大的數(shù)據(jù)處理能力,成為了數(shù)據(jù)清理的首選工具。本文將通過(guò)通俗易懂的語(yǔ)言、簡(jiǎn)潔的邏輯和豐富的案例,帶你輕松上手使用Python和Pandas進(jìn)行數(shù)據(jù)清理。

一、Pandas基礎(chǔ)與數(shù)據(jù)導(dǎo)入

Pandas是Python的一個(gè)開(kāi)源數(shù)據(jù)分析和操作庫(kù),提供了高性能、易于使用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具。它基于NumPy構(gòu)建,適用于處理表格數(shù)據(jù),如CSV、Excel文件等。

1. 安裝Pandas

首先,確保你已經(jīng)安裝了Pandas庫(kù)。如果尚未安裝,可以使用以下命令進(jìn)行安裝:

pip install pandas

2. 導(dǎo)入Pandas

import pandas as pd

3. 數(shù)據(jù)導(dǎo)入

Pandas提供了多種方法導(dǎo)入數(shù)據(jù),如從CSV、Excel、SQL數(shù)據(jù)庫(kù)等。以下是從CSV文件導(dǎo)入數(shù)據(jù)的示例:

df = pd.read_csv('data.csv')

二、數(shù)據(jù)預(yù)覽與初步分析

在進(jìn)行數(shù)據(jù)清理之前,了解數(shù)據(jù)的結(jié)構(gòu)和內(nèi)容至關(guān)重要。Pandas提供了多種方法幫助我們快速預(yù)覽數(shù)據(jù)。

1. 查看數(shù)據(jù)前幾行

print(df.head())

2. 查看數(shù)據(jù)列名

print(df.columns)

3. 查看數(shù)據(jù)形狀

print(df.shape)

4. 查看數(shù)據(jù)基本統(tǒng)計(jì)信息

print(df.describe())

通過(guò)這些方法,我們可以初步了解數(shù)據(jù)的結(jié)構(gòu)、類(lèi)型、缺失值情況等,為后續(xù)的數(shù)據(jù)清理工作奠定基礎(chǔ)。

三、處理缺失值

缺失值是數(shù)據(jù)清理中的常見(jiàn)問(wèn)題。Pandas提供了多種方法來(lái)處理缺失值,如刪除含有缺失值的行或列、填充缺失值等。

1. 刪除缺失值

使用dropna方法可以刪除含有缺失值的行或列。

# 刪除含有缺失值的行
df_drop_rows = df.dropna()
 
# 刪除含有缺失值的列
df_drop_cols = df.dropna(axis=1)

2. 填充缺失值

使用fillna方法可以用指定的值填充缺失值。

# 用0填充缺失值
df_fill_0 = df.fillna(0)
 
# 用列的平均值填充缺失值
df_fill_mean = df.fillna(df.mean())

3. 插值填充

對(duì)于時(shí)間序列數(shù)據(jù),可以使用interpolate方法進(jìn)行插值填充。

# 插值填充缺失值
df_interpolate = df.interpolate()

四、處理重復(fù)值

重復(fù)值也是數(shù)據(jù)清理中需要關(guān)注的問(wèn)題。Pandas提供了duplicated方法和drop_duplicates方法來(lái)識(shí)別和處理重復(fù)值。

1. 識(shí)別重復(fù)值

# 標(biāo)記重復(fù)值
duplicated_df = df[df.duplicated()]

2. 刪除重復(fù)值

# 刪除重復(fù)值,保留第一次出現(xiàn)的記錄
df_drop_duplicates = df.drop_duplicates()

3. 刪除所有重復(fù)值

# 刪除所有重復(fù)值,只保留唯一記錄
df_unique = df.drop_duplicates(keep=False)

五、處理異常值

異常值(離群值)可能對(duì)數(shù)據(jù)分析結(jié)果產(chǎn)生顯著影響。Pandas雖然沒(méi)有直接處理異常值的函數(shù),但我們可以結(jié)合統(tǒng)計(jì)方法和條件篩選來(lái)識(shí)別和處理異常值。

1. 使用統(tǒng)計(jì)方法識(shí)別異常值

通常,我們可以使用3σ原則(三倍標(biāo)準(zhǔn)差)或四分位數(shù)間距(IQR)來(lái)識(shí)別異常值。

# 計(jì)算四分位數(shù)間距(IQR)
Q1 = df['column_name'].quantile(0.25)
Q3 = df['column_name'].quantile(0.75)
IQR = Q3 - Q1
 
# 識(shí)別異常值
outliers = df[(df['column_name'] < (Q1 - 1.5 * IQR)) | (df['column_name'] > (Q3 + 1.5 * IQR))]

2. 處理異常值

處理異常值的方法有很多,如刪除異常值、用平均值、中位數(shù)等替換異常值等。

# 刪除異常值
df_no_outliers = df[~((df['column_name'] < (Q1 - 1.5 * IQR)) | (df['column_name'] > (Q3 + 1.5 * IQR)))]
 
# 用中位數(shù)替換異常值
median_value = df['column_name'].median()
df['column_name'] = df['column_name'].apply(lambda x: median_value if ((x < (Q1 - 1.5 * IQR)) | (x > (Q3 + 1.5 * IQR))) else x)

六、數(shù)據(jù)類(lèi)型轉(zhuǎn)換

在數(shù)據(jù)清理過(guò)程中,我們經(jīng)常需要將數(shù)據(jù)類(lèi)型轉(zhuǎn)換為適合分析的類(lèi)型。Pandas提供了astype方法來(lái)進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換。

1. 轉(zhuǎn)換為字符串類(lèi)型

df['column_name'] = df['column_name'].astype(str)

2. 轉(zhuǎn)換為整數(shù)類(lèi)型

df['column_name'] = df['column_name'].astype(int)

3. 轉(zhuǎn)換為浮點(diǎn)數(shù)類(lèi)型

df['column_name'] = df['column_name'].astype(float)

4. 轉(zhuǎn)換為日期時(shí)間類(lèi)型

df['date_column'] = pd.to_datetime(df['date_column'])

七、數(shù)據(jù)標(biāo)準(zhǔn)化與歸一化

在某些數(shù)據(jù)分析場(chǎng)景中,我們需要對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化或歸一化處理,以消除不同量綱對(duì)數(shù)據(jù)分析結(jié)果的影響。

1. 標(biāo)準(zhǔn)化

標(biāo)準(zhǔn)化是將數(shù)據(jù)轉(zhuǎn)換為均值為0、標(biāo)準(zhǔn)差為1的分布??梢允褂胹klearn.preprocessing.StandardScaler進(jìn)行標(biāo)準(zhǔn)化處理。

from sklearn.preprocessing import StandardScaler
 
scaler = StandardScaler()
df[['column1', 'column2']] = scaler.fit_transform(df[['column1', 'column2']])

2. 歸一化

歸一化是將數(shù)據(jù)縮放到指定的最小值和最大值之間(通常是0和1)??梢允褂胹klearn.preprocessing.MinMaxScaler進(jìn)行歸一化處理。

from sklearn.preprocessing import MinMaxScaler
 
scaler = MinMaxScaler()
df[['column1', 'column2']] = scaler.fit_transform(df[['column1', 'column2']])

八、案例實(shí)戰(zhàn):清理銷(xiāo)售數(shù)據(jù)

下面,我們將通過(guò)一個(gè)實(shí)際的銷(xiāo)售數(shù)據(jù)清理案例,將上述知識(shí)綜合運(yùn)用。

1. 數(shù)據(jù)導(dǎo)入與預(yù)覽

df = pd.read_csv('sales_data.csv')
print(df.head())

2. 處理缺失值

# 刪除含有缺失值的行
df = df.dropna()
 
# 對(duì)某些列用指定值填充缺失值(如用0填充缺失的折扣率)
df['discount_rate'] = df['discount_rate'].fillna(0)

3. 處理重復(fù)值

df = df.drop_duplicates()

4. 處理異常值

# 計(jì)算銷(xiāo)售額的四分位數(shù)間距
Q1 = df['sales_amount'].quantile(0.25)
Q3 = df['sales_amount'].quantile(0.75)
IQR = Q3 - Q1
 
# 刪除銷(xiāo)售額異常值
df = df[~((df['sales_amount'] < (Q1 - 1.5 * IQR)) | (df['sales_amount'] > (Q3 + 1.5 * IQR)))]

5. 數(shù)據(jù)類(lèi)型轉(zhuǎn)換

# 將日期列轉(zhuǎn)換為日期時(shí)間類(lèi)型
df['order_date'] = pd.to_datetime(df['order_date'])
 
# 將折扣率轉(zhuǎn)換為浮點(diǎn)數(shù)類(lèi)型
df['discount_rate'] = df['discount_rate'].astype(float)

6. 數(shù)據(jù)標(biāo)準(zhǔn)化

from sklearn.preprocessing import StandardScaler
 
scaler = StandardScaler()
df[['sales_amount', 'quantity']] = scaler.fit_transform(df[['sales_amount', 'quantity']])

7. 清理后的數(shù)據(jù)預(yù)覽

print(df.head())

通過(guò)以上步驟,我們成功清理了銷(xiāo)售數(shù)據(jù)中的缺失值、重復(fù)值、異常值,并對(duì)數(shù)據(jù)進(jìn)行了類(lèi)型轉(zhuǎn)換和標(biāo)準(zhǔn)化處理。清理后的數(shù)據(jù)更加整潔、規(guī)范,為后續(xù)的數(shù)據(jù)分析工作奠定了堅(jiān)實(shí)基礎(chǔ)。

結(jié)語(yǔ)

數(shù)據(jù)清理是數(shù)據(jù)分析、機(jī)器學(xué)習(xí)項(xiàng)目中不可或缺的一步。Pandas憑借其強(qiáng)大的數(shù)據(jù)處理能力,成為了數(shù)據(jù)清理的首選工具。本文通過(guò)通俗易懂的語(yǔ)言、簡(jiǎn)潔的邏輯和豐富的案例,帶你輕松上手使用Python和Pandas

到此這篇關(guān)于Python Pandas輕松實(shí)現(xiàn)數(shù)據(jù)清理的文章就介紹到這了,更多相關(guān)Python Pandas數(shù)據(jù)清理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python安裝twisted的問(wèn)題解析

    python安裝twisted的問(wèn)題解析

    我們?cè)谶@篇文章中給大家詳細(xì)整理了python安裝twisted時(shí)遇到的問(wèn)題以及解決方法,有需要的朋友們參考下。
    2018-08-08
  • 詳解Django框架中的視圖級(jí)緩存

    詳解Django框架中的視圖級(jí)緩存

    這篇文章主要介紹了詳解Django框架中的視圖級(jí)緩存,Django是最具人氣的Python web開(kāi)發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • Python+OpenCV實(shí)現(xiàn)基于顏色的目標(biāo)識(shí)別

    Python+OpenCV實(shí)現(xiàn)基于顏色的目標(biāo)識(shí)別

    這篇文章主要介紹了利用OpenCV實(shí)現(xiàn)基于顏色的目標(biāo)識(shí)別,即讓攝像頭識(shí)別到視野范圍內(nèi)的有顏色的氣球并返回每個(gè)氣球的中心點(diǎn)坐標(biāo),感興趣的可以跟隨小編學(xué)習(xí)一下
    2022-01-01
  • Python中np.argmax()函數(shù)用法示例

    Python中np.argmax()函數(shù)用法示例

    np.argmax是用于取得數(shù)組中每一行或者每一列的的最大值,常用于機(jī)器學(xué)習(xí)中獲取分類(lèi)結(jié)果、計(jì)算精確度等,下面這篇文章主要給大家介紹了關(guān)于Python中np.argmax()函數(shù)用法的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Python面向?qū)ο蟪绦蛟O(shè)計(jì)示例小結(jié)

    Python面向?qū)ο蟪绦蛟O(shè)計(jì)示例小結(jié)

    這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì),結(jié)合實(shí)例形式總結(jié)分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中比較常見(jiàn)的類(lèi)定義、實(shí)例化、繼承、私有變量等相關(guān)使用技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2019-01-01
  • Python新年炫酷煙花秀代碼

    Python新年炫酷煙花秀代碼

    大家好,本篇文章主要講的是Python新年炫酷煙花秀代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽
    2022-01-01
  • 使用Python實(shí)現(xiàn)批量ping操作方法

    使用Python實(shí)現(xiàn)批量ping操作方法

    這篇文章主要介紹了使用Python實(shí)現(xiàn)批量ping操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Pandas 處理DataFrame中的inf值實(shí)現(xiàn)

    Pandas 處理DataFrame中的inf值實(shí)現(xiàn)

    Inf 表示正無(wú)窮大或負(fù)無(wú)窮大,通常是在數(shù)學(xué)計(jì)算中產(chǎn)生的結(jié)果,本文主要介紹了Pandas 處理DataFrame中的inf值實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • Python快速?gòu)淖⑨屔晌臋n的方法

    Python快速?gòu)淖⑨屔晌臋n的方法

    這篇文章主要介紹了Python快速?gòu)淖⑨屔晌臋n的方法的相關(guān)資料,非常的簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2016-12-12
  • Python運(yùn)維自動(dòng)化psutil模塊的監(jiān)控和管理深入探究

    Python運(yùn)維自動(dòng)化psutil模塊的監(jiān)控和管理深入探究

    這篇文章主要為大家介紹了Python運(yùn)維自動(dòng)化psutil模塊的監(jiān)控和管理深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01

最新評(píng)論