数据清洗是整个数据分析过程的第一步,也是整个数据分析项目中最耗费时间的一步。数据清洗的过程决定了数据分析的准确性。随着大数据的越来越普及,数据清洗是必备的技能之一,本教程将较为完整地介绍利用python进行数据清洗的整个过程。即适合零基础的小白也可作为数据清洗大佬的复习指南。文章较长,干货较多,建议大家先收藏后观看,希望对大家有所帮助。

为了方便阅读和复习,本教程中的代码均采用图片形式,源代码和所需要的数据在下面的链接里
链接:https://pan.baidu.com/s/1-3PMsSs5XKjhszVXQIABpw
提取码:23uk

课程大纲

  • 1.数据清洗之常用工具
    • 1.1 Numpy
      • Numpy常用数据结构
      • Numpy常用方法
      • 数组访问方法
      • Numpy常用数据清洗函数
    • 1.2 Pandas
      • Pandas常用数据结构series和方法
      • Pandas常用数据结构dataframe和方法
      • series和dataframe常用方法
  • 2.数据清洗之文件操作
    • 2.1 csv文件读写
    • 2.2 excel文件读写
    • 2.3 数据库文件读写
  • 3. 数据清洗之数据表处理
    • 3.1 数据常用筛选方法
    • 3.2 数据增加和删除
    • 3.3 数据修改和查找
    • 3.4 数据整理
    • 3.5层次化索引
  • 4. 数据清洗之数据转换
    • 4.1 日期格式数据处理
    • 4.2 字符串数据处理
    • 4.3 高阶函数数据处理
  • 5. 数据清洗之数据统计
    • 5.1 数据分组运算
    • 5.2 聚合函数使用
    • 5.3 分组对象与apply函数
    • 5.4 透视图与交叉表
  • 6. 数据清洗之数据预处理
    • 6.1 重复值处理
    • 6.2 缺失值处理
    • 6.3 异常值处理
    • 6.4 数据离散化处理
  • 7. 总结与梳理
    • 7.1 数据清洗步骤
    • 7.2 函数大全
    • 7.3 数据清洗之总结

1.数据清洗之常用工具

数据清洗意义

  1. 现实生活中,数据并非完美的, 需要进行清洗才能进行后面的数据分析
  2. 数据清洗是整个数据分析项目最消耗时间的一步
  3. 数据的质量最终决定了数据分析的准确性
  4. 数据清洗是唯一可以提高数据质量的方法,使得数据分析的结果也变得更加可靠

数据清洗常用工具

  1. 目前在Python中, numpy和pandas是最主流的工具
  2. Numpy中的向量化运算使得数据处理变得高效
  3. Pandas提供了大量数据清洗的高效方法
  4. 在Python中,尽可能多的使用numpy和pandas中的函数,提高数据清洗的效率

1.1 Numpy

Numpy常用数据结构

  1. Numpy中常用的数据结构是ndarray格式
  2. 使用array函数创建,语法格式为array(列表或元组)
  3. 可以使用其他函数例如arange、linspace、zeros等创建

Numpy常用方法

  1. ndim: 返回int,表示ndarray的维度
  2. shape:返回尺寸,几行几列
  3. size:返回数组元素的个数
  4. dtype:返回数组中元素的类型
  5. 运算:直接可以在每个元素加减乘除

数组访问方法

Numpy常用数据清洗函数

  1. 排序函数
    • sort函数: 从小到大进行排序
    • argsort函数: 返回的是数据中从小到大的索引值
  2. 数据的搜索
    • np.where: 可以自定义返回满足条件的情况
    • np.extract: 返回满足条件的元素值

1.2 Pandas

Pandas常用数据结构series和方法

  1. 通过pandas.Series来创建Series数据结构。
  2. pandas.Series(data,index,dtype,name)。
  3. 上述参数中,data可以为列表,array或者dict。
  4. 上述参数中, index表示索引,必须与数据同长度,name代表对象的名称

Pandas常用数据结构dataframe和方法

  1. 通过pandas.DataFrame来创建DataFrame数据结构。
  2. pandas. DataFrame(data,index,dtype,columns)。
  3. 上述参数中,data可以为列表,array或者dict。
  4. 上述参数中, index表示行索引, columns代表列名或者列标签

series和dataframe常用方法

  1. values 返回对象所有元素的值
  2. index 返回行索引
  3. dtypes 返回索引
  4. shape 返回对象数据形状
  5. ndim 返回对象的维度
  6. size 返回对象的个数
  7. columns 返回列标签(只针对dataframe数据结构)

2.数据清洗之文件操作

  1. Pandas读写CSV文件和相关参数解释
  2. Pandas读写excel文件和相关参数解释
  3. Pandas与mysql的交互

2.1 csv文件读写

  1. pandas内置了10多种数据源读取函数,常见的就是CSV和EXCEL
  2. 使用read_csv方法读取,结果为dataframe格式
  3. 在读取csv文件时,文件名称尽量是英文
  4. 参数较多,可以自行控制,但很多时候用默认参数
  5. 读取csv时,注意编码,常用编码为utf-8、gbk 、gbk2312和gb18030等
  6. 使用to_csv方法快速保存

2.2 excel文件读写

  1. 使用read_excel读取,读取后的结果为dataframe格式
  2. 读取excel文件和csv文件参数大致一样, 但要考虑工作sheet页
  3. 参数较多,可以自行控制,但很多时候用默认参数
  4. 读取excel时,注意编码,常用编码为utf-8、gbk 、gbk2312和gb18030等
  5. 使用to_excel快速保存为xlsx格式

2.3 数据库文件读写

  1. 使用sqlalchemy建立连接
  2. 需要知道数据库的相关参数,如数据库IP地址、用户名和密码等
  3. 通过pandas中read_sql 函数读入, 读取完以后是dataframe格式
  4. 通过dataframe的to_sql方法保存

数据库建立连接参数
conn =create_engine(‘mysql+pymysql://user:passward@IP:3306/test01’)
• root: 用户名
• passward: 密码
• IP : 服务器IP,本地电脑用localhost
• 3306: 端口号
• test01 : 数据库名称

df.to_sql(name, con=engine, if_exists=‘replace/append/fail’,index=False)
• name是表名
• con是连接
• if_exists:表如果存在怎么处理。三个选项 append代表追加, replace代表删除原表,建立新表,fail代表什么都不干
• index=False:不插入索引index

3. 数据清洗之数据表处理

3.1 数据常用筛选方法

  1. 在数据中,选择需要的行或者列
  2. 基础索引方式,就是直接引用
  3. ioc[行索引名称或者条件,列索引名称或者标签]
  4. iloc[行索引位置,列索引位置]
  5. 注意, 区分loc和iloc


3.2 数据增加和删除

  1. 在数据中,直接添加列
  2. 使用df.insert方法在数据中添加一列
  3. 掌握drop(labels,axis,inplace=True) 的用法
  4. labels表示删除的数据, axis表示作用轴,inplace=True表示是否对原数据生效
  5. axis=0按行操作, axis=1按列操作
  6. 使用del函数直接删除其中一列

参数解释

3.3 数据修改和查找

  1. 在数据中, 可以使用rename修改列名称或者行索引名称
  2. 使用loc方法修改数据
  3. 使用loc方法查找符合条件的数据
  4. 条件与条件之间用&或者|连接,分别代表‘且’和‘或’
  5. 使用between和isin选择满足条件的行

3.4 数据整理

定义:在数据清洗过程中,很多时候需要将不用的数据整理在一起,方便后续的分析,这个过程也叫数据合并

合并方法:常见的合并方法有堆叠和按主键进行合并,堆叠又分为横向堆叠和纵向堆叠,按主键合并类似于sql里面的关联操作

  1. 横向堆叠将两张表或多张表在X轴方向,即横向拼接在一起
  2. 纵向堆叠将两张表或多张表在Y轴方向,即纵向拼接在一起
  3. 注意使用concat时,axis =1用于横向,0代表纵向
  4. 注意join取inner或者outer时,分别代表交集和并集

关联操作
纵向合并


3.5层次化索引

定义:在一个轴上拥有两个或者两个以上的索引
• 使用loc语句进行访问
• loc里面接受tuple,如loc[(a,b),:]


4. 数据清洗之数据转换

4.1 日期格式数据处理

  1. Pandas中使用to_datetime()方法将文本格式转换为日期格式
  2. dataframe数据类型如果为datetime64,可以使用dt方法取出年月日等
  3. 对于时间差数据,可以使用timedelta函数将其转换为指定时间单位的数值
  4. 时间差数据,可以使用dt方法访问其常用属性

4.2 字符串数据处理

  1. Pandas中提供了字符串的函数,但只能对字符型变量进行使用
  2. 通过str方法访问相关属性
  3. 可以使用字符串的相关方法进行数据处理

4.3 高阶函数数据处理

  1. 在dataframe中使用apply方法,调用自定义函数对数据进行处理
  2. 函数apply, axis=0表示对行进行操作,axis=1表示对列进行操作
  3. 可以使用astype函数对数据进行转换
  4. 可以使用map函数进行数据转换

5. 数据清洗之数据统计

5.1 数据分组运算

分组计算根据某个或者某几个字段对数据集进行分组,然后运用特定的函数,得到结果

  1. 使用groupby方法进行分组计算,得到分组对象GroupBy
  2. 语法为df.groupby(by=)
  3. 分组对象GroupBy可以运用描述性统计方法, 如count、mean 、median 、max和min等

5.2 聚合函数使用

  1. 对分组对象使用agg聚合函数
  2. Groupby.agg(func)
  3. 针对不同的变量使用不同的统计方法

5.3 分组对象与apply函数

  1. 函数apply即可用于分组对象,也可以作用于dataframe数据
  2. Groupby.apply(func)
  3. 需要注意axis=0和axis=1的区别

5.4 透视图与交叉表

在数据分析中,数据透视表是常见的工具之一,需要根据行或列对数据进行各个维度数据的汇总,在pandas中,提供了相关函数解决此类问题,交叉表更多用于频数的分析。

pivot_table( data, index, columns,values, aggfunc, fill_value,margins, margins_name=)

Index :      行分组键
columns:     列分组键
values:      分组的字段,只能为数值型变量
aggfunc:     聚合函数
margins:     是否需要总计

交叉表用于计算分组频率
pd.crosstab(index,columns,normalize)

Index: 行索引
Columns: 列索引
Normalize:  数据对数据进行标准化,index表示行,column表示列

6. 数据清洗之数据预处理

6.1 重复值处理

  1. 数据清洗一般先从重复值和缺失值开始处理
  2. 重复值一般采取删除法来处理
  3. 但有些重复值不能删除,例如订单明细数据或交易明细数据等

6.2 缺失值处理

  1. 缺失值首先需要根据实际情况定义
  2. 可以采取直接删除法
  3. 有时候需要使用替换法或者插值法
  4. 常用的替换法有均值替换、前向、后向替换和常数替换

6.3 异常值处理

  1. 指那些偏离正常范围的值,不是错误值
  2. 异常值出现频率较低,但又会对实际项目分析造成偏差
  3. 异常值一般用过箱线图法(分位差法)或者分布图(标准差法)来判断
  4. 异常值往往采取盖帽法或者数据离散化


6.4 数据离散化处理

  1. 数据离散化就是分箱
  2. 一般常用分箱方法是等频分箱或者等宽分箱
  3. 一般使用pd.cut或者pd.qcut函数

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)

x,类array对象,且必须为一维,待切割的原形式
bins, 整数、序列尺度、或间隔索引。如果bins是一个整数,它定义了x宽度范围内的等宽面元数量,但是在这种情况下,x的范围在每个边上被延长1%,以保证包括x的最小值或最大值。如果bin是序列,它定义了允许非均匀bin宽度的bin边缘。在这种情况下没有x的范围的扩展。
right,布尔值。是否是左开右闭区间,right=True,左开右闭,right=False,左闭右开
labels,用作结果箱的标签。必须与结果箱相同长度。如果FALSE,只返回整数指标面元。
retbins,布尔值。是否返回面元
precision,整数。返回面元的小数点几位
include_lowest,布尔值。第一个区间的左端点是否包含

pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates=’raise’)

x
q,整数或分位数组成的数组。
q, 整数 或分位数数组 整数比如 4 代表 按照4分位数 进行切割
labels, 用作结果箱的标签。必须与结果箱相同长度。如果FALSE,只返回整数指标面元。

7. 总结与梳理

7.1 数据清洗步骤

  1. 数据获取,使用read_csv或者read_excel
  2. 数据探索,使用shape,describe或者info函数
  3. 行列操作,使用loc或者iloc函数
  4. 数据整合,对不同数据源进行整理
  5. 数据类型转换,对不同字段数据类型进行转换
  6. 分组汇总,对数据进行各个维度的计算
  7. 处理重复值、缺失值和异常值以及数据离散化

7.2 函数大全

  1. merge,concat函数常常用于数据整合
  2. pd.to_datetime常常用于日期格式转换
  3. str函数用于字符串操作
  4. 函数astype用于数据类型转换
  5. 函数apply和map用于更加高级的数据处理
  6. Groupby用于创建分组对象
  7. 透视表函数pd.pivot_table和交叉表pd.crosstab
  8. 分组对象和agg结合使用,统计需要的信息

7.3 数据清洗之总结

数据清洗实质上是将实际业务问题中,脏数据清洗干净,转换为’干净的数据’, 所谓的脏
,指数据可能存在以下几种问题(主要问题):

  1. 数据缺失 (Incomplete) 是属性值为空的情况。如 Occupancy = “ ”
  2. 数据噪声 (Noisy)是数据值不合常理的情况。如 Salary = “-100”
  3. 数据不一致 (Inconsistent)是数据前后存在矛盾的情况。如 Age = “042” 或者
    Birthday = “01/09/1985”
  4. 数据冗余 (Redundant)是数据量或者属性数目超出数据分析需要的情况
  5. 离群点/异常值 (Outliers)是偏离大部分值的数据
  6. 数据重复是在数据集中出现多次的数据

❤本教程到这终于结束了,希望对大家有所帮助❤

python数据清洗入门教程(完整版)相关推荐

  1. python入门教程完整版(懂中文就能学会)-Python入门教程完整版(懂中文就能学会)...

    不过小编的内心是强大的,网友虐我千百遍,我待网友如初恋,因为今天又给大家带来了干货,Python入门教程完整版,完整版啊!完整版! 言归正传,小编该给大家介绍一下这套教程了,希望每个小伙伴都沉迷学习, ...

  2. python3入门与进阶笔记_16_变量进阶 — 黑马程序员《Python入门教程完整版》笔记...

    变量进阶(理解) - 黑马程序员<Python入门教程完整版>笔记 目标变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用变量 和 数据 都是保存在 内存 中的 在 Py ...

  3. python新手教程全套_Python入门教程完整版(懂中文就能学会)

    前几天给大家分享视频<python基础教程>受到了广泛的关注,有人不知道怎么领取,居然称小编为"骗子". 不过小编的内心是强大的,网友虐我千百遍,我待网友如初恋,因为今 ...

  4. Python入门教程完整版

    今天本宝宝给大家带来了干货,Python入门教程完整版,完整版啊!完整版! 言归正传,我来给大家介绍一下这套教程,希望每个小伙伴都沉迷学习,无法自拔! 本套教程学习时间15天 1-3天内容:为Linu ...

  5. python文件目录管理 项目_Python入门教程完整版(懂中文就能学会)

    今天给大家带来了干货,Python入门教程完整版,完整版啊!完整版! 言归正传,小编该给大家介绍一下这套教程了,希望每个小伙伴都沉迷学习,无法自拔 本套教程学习时间15天 1-3天内容:为Linux基 ...

  6. Python入门教程完整版(懂中文就能学会)

    今天本宝宝给大家带来了干货,Python入门教程完整版,完整版啊!完整版! 言归正传,我来给大家介绍一下这套教程,希望每个小伙伴都沉迷学习,无法自拔! 本套教程学习时间15天 1-3天内容:为Linu ...

  7. 最新版python教程_Python入门教程完整版(懂中文就能学会)

    前几天给大家分享视频<python基础教程>受到了广泛的关注,有人不知道怎么领取,居然称小编为"骗子". 不过小编的内心是强大的,网友虐我千百遍,我待网友如初恋,因为今 ...

  8. python设计游戏的背景_04_游戏背景 — 黑马程序员《Python入门教程完整版》笔记...

    游戏背景 黑马程序员<Python入门教程完整版>笔记 - 黑马程序员<Python入门教程完整版>笔记 目标背景交替滚动的思路确定 显示游戏背景 01. 背景交替滚动的思路确 ...

  9. python中文编程教学_Python入门教程完整版400集(懂中文就能学会)快来带走

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

  10. python免费全套教程-2020全网 最详细的Python入门教程完整版,无偿分享,收藏

    简介:Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程.Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数编程语言的 ...

最新文章

  1. Mybatis缓存机制理解及配置
  2. 你应该知道的高性能无锁队列Disruptor
  3. 重磅! SLAM从入门到精通系统教程汇总
  4. 文件管理器-android源代码
  5. Java SE、Java EE、Java ME三者的区别
  6. 如何判断字符串已经被url编码_如何判断回文数?不要再将整数转为字符串来解决这个问题了...
  7. 蚂蚁金服入职考试_程序员入职蚂蚁金服被质疑,网友评论人生污点,不把外包当人?...
  8. 中文信息处理(三)—— 词性标注
  9. win11WiFi驱动如何下载 windows11WiFi驱动下载的步骤方法
  10. Layer报错:TypeError n.sort is not a function
  11. flowable 监听器中无法获取 oauth 上下文对象
  12. archive.php 不起作用,PHP ZipArchive在Laravel中不起作用
  13. 以4%参数量比肩GPT-3!Deepmind 发布检索型 LM,或将成为 LM 发展新趋势!?
  14. Zotero文献管理软件使用指南——入门篇
  15. FreeMarker常见指令的简单介绍—快速入门(二)
  16. sklearn的系统学习——决策树分类器(含有python完整代码)
  17. 【计算机游戏开发】游戏交互界面设计
  18. 硬核分享|探针盒子?不用怕!手把手教你打造专属隐私保护工具
  19. 2021年中国LED工业照明市场趋势报告、技术动态创新及2027年市场预测
  20. Docker 从入门到入坑。

热门文章

  1. 钢板弹簧matlab,Matlab/GUI在钢板弹簧悬架设计中的应用
  2. php文章重复度检测,彻底解决网站存在的内容重复度的方法
  3. creo绘图属性模板_最好用的工程图格式文件及建模模板文件
  4. CefSharp 实现拖拉滑动验证Demo
  5. 单片机实验报告实验七:定时器实验
  6. 页面置换算法之最佳置换算法的模拟(C++)
  7. matlab进化树的下载,MEGA官网下载|MEGA进化树 V7.0.26 官方最新版 下载_当下软件园_软件下载...
  8. Unity3D中Grid Layout Group组件一键实现自动排版Image
  9. G312高速公路S标段路线设计--金陵科技学院道路毕业设计
  10. java工程师考华为证有用吗_华为初级认证网络工程师有什么用?大学生适合考吗?...