文章来源:Python数据分析
数据清洗是数据分析关键的一步,直接影响之后的处理工作
数据需要修改吗?有什么需要修改的吗?数据应该怎么调整才能适用于接下来的分析和挖掘?
是一个迭代的过程,实际项目中可能需要不止一次地执行这些清洗操作
处理缺失数据:pd.fillna(),pd.dropna()
1.数据连接(pd.merge)
pd.merge
根据单个或多个键将不同DataFrame的行连接起来
类似数据库的连接操作
示例代码:
运行结果:
1. 默认将重叠列的列名作为“外键”进行连接
示例代码:
运行结果:
2. on显示指定“外键”
示例代码:
运行结果:
3. left_on,左侧数据的“外键”,right_on,右侧数据的“外键”
示例代码:
运行结果:
默认是“内连接”(inner),即结果中的键是交集
how指定连接方式
4. “外连接”(outer),结果中的键是并集
示例代码:
运行结果:
5. “左连接”(left)
示例代码:
运行结果:
6. “右连接”(right)
示例代码:
运行结果:
7. 处理重复列名
示例代码:
运行结果:
8. 按索引连接
示例代码:
运行结果:
2.数据合并(pd.concat)
沿轴方向将多个对象合并到一起
1. NumPy的concat
示例代码:
运行结果:
2. pd.concat
注意指定轴方向,默认axis=0
join指定合并方式,默认为outer
Series合并时查看行索引有无重复
1) index 没有重复的情况
示例代码:
运行结果:
2) index 有重复的情况
示例代码:
运行结果:
3) DataFrame合并时同时查看行索引和列索引有无重复
示例代码:
运行结果:
数据重构
1. stack
将列索引旋转为行索引,完成层级索引
DataFrame->Series
示例代码:
运行结果:
2. unstack
将层级索引展开
Series->DataFrame
认操作内层索引,即level=-1
示例代码:
运行结果:
数据转换
一、 处理重复数据
1 duplicated() 返回布尔型Series表示每行是否为重复行
示例代码:
运行结果:
2 drop_duplicates() 过滤重复行
示例代码:
运行结果:
3. 根据map传入的函数对每行或每列进行转换
Series根据map传入的函数对每行或每列进行转换
示例代码:
运行结果:
二、数据替换
示例代码:
运行结果:
三、全球食品数据分析
项目参考:https://www.kaggle.com/bhouwens/d/openfoodfacts/world-food-facts/how-much-sugar-do-we-eat/discussion
编程从未如此有趣!
领取专属 10元无门槛券
私享最新 技术干货