Python学习 | 数据清洗和准备

本文介绍了Python中使用pandas进行数据清洗和准备的方法,包括处理缺失值(如dropna、fillna),数据转换(如移除重复数据、函数映射转换、替换值),字符串操作(如split、join、正则表达式)以及异常值检测。通过这些技巧,可以有效地对数据集进行预处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 处理缺失数据

在pandas中,采用了R语言中的惯用法,即将缺失值表示为NA,它表示不可用not available;使用浮点值NaN(Not a Number) 表示缺失数据。
1.1滤除缺失数据

1)dropna方法

drona方法会丢弃任何含有缺失值的行,如果想丢弃全NA的行或列,传入how='all'参数。

传入thresh参数,来滤出含有n个NaN的行或者列

2)pandas.notnull、布尔索引

1.2填充缺失数据
fillna方法

注:method有两种方式,ffill是后面的缺失值填充前面出现的数值,bfill是前面的缺失值,填充后面出现的数值

2 数据转换

2.1移除重复数据

 duplicated方法返回一个布尔型Series,判断是否有重复项

drop_duplicates方法删除重复行
以上两个方法默认会判断全部列,可以指定部分列进行重复项判断,默认保留的是第一个出现的值组合,传入keep='last'则
保留最后一个。

2.2利用函数或映射进行数据转换
Series的map方法可以接受一个函数或含有映射关系的字典型对象,str.lower方法,将各个值转换为小写

也可以传入一个能够完成全部这些工作的函数:

2.3替换值

replace方法

也可以一次性替换多个值:

传入的参数也可以是字典:

2.4重命名轴索引
先定义一个函数,可以将其赋值给index,这样就可以对DataFrame进行就地修改

如果是创建data的副本,而不是修改原始数据,则使用rename

ename可以结合字典型对象实现对部分轴标签的更新:

2.5离散化和面元划分
连续数据常常被离散化或拆分为“面元”(bin)

2.6检测和过滤异常值
找出某列中绝对值大小超过3的值:

根据这些条件,就可以对值进行设置。下面的代码可以将值限制在区间-3到3以内:

注:np.sign(data)可以生成1和-1

2.7排列和随机采样
 

利用numpy.random.permutation函数可以轻松实现对Series或DataFrame的列的排列工作(permuting,随机重排序)

随机选择子集并不替换原来数据,可在Series和DataFrame上使用sample方法

2.8计算指标/哑变量

另一种常用于统计建模或机器学习的转换方式是:将分类变量(categorical variable) 转换为“哑变量”或“指标矩阵.
如果DataFrame的某一列中含有k个不同的值,则可以派生出一个k列矩阵或DataFrame(其值全为1和0),pandas有一个get_dummies函数可以实现该功能

3 字符串操作

以逗号分隔的字符串可以用split拆分成数段:

split常常与strip一起使用,以去除空白符(包括换行符):

向字符串"::"的join方法传入一个列表或元组,可以将子字符串以双冒号分隔符的形式连接起来

3.1正则表达式

正则表达式常称作regex, 提供了一种灵活的在文本中搜索或匹配(通常比前者复杂) 字符串模式的方式,Python内置的re模块负责对字符串应用正则表达式
拆分一个字符串,分隔符为数量不定的一组空白符\制表符、空格、换行符等:

如果对许多字符串使用同一条正则表达式,可以用re.compile创建regex对象。这样将可以节省大量的CPU时间。

3.2 pandas的矢量化字符串函数

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

### Python 数据清洗准备教程及方法 数据清洗是数据分析机器学习中的重要步骤,Python 提供了丰富的工具库来完成这一任务。以下是关于如何使用 Python 进行数据清洗准备的详细方法教程。 #### 1. 环境准备 在开始数据清洗之前,需要确保安装了必要的库工具。常用的库包括 `pandas`、`numpy` `matplotlib` 等[^3]。可以通过以下命令安装这些库: ```bash pip install pandas numpy matplotlib ``` #### 2. 数据加载 数据清洗的第一步是将数据加载到 Python 中。可以使用 `pandas` 库来读取各种格式的数据文件,例如 CSV、Excel JSON。 ```python import pandas as pd # 读取 CSV 文件 data = pd.read_csv('data.csv') # 读取 Excel 文件 data = pd.read_excel('data.xlsx') # 读取 JSON 文件 data = pd.read_json('data.json') ``` #### 3. 数据检查 在进行数据清洗之前,需要对数据进行初步检查,以了解数据的基本结构质量。 ```python # 查看数据前几行 print(data.head()) # 查看数据基本信息 print(data.info()) # 查看数据统计摘要 print(data.describe()) ``` #### 4. 缺失值处理 缺失值是数据清洗中常见的问题之一。可以使用以下方法处理缺失值: - 删除含有缺失值的行或列 - 使用均值、中位数或众数填充缺失值 代码示例如下: ```python # 删除含有缺失值的行 data_cleaned = data.dropna() # 使用均值填充缺失值 data['column_name'].fillna(data['column_name'].mean(), inplace=True) ``` #### 5. 数据类型转换 确保数据类型正确对于后续分析至关重要。可以使用 `astype()` 方法进行数据类型转换。 ```python # 将某一列转换为整数类型 data['column_name'] = data['column_name'].astype(int) # 将某一列转换为字符串类型 data['column_name'] = data['column_name'].astype(str) ``` #### 6. 去重 重复数据可能会导致分析结果偏差,因此需要去除重复项。 ```python # 去除重复行 data_cleaned = data.drop_duplicates() ``` #### 7. 数据标准化 对于数值型数据,通常需要进行标准化处理,以便不同量纲的数据能够统一比较。 ```python from sklearn.preprocessing import StandardScaler scaler = StandardScaler() data_scaled = scaler.fit_transform(data[['numeric_column']]) ``` #### 8. 文本数据处理 如果数据中包含文本信息,可以使用正则表达式或其他方法进行清理。 ```python # 替换特定字符 data['text_column'] = data['text_column'].str.replace('old_text', 'new_text') # 转换为小写 data['text_column'] = data['text_column'].str.lower() ``` #### 9. 时间数据处理 时间数据需要特殊处理以确保其格式一致。 ```python # 转换为日期时间格式 data['date_column'] = pd.to_datetime(data['date_column']) # 提取年份 data['year'] = data['date_column'].dt.year ``` #### 10. 数据保存 完成数据清洗后,可以将结果保存为新的文件。 ```python # 保存为 CSV 文件 data_cleaned.to_csv('cleaned_data.csv', index=False) # 保存为 Excel 文件 data_cleaned.to_excel('cleaned_data.xlsx', index=False) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值