技术创新如何为应用程序开发部门赋能? 1

如何查询您的 Pandas 数据框

源节点: 1017694

如何查询您的 Pandas 数据框

数据科学家对类 SQL Python 函数的看法。


By 马修·普兹比拉,Favour Delivery的高级数据科学家



照片由 布鲁斯·洪 on Unsplash [1]。

目录

 
 

  1. 介绍
  2. 多重条件
  3. 合并多个特定列
  4. 总结
  5. 参考资料

介绍

 
 
无论您是从数据工程师/数据分析师转型,还是想成为更高效的数据科学家,查询数据框都可以证明是返回所需特定行的非常有用的方法。 需要注意的是,pandas 有一个特定的查询函数,适当命名, query。 不过,我将讨论模拟查询、过滤和合并数据的其他方法。 我们将介绍您对数据提出的常见场景或问题,我们将使用 Python 而不是 SQL 来完成。 在下面的段落中,我将概述使用 Python 编程语言查询 pandas 数据帧行的一些简单方法。

多重条件

 
 



样本数据。 截图来自作者[2]。

 

作为数据科学家或数据分析师,我们希望返回特定的数据行。 其中一种场景是您想要在同一行代码中应用多个条件。 为了显示我的示例,我创建了一些名字和姓氏的虚假样本数据,以及他们各自的性别和出生日期。 该数据显示在上面的屏幕截图中。

示例中的多个条件本质上会回答一个特定问题,就像使用 SQL 时一样。 问题是,我们的数据中有多少百分比是男性 OR 2010 年至 2021 年出生的人。

这是解决该问题的代码(有几种方法可以回答这个问题,但这是我的具体方法):

print(“Percent of data who are Males OR were born between 2010 and 2021:”, 100*round(df[(df[‘Gender’] == ‘M’) | (df[‘Birthdate’] >= ‘2010–01–01’) & (df[‘Birthdate’] <= ‘2021–01–01’)][‘Gender’].count()/df.shape [0],4), “%”)

为了更好地可视化此代码,我还包含了上面相同代码的屏幕截图以及输出/结果。 您还可以应用这些条件来返回实际行,而不是获取总行中的行的分数或百分比。



条件代码。 作者截图[3]。

 

这是我们执行的命令的顺序:

  • 返回包含 Male 的行 Gender
  • 包括 OR 功能 |
  • 返回的行数为 Birthdate > 2010 和 2021
  • 将所有这些合并起来,然后除以总行数

正如您所看到的,此代码与您在 SQL 中看到的代码类似。 我个人认为 pandas 更容易,因为它可以减少代码,同时还能够在一个简单的位置直观地看到所有代码,而无需上下滚动(但这种格式只是我的偏好).

合并多个特定列

 
 



合并数据框结果。 作者截图[4]。

 

我们可能已经在其他教程中看到了如何将数据帧合并在一起,所以我想添加一种我没有真正见过的独特方法,即合并多个特定列。 在这种情况下,我们想要连接两个数据帧,其中两个字段在它们之间共享。 您可以看出,如果列更多,此方法可能会更有用。

我们有第一个数据帧 df,然后我们将列合并到第二个数据帧 df2 上。 这是实现我们预期结果的代码:

merged_df = df.merge(df2, how=’inner’, left_on=cols, right_on=cols )

为了更好地可视化这种合并和代码,我提供了下面的屏幕截图。 您会看到第二个数据框如下所示,其中 First 和 Last 名称,就像它们在第一个数据框中一样,但有一个新列, Numeric。 然后,我们列出了要合并的特定列,同时返回列 GenderBirthdate,并且新的 Numeric 专栏也是如此。 列是列的列表,其名称为 cols.



合并数据框。 作者截图[5]。

 

正如您所看到的,这种合并数据帧的方法是一种简单的方法,可以获得与 SQL 查询相同的结果。

总结

 
 
在本教程中,我们看到了您将在 SQL 中执行的两个常见问题或查询,但我们在 Python 中使用 pandas 数据帧执行了它们。

总而言之,以下是我们使用的两种场景:

  1. 从多个条件返回总数据集中的行百分比
  2. 合并多个特定列以返回带有新列的最终数据帧

我希望您觉得我的文章既有趣又有用。 如果您同意或不同意这些方法,请随时在下面发表评论。 为什么或者为什么不? 这些当然可以进一步澄清,但我希望我能够阐明一些使用 pandas 和 Python 而不是 SQL 的方法。 感谢您的阅读!

请随时查看我的个人资料, 马特·普日比拉和其他文章,以及通过 LinkedIn 与我联系。

我不隶属于这些公司。

 
参考资料

[1] 照片由 布鲁斯·洪 on Unsplash(2018)

[2] M. Przybyla,样本数据截图,(2021)

[3] M. Przybyla,条件代码屏幕截图,(2021)

[4] M. Przybyla,合并数据框结果屏幕截图,(2021)

[5] M. Przybyla,合并数据框屏幕截图,(2021)

 
简介: 马修·普兹比拉 是 Favor Delivery 的高级数据科学家和自由技术作家,尤其是在数据科学方面。

原版。 经许可重新发布。

相关新闻:

来源:https://www.kdnuggets.com/2021/08/query-pandas-dataframe.html

时间戳记:

更多来自 掘金队