数据处理入门干货:MongoDB和pandas极简教程
导读:MongoDB是一个开源文档数据库,旨在实现卓越的性能、易用性和自动扩展。Pandas是受R数据框架概念启发形成的框架。本文的目的是展示一些示例,以便你开始使用MongoDB和Pandas。
作者:萨扬·穆霍帕迪亚(Sayan Mukhopadhyay)
如需转载请联系大数据(ID:hzdashuju)
01 Python版本MongoDB
MongoDB是一个开源文档数据库,旨在实现卓越的性能、易用性和自动扩展。MongoDB确保不需要对象关系映射(ORM)来促进开发。包含由字段和值对组成的数据结构的文档在MongoDB中称为记录(record)。这些记录类似于JSON对象。字段的值可以包括其他文档、数组和文档数组。
{ "_id":ObjectId("01"), "address": { "street":"Siraj Mondal Lane", "pincode":"743145", "building":"129", "coord": [ -24.97, 48.68 ]}, "borough":"Manhattan",
1. 将数据导入集合
mongoimport可使用系统脚本或命令提示符将文档放入数据库的集合中。如果集合预先存在于数据库中,操作将首先丢弃原始集合。
mongoimport --DB test --collection restaurants --drop --file ~/ downloads/primer-dataset.json
mongoimport命令连接到端口号为27017的本地运行的MongoDB实例。选项 --file 提供了导入数据的方法,此处为 ~/downloads/primer-dataset.json。
要将数据导入到运行在不同主机或端口上的MongoDB实例中,需要在 mongoimport 命令中特别指出主机名或端口,用选项 --host 或 --port。
MySQL中有类似的命令load。
2. 使用pymongo创建连接
要创建连接,请执行以下操作:
import MongoClient from pymongo. Client11 = MongoClient()
如果MongoClient无参数,那么将默认在端口27017上的本地端口上运行MongoDB实例。
可以指定一个完整的MongoDB URL来定义连接,其中包括主机和端口号。例如,下面的代码会连接到一个MongoDB实例,该实例运行在 mongodbo.example.net 的27017端口上:
Client11 = MongoClient("mongodb://myhostname:27017")
3. 访问数据库对象
要将名为primer的数据库分配给局部变量DB,可以使用以下任意一行代码:
Db11 = client11.primer db11 = client11['primer']
集合对象可以通过字典或数据库对象属性进行访问,如以下两个示例所示:
Coll11 = db11.dataset coll = db11['dataset']
4. 插入数据
你可以将文档放入目前不存在的集合中,以下操作将创建集合:
result=db.addrss.insert_one({<<your json >>)
5. 更新数据
以下是更新数据的方法:
result=db.address.update_one( {"building": "129", {"$set": {"address.street": "MG Road"}} )
6. 删除数据
要从集合中删除所有文档,请使用以下命令:
result=db.restaurants.delete_many({})
02 Pandas
下面展示一些示例,以便你开始使用Pandas。这些示例取自现实世界的数据,数据上自然会有一些瑕疵。Pandas是受R数据框架概念启发形成的框架。
要从CSV文件中读取数据,请使用以下命令:
import pandas as pd broken_df=pd.read_csv('data.csv')
要查看前三行,请使用:
broken_df[:3]
要选择列,请使用:
fixed_df['Column Header']
要绘制列,请使用:
fixed_df['Column Header'].plot()
要获取数据集中的最大值,请使用以下命令:
MaxValue=df['Births'].max() where Births is the column header
假设数据集中有另一列名为Name,Name的命令与最大值相关联。
MaxName=df['Names'][df['Births']==df['Births'].max()].values
在Pandas中还有许多其他方法,例如 sort、groupby 和 orderby,它们对于结构化数据的使用很有用。此外,Pandas还有一个现成的适配器,适用于MongoDB、Google Big Query等流行数据库。
接下来将展示一个与Pandas相关的复杂示例。在不同列值的X数据框中,查找root列分组的平均值。
for col in X.columns:if col != 'root':avgs = df.groupby([col,'root'], as_index=False)['floor'].aggregate(np.mean)for i,row in avgs.iterrows():k = row[col]v = row['floor']r = row['root']X.loc[(X[col] == k) & (X['root'] == r), col] = v2.
关于作者:Sayan Mukhopadhyay拥有超过13年的行业经验,并与瑞信、PayPal、CA Technologies、CSC和Mphasis等公司建立了联系。他对投资银行、在线支付、在线广告、IT架构和零售等领域的数据分析应用有着深刻的理解。他的专业领域是在分布式和数据驱动的环境(如实时分析、高频交易等)中,实现高性能计算。
本文摘编自《Python高级数据分析:机器学习、深度学习和NLP实例》,经出版方授权发布。
延伸阅读《Python高级数据分析》
推荐语:本书介绍高级数据分析概念的广泛基础,以及最近的数据库革命,如Neo4j、弹性搜索和MongoDB。本书讨论了如何实现包括局部爬取在内的ETL技术,并应用于高频算法交易和目标导向的对话系统等领域。还有一些机器学习概念的例子,如半监督学习、深度学习和NLP。本书还涵盖了重要的传统数据分析技术,如时间序列和主成分分析等。
数据处理入门干货:MongoDB和pandas极简教程相关推荐
- 零基础入门 HTML 的 8 分钟极简教程
在今天,前端工程师已经成为研发体系中的重要岗位之一. 可是与此相对的是,极少大学的计算机专业愿意开设前端课,大部分前端工程师的知识,也都是在实践和工作中不断学习的. 最近收到很多同学的后台留言,说希望 ...
- 包含html语言的超链接标记的网页_零基础入门 HTML 的 8 分钟极简教程
在今天,前端工程师已经成为研发体系中的重要岗位之一. 可是与此相对的是,极少大学的计算机专业愿意开设前端课程,大部分前端工程师的知识,也都是在实践和工作中不断学习的. 最近收到很多同学的后台留言,说希 ...
- 第1讲 快速入门 《Kotlin 极简教程 》
第1讲 快速入门 <Kotlin 极简教程 > 投影片01.jpg 投影片02.jpg 投影片03.jpg 投影片04.jpg 投影片05.jpg 投影片06.jpg 投影片07.jpg ...
- python入门笔记——飞机大战(极简版、未进行继承优化)
python入门笔记--飞机大战(极简版.未进行继承优化) import random import pygame# 引用pygame里的模块 from pygame.locals import *# ...
- 深度学习入门极简教程(二)
深度学习入门极简教程(二) 摘要: 现在的人工智能,大致就是用"硅基大脑"模拟或重现"碳基大脑的过程".那么,在未来会不会出现"碳硅合一"的 ...
- 负载分析及问题排查极简教程
作者 | Hollis ,来自 | Hollis 平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load.cpu.mem.qps.rt等.每个指标都有其独特的意义,很多时候在线上出现问题时 ...
- 高效sql性能优化极简教程
一,sql性能优化基础方法论 对于功能,我们可能知道必须改进什么:但对于性能问题,有时我们可能无从下手.其实,任何计算机应用系统最终队可以归结为: cpu消耗 内存使用 对磁盘,网络或其他I/O设备的 ...
- session一致性架构设计极简教程
一,缘起 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文. Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建se ...
- 写一个操作系统有多难?自制 os 极简教程
不知道正在阅读本文的你,是否是因为想自己动手写一个操作系统.我觉得可能每个程序员都有个操作系统梦,或许是想亲自动手写出来一个,或许是想彻底吃透操作系统的知识.不论是为了满足程序员们自带的成就感,还是为 ...
最新文章
- Android ShareSDK桥接技术
- ajaxsetup无效_Ajax请求session失效该如何解决
- 1349. 修理牛棚【难度: 中 / 思维 贪心】
- Vim技能修炼教程(16) - 浮点数计算函数
- BZOJ 3694DTOJ 1972: 最短路
- android Collections.addAll()的使用
- 相依關係: XXXXXXXXX但它卻無法安裝
- current of 使用
- 最新消息:苹果M1芯片为何如此之快?
- 软件从“出生”到“消亡”的过程称为_软件测试面试最常问到的101个面试问题,你中枪了吗?(一)...
- 2020-12-10 PMP 群内练习题 - 光环
- 储存卡怎么格式化为fat32_64g储存卡怎么格式化成fat32格式化
- office插件开发_OneKeyTools:强大PPT插件
- Silvaco TCAD仿真2——Silvaco TCAD 档名
- 蚂蚁金服5面,总结了49个面试题,遇到的面试官都是P7级别以上
- C++著名库的比较和学习经验
- 饿了么即时配送分流的可运营架构演变
- iptables的三表五链
- Linux No space left on device 磁盘空间不足
- 如何判断高估还是低估
热门文章
- Arduino笔记-温度传感器的使用
- WEB安全基础-WEB介绍
- php mysql odbc_javascript连接mysql与php通过odbc连接任意数据库的实例
- ConcurrentHashMap 源码
- sql空字符串判断函数_Excel数据还可这样来查询:用SQL查询输出工作表指定区域更高效!...
- 修改LR自带的示例程序端口号,Cannot create GUI process-program not found
- HelloWorld讲解
- 51单片机串行口的使用与串行通信
- (王道408考研操作系统)第五章输入/输出(I/O)管理-第一节6:设备的分配和回收
- 3-3:HTTP协议之request和respond及常见请求方法和常见状态码