目录
介绍
连接DataFrames
合并DataFrames
摘要
大多数数据分析不是在单个系统或数据集上进行的,因此在此步骤中,我们着眼于组合多个数据集以提供更大的数据图。
- 下载CSV和数据库文件-127.8 KB
- 下载源代码122.4 KB
本文是使用Python和Pandas进行数据清洗系列的一部分。它旨在利用数据科学工具和技术来使开发人员快速启动并运行。
如果您想查看本系列的其他文章,可以在这里找到它们:
- 第1部分-介绍Jupyter和Pandas
- 第2部分-将CSV和SQL数据加载到Pandas中
- 第3部分-纠正Pandas中的缺失数据
- 第4部分-合并Pandas中的多个数据集
- 第5部分-清理Pandas DataFrame中的数据
- 第6部分-重塑Pandas DataFrame中的数据
- 第7部分-使用Seaborn和Pandas进行数据可视化
处理所有缺失的值后,让我们合并来自产品、客户和购买数据集的数据,以在单个DataFrame中获得更完整的数据集。这样可以更好地了解我们使用该数据集的方向以及可以利用的总体见解。
请注意,我们已经创建了完整的Jupyter Notebook,其中包含该系列模块的源数据文件,您可以在本文头部下载和安装。
Pandas提供了多种将数据与不同逻辑集组合的方法。在探究我们可能使用的一些更复杂的组合集之前,让我们看一些简单的方法。
连接DataFrames合并数据的核心功能是concat()。此功能提供了两个DataFrame的简单连接,可以使用类似于传统关系数据库的并集选项或交集逻辑来扩展它们。
- 当列匹配时,concat方法将DataFrames连接在一起。
concat()本身将使用相同的键或“列标题”将两个或多个DataFrame连接在一起,然后将各行推在一起。例如,两个分别具有X,Y,Z列和10行的DataFrame将结合在一起成为具有X,Y,Z列和20行数据的单个DataFrame。
concat函数具有多种用于合并数据的选项,包括但不限于:
- 外部连接将来自两个或多个DataFrame的数据连接起来,并包括没有匹配键的行(结果可能不包含任何值)。
- 内连接仅在两个或多个DataFrame的帧与键匹配的情况下才连接数据(结果可能会删除不匹配的行)。
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_on和right_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,我们可以进一步对其进行操作以呈现数据以进行可视化。
现在,我们将在整理数据以进行可视化之前研究清理可能导致某些问题的最后一个值和键。