美文网首页pythonpython爬虫与数据分析
利用Pandas实现Mongodb的多表连接查询并将DataFr

利用Pandas实现Mongodb的多表连接查询并将DataFr

作者: 越大大雨天 | 来源:发表于2019-03-14 13:35 被阅读130次
  • 接上一篇文章,利用pandas完成了对mongodb数据库中的小区名字聚合查询以及批量经纬度的爬取,并将获取的信息写入了一个新的Mongodb表中。
  • 新目标:需要把数据库中原始表格(包含10w+房源信息)和新表(包含7k+小区经纬度信息)进行合并。使两表以小区名为连接键,在原始表信息后准确添加对应的经纬度信息。
import pymongo
import pandas as pd
import matplotlib as plt
#连接到数据库
client = pymongo.MongoClient("localhost",27017)
lianjia = client["ershoufang"]
info = lianjia["lianjia_info"]
location = lianjia['location_info']

#将数据表1(包含原始10w+房源信息)转化为DataFrame
data1 = pd.DataFrame(list(info.find()))
print(data1.head())
#将数据表2(包含7k+小区经纬度信息)转化为DataFrame
data2 = pd.DataFrame(list(location.find()))
print(data2.head())
#多表查询,以house_name为共同键,向表一合并,与mysql的查询功能类似,得到合并后的DataFrame
result =pd.merge(data1,data2,on="house_name",how="left")
print(result.head())

  • 好啦!所需的DataFrame格式的数据就成功且简单的得到了!
    可是,该怎么存进MongoDB呢,Mongo需要接受字典格式的数据才能传入啊~
    。。。。。
    作为边写简书边做的我真的折腾了好久也没找到很好又简单的方法,最后我用的完整代码如下
import pymongo
import pandas as pd

#连接到数据库
#连接到数据库
client = pymongo.MongoClient("localhost",27017)
lianjia = client["ershoufang"]
info = lianjia["lianjia_info"]
location = lianjia['location_info']

#将数据表1(包含原始10w+房源信息)转化为DataFrame
data1 = pd.DataFrame(list(info.find()))
print(data1.head())
#将数据表2(包含7k+小区经纬度信息)转化为DataFrame
data2 = pd.DataFrame(list(location.find()))
print(data2.head())
#多表查询,以house_name为共同键,向表一合并,与mysql的查询功能类似,得到合并后的DataFrame
result =pd.merge(data1,data2,on="house_name",how="left").drop(['_id_x','_id_y'],axis="columns")
#衔接上面代码,用于插入数据库,遍历插入的,不知道有没有简单的办法啊~
for i in range(len(result)):
    s = result.loc[i]
#这里加了str()函数是无奈之举,DataFrame中的专有float64等数字格式使MongoDB无法识别,写入会报错,暂时先全部转换为字符串格式写入吧
    dic = {index:str(s[index]) for index in s.index}
    new_info.insert_one(dic)
    print(dic)
  • 然后总算勉强完成了,这对数据量不大就10w条数据来说效率还是挺高的,但总觉得这不是最佳办法,如果正好有懂的能看到这篇文章,欢迎提出,感激不尽啊~~

相关文章

  • 利用Pandas实现Mongodb的多表连接查询并将DataFr

    接上一篇文章,利用pandas完成了对mongodb数据库中的小区名字聚合查询以及批量经纬度的爬取,并将获取的信息...

  • python学习笔记-数据库06_连接查询

    连接查询可以实现多表的查询,当查询的字段数据来自不同的表就可以使用连接查询来完成连接查询可以分为:内连接查询左连接...

  • SQL语句常用命令整理---多表查询

    多表查詢之关连查询 多表数据连接查询,简称连接查询。本篇我们来一同学习多表连接查询的相关用法,主要內容有: 内连接...

  • MySQL 基础 6 多表查询

    1.1 多表查询的概述 1.1.1 多表查询的分类 1.1.1.1连接查询 交叉连接:cross join交叉连接...

  • MYSQL多表查询

    多表查询就是从多张表中查找所需数据,并且整合在一起显示出来的意思 多表查询拥有多种实现方式:内连接、外连接、子查询...

  • 003 多表查询, 事务和DCL.

    多表查询 多表查询: 笛卡尔积.内连接查询隐式内连接 : 使用where.eg: select * from ...

  • Oracle详解(Ⅱ):世界上目前已知最好的关系型数据库

    多表查询 多表连接基本查询 使用一张以上的表做查询就是多表查询 这样会出现的结果就是:笛卡儿积连接查询的时候一般在...

  • Fourth Day

    /-----------------------------------多表连接查询---------------...

  • SQL之多表查询

    多表查询 MySQL不支持full join ,可以使用union连接两条查询语句,实现全连接(查询并集)例如:s...

  • Oracle连接_子查询

    多表查询:多张表关联在一起进行查询,在多表查询中会频繁的使用表的别名。连接:内连接(等值连接):select 列名...

网友评论

    本文标题:利用Pandas实现Mongodb的多表连接查询并将DataFr

    本文链接:https://www.haomeiwen.com/subject/gdnfmqtx.html