数据预处理常用操作

本文详细介绍了使用Pandas库进行数据预处理的各种操作,包括删除重复值、处理缺失值、数据类型转换、列名重命名、数据填充、筛选、排序、合并、分组以及异常值处理和文本数据清洗,以实例演示了如何在实际项目中应用这些技术。
摘要由CSDN通过智能技术生成

数据预处理相关操作:

删除重复值:
df.drop_duplicates(inplace=True)  # 删除数据框df中的重复行 inplace表示是否在源数据本身上修改
取出某些行和列:
#  axis=1 表示列 axis=0 表示行
df.drop(['column_name1', 'column_name2'], axis=1, inplace=True)  # 删除指定的列
处理缺失值:
df.isnull(inplace=True)  # 检查数据框df中的缺失值
df.dropna()  # 删除包含缺失值的行或列
df.fillna(value)  # 将缺失值填充为指定的值value
数据类型转化:
df['column_name'] = df['column_name'].astype(new_type)  # 将列的数据类型转换为new_type

数据列名重命名:
df.rename(columns={'old_column_name': 'new_column_name'}, inplace=True)  # 重命名列名
数据填充:
df.fillna(method='ffill', inplace=True)  # 使用前一个非缺失值填充缺失值
df.fillna(method='bfill', inplace=True)  # 使用后一个非缺失值填充缺失值
数据筛选:
df[df['column_name'] > threshold]  # 根据条件筛选数据框df中的行
df.loc[row_indexer, column_indexer]  # 根据行和列的索引值进行数据筛选
数据排序:
df.sort_values(by='column_name', ascending=True, inplace=True)  # 按指定列的值进行升序排序
数据合并:
df_merged = pd.concat([df1, df2], axis=0)  # 沿行方向合并两个数据框
数据分组:
grouped_df = df.groupby('group_column')['numeric_column'].mean()  # 按分组列计算数值列的平均值
异常值处理:
df[df['column_name'] < lower_bound] = lower_bound  # 将低于下限的异常值替换为下限值
df[df['column_name'] > upper_bound] = upper_bound  # 将高于上限的异常值替换为上限值
文本数据清洗:
df['column_name'] = df['column_name'].str.strip()  # 去除文本数据中的首尾空格
df['column_name'] = df['column_name'].str.lower()  # 将文本数据转换为小写
df['column_name'] = df['column_name'].str.replace(pattern, replacement)  # 使用正则表达式替换文本数据
案例:
import pandas as pd

# 创建示例数据
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, None, 35, 40],
    'Gender': ['Female', 'Male', 'Male', None, 'Female'],
    'Salary': [5000, 6000, 4500, None, 5500]
}
df = pd.DataFrame(data)
# 删除重复值
df.drop_duplicates(inplace=True)
# 处理缺失值
df.dropna(inplace=True)  # 删除包含缺失值的行
df.fillna({'Age': df['Age'].mean(), 'Salary': df['Salary'].median()}, inplace=True)  # 填充缺失值为均值和中位数

# 数据类型转换
df['Age'] = df['Age'].astype(int)
df['Salary'] = df['Salary'].astype(float)

# 数据筛选
df_filtered = df[df['Age'] > 30]  # 筛选年龄大于30岁的数据

# 异常值处理
lower_bound = 3000
upper_bound = 10000
df['Salary'] = df['Salary'].clip(lower_bound, upper_bound)  # 将薪资超出范围的异常值替换为范围边界值

# 文本数据清洗
df['Name'] = df['Name'].str.strip()  # 去除姓名中的首尾空格
df['Name'] = df['Name'].str.lower()  # 将姓名转换为小写

# 显示处理后的数据
print(df)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

acmakb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值