当前位置: 首页 > 科技观察

如何在Python中连接多个数据框?

时间:2023-03-17 20:18:29 科技观察

Python编程初学者面临着各种未知的挑战。这是一个让几乎所有有抱负的数据科学家都感到惊讶的场景:您正在从事一个从多个来源收集数据的项目。在进入探索和模型构建部分之前,您需要首先连接这些多个数据集(以表格、数据框等形式)。如何在不丢失任何信息的情况下做到这一点?这听起来像是一个简单的场景,但它可能会让许多新手望而生畏,尤其是那些刚接触Python编程的新手。进一步挖掘,我可以将其大致分为两种情况:首先,具有相似属性的数据可以分布在多个文件中。例如,假设为您提供了多个文件,每个文件都存储了一年中某一周发生的销售信息。因此全年将有52个文件。每个文件都有相同数量的列和名称。其次,您可能需要结合来自多个来源的信息。例如,假设您想获取购买产品的人的联系信息。这里有两个文件,第一个是销售信息,第二个是客户信息。了解手头的问题本文提供了一个易于理解的示例。考虑在特定学校参加考试。每个科目由不同的老师教授。他们更新有关学生成绩和整体表现的文件。这些档案是多个文件!本文使用创建的两个此类文件来演示函数在Python中的工作。第一个文件包含有关12班学生的数据,另一个文件包含有关10班学生的数据。第三个文件也将用于存储学生的姓名和学生ID。注意:虽然这些数据集是从头开始创建的,但我们鼓励将所学知识应用于所选数据集。在Python中合并数据框的分步过程以下是解决此问题的方法:使用Python加载数据集合并两个相似的数据框(追加)合并来自两个数据框的信息(合并)第1步:使用PythonSets加载数据本文将使用三个独立的数据集。首先,将这些文件加载??到单独的数据框中。importpandasasspdmarks10th=pd.read_csv('10thClassMarks.csv')marks12th=pd.read_csv('12thClassMarks.csv')IDandName=pd.read_csv('StudentIDandName.csv')前两个数据框包含学生的百分比及其学生ID。在第一个数据框中,有10班学生的分数,而第二个数据框包含12班学生的分数。第三个数据框包含学生的姓名及其各自的学生ID。来源:btime使用“head”函数检查每个数据框的前几行:marks10th.head()marks12th.head()IDandName.head()第二步:合并两个相似的数据框(Append)put10,12合并班级文件以查找学生的平均分数。这里使用了Pandas库中的“append”函数:allMarks=marks10th.append(marks12th)marks10th.shape,marks12th.shape,allMarks.shapeoutput((50,3),(50,3),(100,3))从输出结果可以看出,两个dataframes是在append函数中垂直相加的。生成的数据框是allMarks。上面比较了所有三个数据框的形状。接下来查看“allMarks”的内容,计算均值:allMarks['ExamPoints'].mean()#AverageMarksoutput:49.74第三步:合并两个数据框的信息(Merge)现在,假设你想找出哪里两个批次中排名第一的学生的名字。这里不需要垂直添加数据框。为了为学生姓名添加另一列,我们将不得不水平缩放。为此,我们找到最高分:allMarks['ExamPoints'].max()#MaximumMarks输出:100学生的最高分是100分。现在,使用“merge”函数找到这个学生的名字:mergedData=allMarks.merge(IDandName,on='studentid')mergedData.head()最后,生成的数据框包含学生的名字和他们的分数。merge函数采用一个必需的属性,两个数据帧将在该属性上合并。该列的名称需要在“on”参数中传递。合并功能的另一个重要参数是“如何”。这指定了对数据帧执行的连接类型。以下是可以执行的不同类型的连接(SQL用户对此非常熟悉):内连接(如果没有给出参数则默认执行)外连接右连接左连接您还可以使用“排序”参数来对数据框进行排序。这些是合并两个数据帧时最常用的参数。来源:Pexels我们现在将看到数据框包含100个“ExamPoints”的行:mergedData.loc[mergedData['ExamPoints']==100]三名学生获得了100分,其中两名在10班。干得好!接下来,我的建议是参加由3个不同文件组成的食物预测挑战赛。很简单,对吧?你不必再为此自责了!您可以继续并将其应用于您选择的任何数据集。