📜  使用Python对来自 MongoDB Atlas 的样本数据进行 3D 绘图

📅  最后修改于: 2022-05-13 01:55:12.195000             🧑  作者: Mango

使用Python对来自 MongoDB Atlas 的样本数据进行 3D 绘图

MongoDB是最流行的 NoSQL 数据库,是一个开源的面向文档的数据库。术语“NoSQL”的意思是“非关系的”。这意味着 MongoDB 不是基于类似表的关系数据库结构,而是提供了一种完全不同的数据存储和检索机制。这种存储格式称为 BSON(类似于 JSON 格式)。

绘制来自 MongoDB Atlas 的样本数据

在开始绘制示例数据之前,请确保您已在 MongoDB Cloud Atlas 上创建了一个帐户。如果您尚未创建,请按照以下步骤操作。

  • 从这里打开 MongoDB Atlas Cloud。
  • 通过选择适合您的软件包创建帐户(您也可以选择免费版本,足以满足本文和学习目的)。
  • 单击位于左侧菜单栏的集群视图。
  • 单击Ellipses 按钮(...)并选择Load Sample Dataset
  • 添加示例数据集后,单击连接按钮。
    python-mongodb-cluster-1
  • 然后将 IP 地址列入白名单(选择您当前的 IP 地址或键入 0.0.0.0/0 IP 以允许它从任何地方访问。单击下图所示的按钮。
    python-mongodb-cluster-connect-2
  • 然后单击连接到应用程序按钮。
  • 复制 cluster_uri 并将其粘贴到“course_cluster_uri”。

方法:

  • 导入 PyMongo 和 Axes3d 以及 Matplotlib。
  • 通过登录转到 MongoDB Atlas Cloud。
  • 按照上述步骤粘贴“course_cluster_uri”。
  • 使用“pymongo.MongoClient(course_url)”获取客户端。
  • 现在,通过删除明显是不良数据的异常值,将查询设置为过滤条件和标准。
  • 将光标转换为列表。
  • 现在将绘图设置为“scatter/bar/hist”,并设置 Title、X 轴标签、Y 轴标签和图例。
  • 不要忘记键入 plt.show()。

下面是实现。

# Using PyMongo to create plots 
import pymongo
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
   
      
course_cluster_uri = 'your_connection_string'
course_client = pymongo.MongoClient(course_cluster_uri)
  
# sample dataset
db = course_client['sample_weatherdata']
  
# sample collection
weather_data = db['data'] 
  
# remove outliers that are clearly bad data
query = { 
    'pressure.value': { '$lt': 9999 }, 
    'airTemperature.value': { '$lt': 9999 },
    'wind.speed.rate': { '$lt': 500 },
}
   
# convert our cursor into a list
l = list(weather_data.find(query).limit(1000))
   
# pull out the 3 variables we care
# about into their own respective lists
pressures = [x['pressure']['value'] for x in l]
air_temps = [x['airTemperature']['value'] for x in l]
wind_speeds = [x['wind']['speed']['rate'] for x in l]
   
# here you'll write the code to plot pressures,
# air_temps, and wind_speeds in a 3D plot
plt.clf()
fig = plt.figure()
  
ax = fig.add_subplot(111, projection = '3d')
ax.scatter(pressures, air_temps, wind_speeds)
  
ax.set_xlabel("Pressure")
ax.set_ylabel("Air Temperature")
ax.set_zlabel("Wind Speed")
  
plt.show()