数据清洗、合并、转化和重构

文章来源: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

编程从未如此有趣!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180702G0ANUS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

同媒体快讯

扫码关注腾讯云开发者

领取腾讯云代金券