By 马修·普兹比拉,Favour Delivery的高级数据科学家
照片由 布鲁斯·洪 on Unsplash [1]。
目录
- 介绍
- 多重条件
- 合并多个特定列
- 总结
- 参考资料
介绍
无论您是从数据工程师/数据分析师转型,还是想成为更高效的数据科学家,查询数据框都可以证明是返回所需特定行的非常有用的方法。 需要注意的是,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
。 然后,我们列出了要合并的特定列,同时返回列 Gender
, Birthdate
,并且新的 Numeric
专栏也是如此。 列是列的列表,其名称为 cols
.
合并数据框。 作者截图[5]。
正如您所看到的,这种合并数据帧的方法是一种简单的方法,可以获得与 SQL 查询相同的结果。
总结
在本教程中,我们看到了您将在 SQL 中执行的两个常见问题或查询,但我们在 Python 中使用 pandas 数据帧执行了它们。
总而言之,以下是我们使用的两种场景:
- 从多个条件返回总数据集中的行百分比
- 合并多个特定列以返回带有新列的最终数据帧
我希望您觉得我的文章既有趣又有用。 如果您同意或不同意这些方法,请随时在下面发表评论。 为什么或者为什么不? 这些当然可以进一步澄清,但我希望我能够阐明一些使用 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