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

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

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

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

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)  

輸出結果:

   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)  

輸出結果:

     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. 刪除重復值

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

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

輸出結果:

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

解釋:

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

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

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

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

輸出結果:

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

解釋:

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

5. 處理異常值

異常值是指那些與其他數(shù)據(jù)明顯不同的值,它們可能會對分析結果產(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)  

輸出結果:

   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ù)預處理中的重要步驟,它們可以將數(shù)據(jù)轉換到相同的尺度,便于后續(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)  

輸出結果:

標準化后的數(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ù)轉換為均值為 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)  

輸出結果:

   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)  

輸出結果:

使用 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ù)分析中非常常見,我們需要學會如何處理這些數(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)  
  
# 將日期時間列轉換為 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)  

輸出結果:

        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() 方法用于將字符串類型的日期時間轉換為 datetime 類型。
  • dt 屬性提供了多種日期時間相關的操作,如提取年份、月份和日期。

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

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

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

輸出結果:

                  Text  
0       hello_world  
1  python_programming  
2      data_science

解釋:

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

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

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

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

輸出結果:

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

解釋:

  • astype('category') 方法用于將數(shù)據(jù)轉換為類別類型。
  • 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)  

輸出結果:

前向填充后的數(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  

總結

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

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

相關文章

  • Python屬性和內(nèi)建屬性實例解析

    Python屬性和內(nèi)建屬性實例解析

    這篇文章主要介紹了Python屬性和內(nèi)建屬性實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • python入門課程第二講之怎么運行Python

    python入門課程第二講之怎么運行Python

    這篇文章主要介紹了python入門課程第二講之怎么運行Python,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 對python 矩陣轉置transpose的實例講解

    對python 矩陣轉置transpose的實例講解

    下面小編就為大家分享一篇對python 矩陣轉置transpose的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python subprocess模塊功能與常見用法實例詳解

    Python subprocess模塊功能與常見用法實例詳解

    這篇文章主要介紹了Python subprocess模塊功能與常見用法,結合實例形式詳細分析了subprocess模塊功能、常用函數(shù)相關使用技巧,需要的朋友可以參考下
    2018-06-06
  • Python讀寫鎖實現(xiàn)實現(xiàn)代碼解析

    Python讀寫鎖實現(xiàn)實現(xiàn)代碼解析

    這篇文章主要介紹了Python讀寫鎖實現(xiàn)實現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Python3多線程版TCP端口掃描器

    Python3多線程版TCP端口掃描器

    這篇文章主要為大家詳細介紹了Python3多線程版TCP端口掃描器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • python字符串string的內(nèi)置方法實例詳解

    python字符串string的內(nèi)置方法實例詳解

    這篇文章主要介紹了python字符串string的內(nèi)置方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-05-05
  • python使用matplotlib繪制熱圖

    python使用matplotlib繪制熱圖

    這篇文章主要為大家詳細介紹了python使用matplotlib繪制熱圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python各層級目錄下import方法代碼實例

    python各層級目錄下import方法代碼實例

    這篇文章主要介紹了python各層級目錄下import方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • python3.6.8 + pycharm + PyQt5 環(huán)境搭建的圖文教程

    python3.6.8 + pycharm + PyQt5 環(huán)境搭建的圖文教程

    這篇文章主要介紹了python3.6.8 + pycharm + PyQt5 環(huán)境搭建,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06

最新評論