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

Python數(shù)據(jù)分析必備的12種數(shù)據(jù)清洗技術(shù)分享

 更新時間:2025年09月05日 09:23:32   作者:Python資訊站  
數(shù)據(jù)清洗是數(shù)據(jù)分析的第一步,它的好壞直接影響到后續(xù)分析的準確性和可靠性,下面我們將詳細介紹 12 種常見的數(shù)據(jù)清洗技術(shù),大家可以根據(jù)需要進行選擇

數(shù)據(jù)清洗是數(shù)據(jù)分析的第一步,它的好壞直接影響到后續(xù)分析的準確性和可靠性。下面我們將詳細介紹 12 種常見的數(shù)據(jù)清洗技術(shù),并通過實際的代碼示例來幫助大家更好地理解和掌握這些技術(shù)。

1. 刪除缺失值

數(shù)據(jù)集中經(jīng)常會有一些缺失值,這些缺失值可能會干擾我們的分析。我們可以選擇刪除含有缺失值的行或列。

import pandas as pd  
  
# 創(chuàng)建一個包含缺失值的數(shù)據(jù)集  
data = {  
    'A': [1, 2, None, 4],  
    'B': [5, None, 7, 8],  
    'C': [9, 10, 11, 12]  }  
df = pd.DataFrame(data)  
  
# 刪除含有缺失值的行  
df.dropna(inplace=True)  
print(df)  

輸出結(jié)果:

   A  B   C  
3  4  8  12

解釋:

  • dropna() 方法用于刪除含有缺失值的行或列。
  • inplace=True 參數(shù)表示直接在原數(shù)據(jù)上進行操作,不返回新的 DataFrame。

2. 填充缺失值

有時候刪除缺失值并不是最佳選擇,我們可以選擇填充缺失值。常見的填充方法包括使用均值、中位數(shù)、眾數(shù)等。

# 填充缺失值  
df = pd.DataFrame(data)  
  
# 使用均值填充  
df.fillna(df.mean(), inplace=True)  
print(df)  

輸出結(jié)果:

     A    B   C  
0  1.0  5.0   9  
1  2.0  7.5  10  
2  3.0  7.0  11  
3  4.0  8.0  12

解釋:

  • fillna() 方法用于填充缺失值。
  • df.mean() 計算每一列的均值,并用這些均值填充缺失值。

3. 刪除重復(fù)值

數(shù)據(jù)集中可能會有重復(fù)的記錄,這些重復(fù)記錄會影響分析結(jié)果。我們可以使用 drop_duplicates() 方法刪除重復(fù)值。

# 創(chuàng)建一個包含重復(fù)值的數(shù)據(jù)集  
data = {  
    'A': [1, 2, 2, 4],  
    'B': [5, 6, 6, 8],  
    'C': [9, 10, 10, 12]  }  
df = pd.DataFrame(data)  
  
# 刪除重復(fù)值  
df.drop_duplicates(inplace=True)  
print(df)  

輸出結(jié)果:

   A  B   C  
0  1  5   9  
1  2  6  10  
3  4  8  12

解釋:

  • drop_duplicates() 方法用于刪除重復(fù)的行。
  • inplace=True 參數(shù)表示直接在原數(shù)據(jù)上進行操作,不返回新的 DataFrame。

4. 轉(zhuǎn)換數(shù)據(jù)類型

有時候數(shù)據(jù)的類型可能不符合我們的需求,我們需要轉(zhuǎn)換數(shù)據(jù)類型。例如,將字符串類型的數(shù)字轉(zhuǎn)換為數(shù)值類型。

# 創(chuàng)建一個包含字符串類型數(shù)字的數(shù)據(jù)集  
data = {  
    'A': ['1', '2', '3', '4'],  
    'B': ['5', '6', '7', '8'] }  
df = pd.DataFrame(data)  
  
# 轉(zhuǎn)換數(shù)據(jù)類型  
df['A'] = df['A'].astype(int)  
df['B'] = df['B'].astype(float)  
print(df)  

輸出結(jié)果:

   A    B  
0  1  5.0  
1  2  6.0  
2  3  7.0  
3  4  8.

解釋:

  • astype() 方法用于轉(zhuǎn)換數(shù)據(jù)類型。
  • intfloat 分別表示整數(shù)和浮點數(shù)類型。

5. 處理異常值

異常值是指那些與其他數(shù)據(jù)明顯不同的值,它們可能會對分析結(jié)果產(chǎn)生負面影響。我們可以使用統(tǒng)計方法來檢測和處理異常值。

# 創(chuàng)建一個包含異常值的數(shù)據(jù)集  
data = {  
    'A': [1, 2, 3, 100],  
    'B': [5, 6, 7, 8]  }  
df = pd.DataFrame(data)  
  
# 檢測異常值  
Q1 = df.quantile(0.25)  
Q3 = df.quantile(0.75)  
IQR = Q3 - Q1  
  
# 定義異常值的范圍  
lower_bound = Q1 - 1.5 * IQR  
upper_bound = Q3 + 1.5 * IQR  
  
# 刪除異常值  
df = df[~((df < lower_bound) | (df > upper_bound)).any(axis=1)]  
print(df)  

輸出結(jié)果:

   A  B  
0  1  5  
1  2  6  
2  3  7

解釋:

  • quantile() 方法用于計算四分位數(shù)。
  • IQR 表示四分位距,即第三四分位數(shù)減去第一四分位數(shù)。
  • lower_boundupper_bound 分別表示異常值的下界和上界。
  • ~ 符號表示取反,any(axis=1) 表示任何一列有異常值的行都會被刪除。

6. 標準化和歸一化

標準化和歸一化是數(shù)據(jù)預(yù)處理中的重要步驟,它們可以將數(shù)據(jù)轉(zhuǎn)換到相同的尺度,便于后續(xù)的分析和建模。

from sklearn.preprocessing import StandardScaler, MinMaxScaler    
# 創(chuàng)建一個數(shù)據(jù)集  
data = {  
    'A': [1, 2, 3, 4],  
    'B': [5, 6, 7, 8]  }  
df = pd.DataFrame(data)  
  
# 標準化  
scaler = StandardScaler()  
df_scaled = scaler.fit_transform(df)  
df_scaled = pd.DataFrame(df_scaled, columns=df.columns)  
print("標準化后的數(shù)據(jù):")  
print(df_scaled)  
  
# 歸一化  
scaler = MinMaxScaler()  
df_normalized = scaler.fit_transform(df)  
df_normalized = pd.DataFrame(df_normalized, columns=df.columns)  
print("\n歸一化后的數(shù)據(jù):")  
print(df_normalized)  

輸出結(jié)果:

標準化后的數(shù)據(jù):  
          A         B  
0 -1.341641 -1.341641  
1 -0.447214 -0.447214  
2  0.447214  0.447214  
3  1.341641  1.341641  
  
歸一化后的數(shù)據(jù):  
          A         B  
0  0.000000  0.000000  
1  0.333333  0.333333  
2  0.666667  0.666667  
3  1.000000  1.000000  

解釋:

  • StandardScaler 用于標準化,將數(shù)據(jù)轉(zhuǎn)換為均值為 0,標準差為 1 的分布。
  • MinMaxScaler 用于歸一化,將數(shù)據(jù)縮放到 [0, 1] 區(qū)間。

7. 重命名列名

有時候我們需要對數(shù)據(jù)集的列名進行重命名,以便更好地理解和使用數(shù)據(jù)。

# 創(chuàng)建一個數(shù)據(jù)集  
data = {  
    'A': [1, 2, 3, 4],  
    'B': [5, 6, 7, 8]  }  
df = pd.DataFrame(data)  
  
# 重命名列名  
df.rename(columns={'A': 'Column1', 'B': 'Column2'}, inplace=True)  
print(df)  

輸出結(jié)果:

   Column1  Column2  
0        1        5  
1        2        6  
2        3        7  
3        4        

解釋:

  • rename() 方法用于重命名列名
  • columns 參數(shù)是一個字典,鍵是舊列名,值是新列名。
  • inplace=True 參數(shù)表示直接在原數(shù)據(jù)上進行操作,不返回新的 DataFrame。

8. 合并數(shù)據(jù)集

在數(shù)據(jù)分析中,我們經(jīng)常需要將多個數(shù)據(jù)集合并在一起。Pandas 提供了多種合并方法,如 concatmerge

# 創(chuàng)建兩個數(shù)據(jù)集  
data1 = {  
    'A': [1, 2, 3],  
    'B': [4, 5, 6] }  
df1 = pd.DataFrame(data1)  
  
data2 = {  
    'A': [4, 5, 6],  
    'B': [7, 8, 9]  
}  
df2 = pd.DataFrame(data2)  
  
# 使用 concat 合并數(shù)據(jù)集  
df_concat = pd.concat([df1, df2], ignore_index=True)  
print("使用 concat 合并的數(shù)據(jù)集:")  
print(df_concat)  
  
# 使用 merge 合并數(shù)據(jù)集  
df_merge = pd.merge(df1, df2, on='A', how='outer')  
print("\n使用 merge 合并的數(shù)據(jù)集:")  
print(df_merge)  

輸出結(jié)果:

使用 concat 合并的數(shù)據(jù)集:  
   A  B  
0  1  4  
1  2  5  
2  3  6  
3  4  7  
4  5  8  
5  6  9  
  
使用 merge 合并的數(shù)據(jù)集:  
    A  B_x  B_y  
0  1.0  4.0  NaN  
1  2.0  5.0  NaN  
2  3.0  6.0  NaN  
3  4.0  NaN  7.0  
4  5.0  NaN  8.0  
5  6.0  NaN  9.0  

解釋:

  • pd.concat() 方法用于縱向或橫向拼接多個數(shù)據(jù)集。
  • ignore_index=True 參數(shù)表示重新生成索引。
  • pd.merge() 方法用于根據(jù)指定的列進行合并。
  • on='A' 參數(shù)表示根據(jù)列 ‘A’ 進行合并。
  • how='outer' 參數(shù)表示外連接,保留所有數(shù)據(jù)。

9. 日期時間處理

日期時間數(shù)據(jù)在數(shù)據(jù)分析中非常常見,我們需要學(xué)會如何處理這些數(shù)據(jù)。

# 創(chuàng)建一個包含日期時間的數(shù)據(jù)集  
data = {  
    'Date': ['2023-01-01', '2023-01-02', '2023-01-03'],  
    'Value': [10, 20, 30]  }  
df = pd.DataFrame(data)  
  
# 將日期時間列轉(zhuǎn)換為 datetime 類型  
df['Date'] = pd.to_datetime(df['Date'])  
  
# 提取年份、月份和日期  
df['Year'] = df['Date'].dt.year  
df['Month'] = df['Date'].dt.month  
df['Day'] = df['Date'].dt.day  
  
print(df)  

輸出結(jié)果:

        Date  Value  Year  Month  Day  
0 2023-01-01     10  2023      1    1  
1 2023-01-02     20  2023      1    2  
2 2023-01-03     30  2023      1    3

解釋:

  • pd.to_datetime() 方法用于將字符串類型的日期時間轉(zhuǎn)換為 datetime 類型。
  • dt 屬性提供了多種日期時間相關(guān)的操作,如提取年份、月份和日期。

10. 文本數(shù)據(jù)處理

文本數(shù)據(jù)在數(shù)據(jù)分析中也很常見,我們需要學(xué)會如何處理這些數(shù)據(jù)。

# 創(chuàng)建一個包含文本數(shù)據(jù)的數(shù)據(jù)集  
data = {  
    'Text': ['hello world', 'python programming', 'data science']  }  
df = pd.DataFrame(data)  
  
# 將文本數(shù)據(jù)轉(zhuǎn)換為小寫  
df['Text'] = df['Text'].str.lower()  
  
# 替換特定字符  
df['Text'] = df['Text'].str.replace(' ', '_')  
  
print(df)  

輸出結(jié)果:

                  Text  
0       hello_world  
1  python_programming  
2      data_science

解釋:

  • str.lower() 方法用于將文本數(shù)據(jù)轉(zhuǎn)換為小寫。
  • str.replace() 方法用于替換文本中的特定字符。

11. 處理分類數(shù)據(jù)

分類數(shù)據(jù)在數(shù)據(jù)分析中也很常見,我們需要學(xué)會如何處理這些數(shù)據(jù)。

# 創(chuàng)建一個包含分類數(shù)據(jù)的數(shù)據(jù)集  
data = {  
    'Category': ['A', 'B', 'A', 'C', 'B', 'A']  }  
df = pd.DataFrame(data)  
  
# 將分類數(shù)據(jù)轉(zhuǎn)換為類別類型  
df['Category'] = df['Category'].astype('category')  
  
# 查看類別及其編碼  
print(df['Category'].cat.codes)  

輸出結(jié)果:

0    0  
1    1  
2    0  
3    2  
4    1  
5    0  
Name: Category, dtype: int8  

解釋:

  • astype('category') 方法用于將數(shù)據(jù)轉(zhuǎn)換為類別類型。
  • cat.codes 屬性用于查看類別的編碼。

12. 處理缺失值的高級技巧

除了簡單的刪除和填充缺失值,還有一些高級技巧可以幫助我們更好地處理缺失值。

# 創(chuàng)建一個包含缺失值的數(shù)據(jù)集  
data = {  
    'A': [1, 2, None, 4],  
    'B': [5, None, 7, 8],  
    'C': [9, 10, 11, 12]  }  
df = pd.DataFrame(data)  
  
# 使用前向填充  
df.fillna(method='ffill', inplace=True)  
print("前向填充后的數(shù)據(jù):")  
print(df)  
  
# 使用后向填充  
df = pd.DataFrame(data)  
df.fillna(method='bfill', inplace=True)  
print("\n后向填充后的數(shù)據(jù):")  
print(df)  

輸出結(jié)果:

前向填充后的數(shù)據(jù):  
     A    B   C  
0  1.0  5.0   9  
1  2.0  5.0  10  
2  2.0  7.0  11  
3  4.0  8.0  12  
  
后向填充后的數(shù)據(jù):  
     A    B   C  
0  1.0  5.0   9  
1  2.0  7.0  10  
2  4.0  7.0  11  
3  4.0  8.0  12  

總結(jié)

以上介紹了十二種常用的數(shù)據(jù)清洗技術(shù),包括刪除缺失值、填充缺失值、刪除重復(fù)值、轉(zhuǎn)換數(shù)據(jù)類型、處理異常值、標準化與歸一化、重命名列名、合并數(shù)據(jù)集、日期時間處理、文本數(shù)據(jù)處理、處理分類數(shù)據(jù)以及處理缺失值的高級技巧。通過實際代碼示例展示了每種技術(shù)的具體應(yīng)用,有助于讀者更好地理解和掌握這些技術(shù)。

?到此這篇關(guān)于Python數(shù)據(jù)分析必備的12種數(shù)據(jù)清洗技術(shù)分享的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)清洗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python優(yōu)秀開源項目Rich源碼解析的流程分析

    Python優(yōu)秀開源項目Rich源碼解析的流程分析

    這篇文章主要介紹了Python優(yōu)秀開源項目Rich源碼解析,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Windows和夜神模擬器上抓包程序mitmproxy的安裝使用詳解

    Windows和夜神模擬器上抓包程序mitmproxy的安裝使用詳解

    mitmproxy是一個支持HTTP和HTTPS的抓包程序,有類似Fiddler、Charles的功能,只不過它是一個控制臺的形式操作,這篇文章主要介紹了Windows和夜神模擬器上抓包程序mitmproxy的安裝使用詳解,需要的朋友可以參考下
    2022-10-10
  • python多線程爬取西刺代理的示例代碼

    python多線程爬取西刺代理的示例代碼

    這篇文章主要介紹了python多線程爬取西刺代理的示例代碼,幫助大家更好的理解和學(xué)習(xí)python的爬蟲,感興趣的朋友可以了解下
    2021-01-01
  • 通過實例了解python property屬性

    通過實例了解python property屬性

    這篇文章主要介紹了通過實例了解python property屬性,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Python操作Git的項目實踐

    Python操作Git的項目實踐

    本文介紹了使用Python和GitPython庫進行各種Git操作,包括打開倉庫、查詢狀態(tài)、添加和提交更改等,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • 解決python3.x安裝numpy成功但import出錯的問題

    解決python3.x安裝numpy成功但import出錯的問題

    這篇文章主要介紹了解決python3.x安裝numpy成功但import出錯的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Python模擬用戶登錄驗證

    Python模擬用戶登錄驗證

    這篇文章主要為大家詳細介紹了Python模擬用戶登錄驗證的相關(guān)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Django環(huán)境下使用Ajax的操作代碼

    Django環(huán)境下使用Ajax的操作代碼

    AJAX 的主要目標是在不刷新整個頁面的情況下,通過后臺與服務(wù)器進行數(shù)據(jù)交換和更新頁面內(nèi)容,通過 AJAX,您可以向服務(wù)器發(fā)送請求并接收響應(yīng),然后使用 JavaScript 動態(tài)地更新頁面的部分內(nèi)容,這篇文章主要介紹了Django環(huán)境下使用Ajax,需要的朋友可以參考下
    2024-03-03
  • Pycharm配置PyQt5環(huán)境的教程

    Pycharm配置PyQt5環(huán)境的教程

    這篇文章主要介紹了Pycharm配置PyQt5環(huán)境的教程,本文通過圖文實例詳解給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Python編程flask使用頁面模版的方法

    Python編程flask使用頁面模版的方法

    今天小編就為大家分享一篇關(guān)于Python編程flask使用頁面模版的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評論

新河县| 晋宁县| 彭山县| 河津市| 大化| 固镇县| 合江县| 东乡族自治县| 丰县| 固安县| 舟曲县| 温泉县| 若尔盖县| 陇川县| 东阳市| 太仆寺旗| 富蕴县| 大方县| 芦溪县| 同德县| 内江市| 华容县| 万全县| 德庆县| 新野县| 运城市| 嘉祥县| 会宁县| 丹寨县| 安泽县| 于都县| 荔波县| 黎城县| 厦门市| 汉源县| 霍林郭勒市| 南充市| 青龙| 当阳市| 旺苍县| 呼图壁县|