python+MongoDB使用示例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python+MongoDB使用示例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3567字,纯文字阅读大概需要6分钟。
内容图文
本博客起源于博主的大三NoSQL课程设计,采用python+MongoDB结合方式,将数据从txt文件导入MongoDB之中,再将其取出以作图。主要技术是采用python与MongoDB结合存储读取方案,所以本博客截取了课设的部分内容,主要讲解python操作MongoDB方案实现,以给想要学习python+MongoDB编程开发的同学学习练手。
设计思路
1、Python编程语言和MongoDB有驱动包pymongo连接,使用pymongo对MongoDB进行编程开发、数据读取,以及后续的画图分析和数据可视化处理
2、使用的数据文件sample.txt.txt。
设计内容
1、先使用dataToMongo.py将文件清洗后导入MongoDB中。
(1) 创建并连接到MongoDB 中的nosql数据库;
(2) 创建并连接到nosql数据库的集合sample;
2、对读出的数据进行可视化处理。
(1) 画图主要使用的Python包为matplotlib.plot。
设计步骤及结果测试
1、先使用dataToMongo.py将文件清洗后导入MongoDB中。
(1) 采用pymongo连接驱动
(2) 采用pymongo的MongoClient类连接mongod
(3) python中使用的mongo常用语法与mongo的JSON语法基本相同。
MongoDB启动:
启动Python脚本dataToMongo.py将数据从文件中读出并存入MongoDB中:
注意要使用以下命令 (由于前期使用python+Hadoop的方式编写,所以使用了unix输入输出流来读数据):
# cat sample.txt.txt | ./dataToMongo.py
数据成功存入MongoDB:
dataToMongo.py
# !/usr/bin/python3 # -*- coding:utf-8 -*- # 这个文件是用来将数据存入MongoDB中数据库nosql的 # collection为 sample (db.sample.find()) # 格式为:"line1": [data1,data2...] from pymongo import MongoClient import sys # Connect to mongod, use DB: ‘nosql‘, use COLLECTION: ‘sample‘ conn = MongoClient(‘127.0.0.1‘, 27017) #连接mongod db = conn.nosql #连接‘nosql‘数据库,没有则自动创建 sample = db.sample #使用sample集合,没有则自动创建 n = 1 data = list() for line in sys.stdin: data = line.strip().split() linenum="line"+str(n) # linenum是line字符串+数字组成的字符串,后面插入数据集时会用到if n==1: pass# 第一行数据是没用的,清洗掉elif n==2: data = data[4:] # 实测观察数据从第四个数据开始 data[0] = ‘-3.1415926536‘# 原数据是‘Real=-3.1415926536’,所以将数据修改下for index,item in enumerate(data): data[index] = float(item) # 将原来是字符串的数据转为float类型 sample.insert({ # 将数据插入(insert)MongoDB中的sample集合"line":linenum, # 这里我为了后续作图方便,插入了一个{line:linenum}的键值对"value":data # {value: data}键值对, data是一个list变量哦 }) else: data = data[2:] # 和第二行的数据不一样,实测观察出的,有时候编程是要一步步观察修改的for index,item in enumerate(data): # 考验自己的动手能力,怎么观察实现要自己想办法了 data[index] = float(item) sample.insert({ "line":linenum, "value":data }) n+=1
2、对读出的数据进行可视化处理。
画图脚本:main.py
(1) 第一个图:
蓝色的线是在1.0*10^9频率下,phi=0
橙色的线是在1.0*10^9频率下,phi=1.5707963268。
横坐标是Theta(degree),范围从-Pi ~Pi;纵坐标是电场值。
相同频率下,theta角度越大,电场值越小。
main.py
# !/usr/bin/python3 # -*- coding:utf-8 -*- # file : main.py # 这个文件是用来读取MongoDB中nosql数据库.sample集合数据 # 读出之后作图 from pymongo import MongoClient import matplotlib.pyplot as plt # Connect to mongod, use DB: ‘nosql‘, use COLLECTION: ‘sample‘ conn = MongoClient(‘127.0.0.1‘, 27017) #连接mongod db = conn.nosql #连接‘nosql‘数据库,没有则自动创建 sample = db.sample #使用sample集合,没有则自动创建 angle_theta_radian=sample.find_one({"line":"line2"})[‘value‘] #使用find_one查找第2行的数据,取其名为‘value’的键值对的值 data_phi0=sample.find_one({"line":"line3"})[‘value‘] #使用find_one查找第3行的数据,取其名为‘value’的键值对的值 data_phi90=sample.find_one({"line":"line48"})[‘value‘] #使用find_one查找第48行的数据,取其名为‘value’的键值对的值 plt1, = plt.plot(angle_theta_radian,data_phi0) #作图1 plt2, = plt.plot(angle_theta_radian,data_phi90) #作图2 plt.legend([plt1,plt2],[‘Electrial Field1‘,‘Electrial Field2‘],loc=‘upper right‘) #设置图例 plt.xlabel(‘Theta (degree)‘) #设置x轴标签 plt.ylabel(‘Electrical field (V/m)‘) #设置y轴标签 plt.show() #以上一起显示出来
(2) 第二个图:
蓝色的线是,在1.0*10^9频率下,phi=0;
橙色的线是,在1.02*10^9频率下,phi=0;(第93行: line93)
横坐标是Theta(degree),范围从-Pi ~Pi;纵坐标是电场值。
相同theat角度下,频率越高,电场值绝对值越大。
实现:将main.py脚本文件中的
data_phi90=sample.find_one({"line":"line48"})[‘value‘]
修改为:
data_phi90=sample.find_one({"line":"line93"})[‘value‘]
即可得出。
数据文件说明:
1、数据文件概述:是测试的电场强度数据文件。
包括多个频率测试的电场强度,每个频率的数据是一个数据块。
在一个频率点测试的数据(每一块数据里面),又包括多行数据(每行是一个theta角度的数据)和多列数据(每一列为一个phi角度的数据)。
2、数据文件含义:
3、实验测试与数据的关系如下
对于文件sample.txt.txt,只有两个频率(109频率和1.2*109频率)。
感谢李老师的数据文件说明,如果有任何侵权问题,博主可以立即删除。
博客好像发不了文件,如果需要数据文件的话请留言邮箱,看到了发给你。
原文:https://www.cnblogs.com/fa-learning/p/9074897.html
内容总结
以上是互联网集市为您收集整理的python+MongoDB使用示例全部内容,希望文章能够帮你解决python+MongoDB使用示例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。