广告位联系
返回顶部
分享到

Python中数据清洗与处理的常用方法

python 来源:互联网 作者:佚名 发布时间:2025-01-29 11:23:25 人浏览
摘要

在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战。 本文总结了多种数据清洗与处理方法: 缺失值处理包括删除缺失值、固定值填充、前后向填充以及删除缺失率高的列

在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战。

本文总结了多种数据清洗与处理方法:

缺失值处理包括删除缺失值、固定值填充、前后向填充以及删除缺失率高的列;

重复值处理通过删除或标记重复项解决数据冗余问题;

异常值处理采用替换或标记方法控制数据质量;

数据类型转换确保数据格式符合分析需求,例如转换为整数或日期类型;

文本清洗包括去空格、字符替换及转换大小写等操作。

此外,还介绍了数据分组统计、数据分箱与标准化的应用。例如,分组统计可按列求均值,数据分箱能为连续变量赋予分类标签,而归一化则通过压缩数据范围提升模型表现。这些方法能有效提高数据质量与分析效率,是数据科学中不可或缺的能。         

缺失值处理

删除缺失值

1

2

3

df_dropped = df.dropna()

print("\n删除缺失值后:")

print(df_dropped)

用固定值填充缺失值

1

2

3

4

5

6

7

df_filled = df.fillna({

    'title': 'Unknown',

    'author': 'Unknown Author',

    'price': df['price'].mean()

})

print("\n填充缺失值后:")

print(df_filled)

前向填充

1

2

3

df_ffill = df.fillna(method='ffill')

print("\n前向填充缺失值后:")

print(df_ffill)

后向填充

1

2

3

df_bfill = df.fillna(method='bfill')

print("\n后向填充缺失值后:")

print(df_bfill)

删除缺失率高的列

1

2

3

df_dropped_cols = df.dropna(axis=1, thresh=len(df) * 0.5) 

print("\n删除缺失率高的列后:")

print(df_dropped_cols)

重复值处理

删除重复值

1

2

3

df_deduplicated = df.drop_duplicates()

print("\n删除重复值后:")

print(df_deduplicated)

标记重复值

1

2

3

df['is_duplicate'] = df.duplicated()

print("\n标记重复值后:")

print(df)

异常值处理

替换异常值

1

2

3

df['price'] = df['price'].apply(lambda x: x if 0 <= x <= 100 else df['price'].mean())

print("\n替换异常值后:")

print(df)

标记异常值

1

2

3

df['is_outlier'] = df['price'].apply(lambda x: 1 if x < 0 or x > 100 else 0)

print("\n标记异常值后:")

print(df)

数据类型转换

转换为整数类型

1

2

3

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

print("\n转换为整数后:")

print(df)

转换为日期类型

1

2

3

df['date'] = pd.to_datetime(df['date'], errors='coerce')

print("\n转换为日期类型后:")

print(df)

文本清洗

去掉两端空格

1

2

3

df['title'] = df['title'].str.strip()

print("\n去掉两端空格后:")

print(df)

替换特定字符

1

2

3

df['title'] = df['title'].str.replace('[^a-zA-Z0-9\s]', '', regex=True)

print("\n替换特定字符后:")

print(df)

转换为小写

1

2

3

df['title'] = df['title'].str.lower()

print("\n转换为小写后:")

print(df)

数据分组统计

按列分组求均值

1

2

3

grouped = df.groupby('author')['price'].mean()

print("\n按作者分组的平均价格:")

print(grouped)

数据分箱

按价格分箱

1

2

3

4

5

bins = [0, 10, 20, 30]

labels = ['低', '中', '高']

df['price_level'] = pd.cut(df['price'], bins=bins, labels=labels, right=False)

print("\n按价格分箱后:")

print(df)

数据标准化

归一化处理

1

2

3

4

5

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()

df['price_scaled'] = scaler.fit_transform(df[['price']])

print("\n归一化后的数据:")

print(df)


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计