作为一名数据科学家,可能会在项目中遇到需要从多个数据源收集数据的情况。在开始探索和建模之前,首先需要将这些数据集合并(以表格、数据帧等形式)。本文将介绍如何在不丢失任何信息的情况下完成这一任务。
虽然这听起来是一个简单的场景,但对于许多新手来说可能会感到有些畏惧,尤其是那些不熟悉Python编程的人。可以将这个问题大致分为两种情况:
第一种情况是,具有相似属性的数据可能分布在多个文件中。例如,假设被提供了多个文件,每个文件都存储了一年中特定一周的销售信息。因此,将拥有52个文件来覆盖整个年份。每个文件将具有相同数量和名称的列。
第二种情况是,可能需要从多个来源合并信息。例如,假设想要获取购买产品的人的联系信息。这里有两个文件——第一个包含销售信息,第二个包含客户信息。
本文将展示如何在Python中处理这两种情况,并合并多个数据帧。
为了本文的目的,将使用一个流行且易于理解的例子。考虑一个特定学校中的考试情况。有各种科目,每个科目都分配了不同的老师。他们更新自己的文件,关于学生的成绩和整体表现。这里谈论的是多个文件!
在本文中,将使用两个这样的文件来演示Python中函数的工作。第一个文件包含12年级学生的数据,另一个文件包含10年级的数据。还将使用第三个文件,存储学生的名字和学生ID。
注意:虽然这些数据集是从零开始创建的,但鼓励将学到的知识应用到自己选择的数据集上。
将按照以下步骤来解决这个问题:
在本文中,将使用三个不同的数据集。首先,需要将这些文件加载到单独的数据帧中。
# 这里是加载数据集的代码示例
前两个数据帧包含学生的百分比和他们的学生ID。在第一个数据帧中,有10年级学生的分数,而第二个数据帧包含12年级学生的分数。第三个数据帧包含学生的名字和他们各自的学生ID。
# 这里是使用'head'函数检查每个数据帧的前几行的代码示例
让合并10年级和12年级的文件,以找出学生的平均分数。在这里,将使用Pandas库中的'append'函数。
# 这里是使用'append'函数合并数据帧的代码示例
输出:((50,3),(50,3),(100,3))。
如所见,'append'函数将两个数据帧垂直添加。
结果数据帧是allMarks。上述比较了所有三个数据帧的形状。
接下来,让看看'allMarks'的内容并计算平均值。
# 这里是查看'allMarks'内容并计算平均值的代码示例
输出:49.74。
现在,假设想要找到两个批次中排名第一的学生的名字。这里,不需要垂直添加数据帧。
需要水平扩展以添加一列学生的名字。
为此,将找到最高分数:
# 这里是找到最高分数的代码示例
输出:100。
学生获得的最高分数是100。现在,将使用'merge'函数找到这个学生的名字。
# 这里是使用'merge'函数找到学生名字的代码示例
最后,结果数据帧将学生的名字与他们的分数一起映射。
'merge'函数需要一个必要的属性,两个数据帧将根据这个属性进行合并。需要在'on'参数中传递这个列的名称。
'merge'的另一个重要参数是'how'。这指定了想要在数据帧上执行的连接类型。以下是可以执行的不同连接类型(SQL用户对此将非常熟悉):
还可以在使用'sort'参数对数据帧进行排序。这些是在合并两个数据帧时最常用的参数。
现在,将查看数据帧中包含100'Exam points'的行:
# 这里是查看包含100分的行的代码示例
。
。