自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文教你如何利用 Python 進行數(shù)據(jù)清洗

開發(fā) 后端
本文介紹了如何使用 Python 進行數(shù)據(jù)清洗,通過一個實戰(zhàn)案例,我們詳細展示了如何處理電商用戶數(shù)據(jù)。

數(shù)據(jù)清洗是數(shù)據(jù)分析中非常重要的一步,它可以幫助我們處理不完整、不準確或不一致的數(shù)據(jù)。今天,我們就來聊聊如何用 Python 進行數(shù)據(jù)清洗。Python 有強大的庫如 Pandas 和 NumPy,它們提供了豐富的工具來幫助我們高效地完成數(shù)據(jù)清洗任務。

導入必要的庫

首先,我們需要導入一些常用的庫,比如 Pandas 和 NumPy。Pandas 是一個強大的數(shù)據(jù)處理庫,NumPy 則主要用于數(shù)值計算。

import pandas as pd
import numpy as np

讀取數(shù)據(jù)

假設我們有一個 CSV 文件 data.csv,我們可以使用 Pandas 的 read_csv 函數(shù)來讀取數(shù)據(jù)。

# 讀取 CSV 文件
df = pd.read_csv('data.csv')

# 查看前 5 行數(shù)據(jù)
print(df.head())

檢查數(shù)據(jù)基本信息

在開始清洗數(shù)據(jù)之前,我們需要了解數(shù)據(jù)的基本信息,包括數(shù)據(jù)的形狀、列名、數(shù)據(jù)類型等。

# 查看數(shù)據(jù)形狀
print(f"數(shù)據(jù)形狀: {df.shape}")

# 查看列名
print(f"列名: {df.columns.tolist()}")

# 查看數(shù)據(jù)類型
print(f"數(shù)據(jù)類型: \n{df.dtypes}")

處理缺失值

缺失值是數(shù)據(jù)清洗中常見的問題。我們可以使用 isnull() 和 notnull() 函數(shù)來檢查缺失值,并使用 fillna() 或 dropna() 來處理它們。

# 檢查缺失值
print(df.isnull().sum())

# 填充缺失值
df['age'].fillna(df['age'].mean(), inplace=True)  # 用平均值填充年齡列的缺失值
df['income'].fillna(0, inplace=True)  # 用 0 填充收入列的缺失值

# 刪除含有缺失值的行
df.dropna(subset=['address'], inplace=True)  # 刪除地址列中含有缺失值的行

處理重復值

重復值可能會導致分析結果失真。我們可以使用 duplicated() 和 drop_duplicates() 函數(shù)來檢測和刪除重復值。

# 檢查重復值
print(df.duplicated().sum())

# 刪除重復值
df.drop_duplicates(inplace=True)

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

有時候,數(shù)據(jù)的類型可能不符合我們的需求。我們可以使用 astype() 函數(shù)來轉換數(shù)據(jù)類型。

# 將 age 列轉換為整數(shù)類型
df['age'] = df['age'].astype(int)

# 將 income 列轉換為浮點數(shù)類型
df['income'] = df['income'].astype(float)

處理異常值

異常值可能會對分析結果產(chǎn)生重大影響。我們可以使用統(tǒng)計方法(如 Z-score)或箱線圖來檢測和處理異常值。

# 使用 Z-score 方法檢測異常值
from scipy import stats
z_scores = np.abs(stats.zscore(df['income']))
df = df[z_scores < 3]  # 保留 Z-score 小于 3 的數(shù)據(jù)

# 使用箱線圖方法檢測異常值
Q1 = df['income'].quantile(0.25)
Q3 = df['income'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
df = df[(df['income'] >= lower_bound) & (df['income'] <= upper_bound)]

標準化和歸一化

在某些情況下,我們可能需要對數(shù)據(jù)進行標準化或歸一化處理,以便更好地進行模型訓練。

# 標準化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df[['age', 'income']] = scaler.fit_transform(df[['age', 'income']])

# 歸一化
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
df[['age', 'income']] = scaler.fit_transform(df[['age', 'income']])

保存清洗后的數(shù)據(jù)

最后,我們將清洗后的數(shù)據(jù)保存到一個新的 CSV 文件中,以便后續(xù)使用。

# 保存清洗后的數(shù)據(jù)
df.to_csv('cleaned_data.csv', index=False)

實戰(zhàn)案例:處理電商用戶數(shù)據(jù)

假設我們有一個電商用戶的 CSV 文件 users.csv,包含用戶的年齡、收入、地址等信息。我們需要對其進行數(shù)據(jù)清洗,以確保數(shù)據(jù)的質量。

步驟 1:讀取數(shù)據(jù)

# 讀取 CSV 文件
df = pd.read_csv('users.csv')

# 查看前 5 行數(shù)據(jù)
print(df.head())

步驟 2:檢查數(shù)據(jù)基本信息

# 查看數(shù)據(jù)形狀
print(f"數(shù)據(jù)形狀: {df.shape}")

# 查看列名
print(f"列名: {df.columns.tolist()}")

# 查看數(shù)據(jù)類型
print(f"數(shù)據(jù)類型: \n{df.dtypes}")

步驟 3:處理缺失值

# 檢查缺失值
print(df.isnull().sum())

# 填充缺失值
df['age'].fillna(df['age'].mean(), inplace=True)  # 用平均值填充年齡列的缺失值
df['income'].fillna(0, inplace=True)  # 用 0 填充收入列的缺失值

# 刪除含有缺失值的行
df.dropna(subset=['address'], inplace=True)  # 刪除地址列中含有缺失值的行

步驟 4:處理重復值

# 檢查重復值
print(df.duplicated().sum())

# 刪除重復值
df.drop_duplicates(inplace=True)

步驟 5:數(shù)據(jù)類型轉換

# 將 age 列轉換為整數(shù)類型
df['age'] = df['age'].astype(int)

# 將 income 列轉換為浮點數(shù)類型
df['income'] = df['income'].astype(float)

步驟 6:處理異常值

# 使用 Z-score 方法檢測異常值
z_scores = np.abs(stats.zscore(df['income']))
df = df[z_scores < 3]  # 保留 Z-score 小于 3 的數(shù)據(jù)

# 使用箱線圖方法檢測異常值
Q1 = df['income'].quantile(0.25)
Q3 = df['income'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
df = df[(df['income'] >= lower_bound) & (df['income'] <= upper_bound)]

步驟 7:保存清洗后的數(shù)據(jù)

# 保存清洗后的數(shù)據(jù)
df.to_csv('cleaned_users.csv', index=False)

總結

本文介紹了如何使用 Python 進行數(shù)據(jù)清洗,包括導入必要的庫、讀取數(shù)據(jù)、檢查數(shù)據(jù)基本信息、處理缺失值、處理重復值、數(shù)據(jù)類型轉換、處理異常值、標準化和歸一化,以及保存清洗后的數(shù)據(jù)。通過一個實戰(zhàn)案例,我們詳細展示了如何處理電商用戶數(shù)據(jù)。

責任編輯:趙寧寧 來源: 小白PythonAI編程
相關推薦

2024-11-20 16:12:31

Python圖像處理計算機視覺

2024-11-20 16:42:03

Python科學計算

2024-11-18 17:16:18

Python性能優(yōu)化編程

2023-05-05 19:29:41

2021-12-07 06:02:15

Redis Docker運維

2022-09-05 07:32:46

mock數(shù)據(jù)Stream

2020-03-23 10:06:05

工具代碼開發(fā)

2023-12-27 07:40:43

HTTP服務器負載均衡

2022-02-20 09:56:28

TCPIP網(wǎng)絡協(xié)議

2023-07-31 21:56:54

哨兵系統(tǒng)redis

2021-01-15 13:18:39

數(shù)據(jù)模型領域模型代碼

2019-07-23 07:30:16

2023-05-11 08:26:56

2024-10-28 12:57:36

Pandas數(shù)據(jù)清洗

2020-12-22 10:02:53

ZabbixMySQL數(shù)據(jù)庫

2021-08-10 05:49:10

網(wǎng)絡協(xié)議C語言Linux操作

2023-05-05 19:16:22

Python數(shù)據(jù)清洗

2022-03-28 14:08:02

Python數(shù)據(jù)清洗數(shù)據(jù)集

2022-08-26 07:02:57

Python工具分割

2025-04-07 00:30:00

DeepSeek大數(shù)據(jù)數(shù)字化
點贊
收藏

51CTO技術棧公眾號