在探讨结构化数据时,数据库是首先浮现在脑海中的词汇。数据库的种类繁多,本文将关注非关系型数据库(NoSQL)。近年来,使用NoSQL数据库存储数据已成为一种常见的方式。NoSQL数据库,也称为“非SQL”或“不仅仅是SQL”,它们以非表格格式存储数据,与关系型数据库不同。
今天,将使用MongoDB,这是一种广泛使用的NoSQL数据库产品,学习如何在MongoDB数据库中使用数据进行数据科学工作。可以在MongoDB的官方网站上了解更多关于NoSQL数据库的信息。
在本教程中,为了简化和方便解释,将使用MongoDB数据库的官方交互式图形用户界面,即MongoDB Compass。以下是它的安装指南。安装MongoDB Compass后,将简要探索其界面。如果是第一次使用,可能不会看到任何最近的条目。连接到本地数据库时,Admin、local和config是MongoDB客户端默认存在的三个数据库。将以admin数据库为例进行演示。
在开始使用MongoDB数据库之前,需要安装它。以下是个人工作环境的官方安装指南。安装Python 3.7或更高版本,这是使用MongoDB客户端的Python模块pymongo的链接。根据特定用例,安装数据科学库,这里将只使用Pandas来创建DataFrame。
import pymongo
# 获取本地MongoDB数据库的访问权限
databases = pymongo.MongoClient()
# 获取admin数据库的访问权限
admin_db = databases.admin
# 获取admin数据库中刚刚创建的'Tutorial'集合的访问权限
tutorial_collection = admin_db.Tutorial
# 现在,导入的iris数据存储在这里。
# 要从集合中获取一个条目/记录/文档,可以写:
tutorial_collection.find_one({})
tutorial_collection.find({})
# 注意:pymongo游标对象是可迭代的,所以将其转换为列表以查看所有值。
list(tutorial_collection.find({}))
# 列表会一直持续到iris数据集的所有150个值。
import pandas as pd
iris_df = pd.DataFrame(list(tutorial_collection.find({})))
iris_df
# 如果不想保留某些列,可以通过两种方式清理它们:
# 第一种是在从数据库检索数据到Python代码之前使用MongoDB聚合管道(本教程范围之外),
# 第二种是在创建DataFrame后清理数据。
# 将通过第二种方法清理`id`列,
iris_df = iris_df.drop("_id", axis=1)
iris_df.head()