在数据科学和机器学习领域,掌握多种工具对于处理各种任务至关重要。没有数据,这两个领域就无法存在。因此,了解如何存储、操作、摄取和导入数据对于任何相关领域的从业者来说都是至关重要的。
今天,将探讨在MongoDB数据库中使用NoSQL数据时可用的一个非常强大的功能——聚合管道。这些管道在实践良好的MLOps实践、自动化数据操作和导入数据以供网络使用方面发挥了重要作用。
MLOps的步骤分为四个通用类别:
因此,就这些定义的阶段而言,本文的范围将位于数据类别,这使得MLOps的整个过程更加系统化、快速和灵活。
根据正式定义,聚合是一个通过组合几个独立元素来形成或计算元素的过程。因此,在MongoDB中,可以在彼此之上添加各种函数作为独立元素,并形成一个更精细和复杂的函数,该函数可以轻松地以单步完成工作。
在本文中,将向展示如何在MongoDBCompass中使用这些聚合管道,以及如何在Python代码中使用这些管道。如果不了解MongoDB Compass以及如何与Python一起使用,请查看为此目的撰写的另一篇文章。
1. 打开数据库中的集合
以为例,选择了MongoDB本地服务器中“local”数据集中已经存在的startup_log集合。点击startup_log以打开集合。
2. 开始使用聚合管道
点击后,将看到这样的界面,其中所有这些左侧窗口是为聚合的每个元素编写代码的地方,右侧是一旦原始数据执行窗口中提到的任务后将检索到的输出。让看看实际操作。
可以根据需要添加尽可能多的阶段,只需点击前一个阶段下方的“添加阶段”按钮。在图片中看到的第一行是完整原始数据,作为水平对齐的记录。
现在,可以看到每个阶段都有一个绿色按钮,这个开关按钮用于激活或停用管道中的某个特定阶段。如果需要,这对于调试非常有用。按钮左侧的下拉菜单是为每个阶段选择功能的地方。让看看如何操作。
为什么不对数据集执行一个简单的投影功能,只从每个记录中提取‘pid’属性呢?
为了展示它们的多功能性,让创建另一个阶段,并创建一个属性,该属性的值将是属性(startTime)作为字符串(原始数据中以日期时间格式存在)。
完成管道后,不要忘记保存管道,以便以后使用,而不必一次又一次地创建。
点击下图中提到的图标,将看到所有保存的管道。只需将鼠标悬停在希望再次使用的管道名称上,然后将看到一个打开按钮。看看实际操作。
如果不知道如何在Python中使用MongoDB,请查看这篇文章。以下是完成任务的代码。
import pymongo
database = pymongo.MongoClient().local.startup_log
data = database.aggregate(list(
# 聚合管道代码
))
可以看到上面的图片中的‘database’变量是指向‘startup_log’的集合。
即使在所有这些之后,还剩下一小步。看到的聚合结果是一个PyMongo游标,它有助于遍历从管道检索到的值。因此,要将结果数据保存在DataFrame中,只需用Pandas.DataFrame包装游标即可。
import pandas as pd
dataset = pd.DataFrame(data)
data.head()
现在,已经使用单个自动化管道过滤和处理了数据。这难道不感觉很强大吗?对来说确实如此,完全喜欢使用它们,希望也喜欢。