结合Pandas中的多个数据集

目录

介绍

连接DataFrames

合并DataFrames

摘要


大多数数据分析不是在单个系统或数据集上进行的,因此在此步骤中,我们着眼于组合多个数据集以提供更大的数据图。

介绍

本文是使用PythonPandas进行数据清洗系列的一部分。它旨在利用数据科学工具和技术来使开发人员快速启动并运行。

如果您想查看本系列的其他文章,可以在这里找到它们:

处理所有缺失的值后,让我们合并来自产品、客户和购买数据集的数据,以在单个DataFrame中获得更完整的数据集。这样可以更好地了解我们使用该数据集的方向以及可以利用的总体见解。

请注意,我们已经创建了完整的Jupyter Notebook,其中包含该系列模块的源数据文件,您可以在本文头部下载和安装

Pandas提供了多种将数据与不同逻辑集组合的方法。在探究我们可能使用的一些更复杂的组合集之前,让我们看一些简单的方法。

连接DataFrames

合并数据的核心功能是concat()。此功能提供了两个DataFrame的简单连接,可以使用类似于传统关系数据库的并集选项或交集逻辑来扩展它们。

  • 当列匹配时,concat方法将DataFrames连接在一起。

concat()本身将使用相同的键或列标题将两个或多个DataFrame连接在一起,然后将各行推在一起。例如,两个分别具有XYZ列和10行的DataFrame将结合在一起成为具有XYZ列和20行数据的单个DataFrame

concat函数具有多种用于合并数据的选项,包括但不限于:

  • 外部连接将来自两个或多个DataFrame的数据连接起来,并包括没有匹配键的行(结果可能不包含任何值)。
  • 内连接仅在两个或多个DataFrame的帧与键匹配的情况下才连接数据(结果可能会删除不匹配的行)。

合并DataFrames

Pandas还提供了一些选项,可以使用一组数据的行作为输入与另一组数据的键进行合并来合并数据集。这种连接和合并形式非常强大,这就是我们要对数据集进行的处理。

  • merge方法使用左右连接将DataFrames连接在一起

目前,我们的数据集包括三个独立的数据框架:客户、产品和购买。对于应用程序来说,这很有意义,因为您的产品和客户的变化不会太大,但是您的购买可能每天都在变化。

对于数据分析和可视化,将所有数据都放在一个大的DataFrame中更有意义。因此,我们将把客户和产品数据集合并到购买数据中。

创建一个新的代码块并添加以下内容:

combinedData = pd.merge(purchases, customers, left_on='customer_num', right_on='id', sort=False)
combinedData = pd.merge(combinedData, products, left_on='product_num', right_on='id', sort=False)

我们正在使用Pandas合并功能来合并三个DataFrame。第一次合并将购买的DataFrame合并到客户DataFrame中。

这里我们还使用了两个可选参数,left_onright_on。这些参数基于left_on键与right_on键匹配的知识(即使键名称不同)合并表。

最后,我们将sort选项指定为false,因为我们还不需要对数据进行排序,这使该方法的执行速度更快一些。

添加以下行以检查我们新的组合DataFrame

print(combinedData.head(5))
print(combinedData.shape)
print(purchases.shape)

结果如下:

如您所见,我们现在有了一个大的DataFrame,其中包含来自所有三个DataFrame的许多列。

您还将看到,当我们比较purchases DataFrame和结果DataFrame 之间的行数时,我们从6000中减少到5069行。由于merge默认情况下使用内部连接,因此无法与客户匹配的行(因为它们在数据清理的第一阶段已被删除)从合并的DataFrame中删除。

摘要

我们查看了Pandas函数以连接数据集,然后继续将三个DataFrame合并为一个完整的DataFrame,我们可以进一步对其进行操作以呈现数据以进行可视化。

现在,我们将在整理数据以进行可视化之前研究清理可能导致某些问题的最后一个值和键。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值