Python数据分析入门(十):数据清洗和准备
2024-09-08 06:46:13
数据清洗是数据分析关键的一步,直接影响之后的处理工作
数据需要修改吗?有什么需要修改的吗?数据应该怎么调整才能适用于接下来的分析和挖掘?
是一个迭代的过程,实际项目中可能需要不止一次地执行这些清洗操作
1. 处理缺失数据:
- pd.fillna()
pd.dropna()
2. 数据转换
2.1 处理重复数据
duplicated()返回布尔型Series表示每行是否为重复行
示例代码:
import numpy as np
import pandas as pd df_obj = pd.DataFrame({'data1' : ['a'] * 4 + ['b'] * 4,
'data2' : np.random.randint(0, 4, 8)})
print(df_obj) print(df_obj.duplicated())
运行结果:
# print(df_obj)
data1 data2
0 a 3
1 a 2
2 a 3
3 a 3
4 b 1
5 b 0
6 b 3
7 b 0 # print(df_obj.duplicated())
0 False
1 False
2 True
3 True
4 False
5 False
6 False
7 True
dtype: bool
drop_duplicates()过滤重复行
- 默认判断全部列
- 可指定按某些列判断
示例代码:
print(df_obj.drop_duplicates())
print(df_obj.drop_duplicates('data2'))
运行结果:
# print(df_obj.drop_duplicates())
data1 data2
0 a 3
1 a 2
4 b 1
5 b 0
6 b 3 # print(df_obj.drop_duplicates('data2'))
data1 data2
0 a 3
1 a 2
4 b 1
5 b 0
2.2 利用函数或映射进行数据转换
根据map传入的函数对每行或每列进行转换
示例代码:
ser_obj = pd.Series(np.random.randint(0,10,10))
print(ser_obj) print(ser_obj.map(lambda x : x ** 2))
运行结果:
# print(ser_obj)
0 1
1 4
2 8
3 6
4 8
5 6
6 6
7 4
8 7
9 3
dtype: int64 # print(ser_obj.map(lambda x : x ** 2))
0 1
1 16
2 64
3 36
4 64
5 36
6 36
7 16
8 49
9 9
dtype: int64
2.3 替换值
replace根据值的内容进行替换
示例代码:
# 单个值替换单个值
print(ser_obj.replace(1, -100)) # 多个值替换一个值
print(ser_obj.replace([6, 8], -100)) # 多个值替换多个值
print(ser_obj.replace([4, 7], [-100, -200]))
运行结果:
# print(ser_obj.replace(1, -100))
0 -100
1 4
2 8
3 6
4 8
5 6
6 6
7 4
8 7
9 3
dtype: int64 # print(ser_obj.replace([6, 8], -100))
0 1
1 4
2 -100
3 -100
4 -100
5 -100
6 -100
7 4
8 7
9 3
dtype: int64 # print(ser_obj.replace([4, 7], [-100, -200]))
0 1
1 -100
2 8
3 6
4 8
5 6
6 6
7 -100
8 -200
9 3
dtype: int64
3. 字符串操作
3.1 字符串方法
3.2 正则表达式方法
3.3 pandas字符串函数
最新文章
- 数据库为什么要用B+树结构--MySQL索引结构的实现
- poj 1691 图方块 end
- 安装swoole 扩展,在phpinfo中显示,但是php -m 中不显示的问题
- Avizo - 高级三维可视化及分析软件
- java基础知识回顾之---java String final类普通方法的应用之字符串数组排序
- Annotation注解
- Git使用过程
- Android 开发之Matrix图片处理类的使用
- Android虚拟机安装
- run in thread
- js 时间戳转时间格式
- DataGrid 查不出数据 注意事项
- [Umbraco] Data Types介绍
- HDU 6153 扩展kmp
- Vue.js开始第一个项目
- SVN详细配置与使用 ——一步步教会您使用
- 【BZOJ4101】[Usaco2015 Open]Trapped in the Haybales Silver 二分
- Vue - 如何实现一个双向绑定
- (Miller Rabin算法)判断一个数是否为素数
- 服务器部署之nginx的配置