数据清洗是数据分析关键的一步,直接影响之后的处理工作

数据需要修改吗?有什么需要修改的吗?数据应该怎么调整才能适用于接下来的分析和挖掘?

是一个迭代的过程,实际项目中可能需要不止一次地执行这些清洗操作

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字符串函数

最新文章

  1. 数据库为什么要用B+树结构--MySQL索引结构的实现
  2. poj 1691 图方块 end
  3. 安装swoole 扩展,在phpinfo中显示,但是php -m 中不显示的问题
  4. Avizo - 高级三维可视化及分析软件
  5. java基础知识回顾之---java String final类普通方法的应用之字符串数组排序
  6. Annotation注解
  7. Git使用过程
  8. Android 开发之Matrix图片处理类的使用
  9. Android虚拟机安装
  10. run in thread
  11. js 时间戳转时间格式
  12. DataGrid 查不出数据 注意事项
  13. [Umbraco] Data Types介绍
  14. HDU 6153 扩展kmp
  15. Vue.js开始第一个项目
  16. SVN详细配置与使用 ——一步步教会您使用
  17. 【BZOJ4101】[Usaco2015 Open]Trapped in the Haybales Silver 二分
  18. Vue - 如何实现一个双向绑定
  19. (Miller Rabin算法)判断一个数是否为素数
  20. 服务器部署之nginx的配置

热门文章

  1. leetcode & Mock Interview
  2. Flutter 1.5
  3. 阿里面试这样问:redis 为什么把简单的字符串设计成 SDS?
  4. ForkJoin、并行流计算、串行流计算对比
  5. 04_Mysql配置文件(重要参数)
  6. HTML5中对于块级元素和行内元素的总结
  7. 微信小程序:上滑触底加载下一页
  8. Power BI成功的背后
  9. Linux自学之旅-基础命令(chown和chgrp)
  10. ajax请求添加自定义header参数