1,提出获取微博签到地经纬度问题 在上一篇关于微博签到位置相关的快捷采集案例中,我们详细介绍了怎样通过GooSeeker快捷采集获取和地理位置名相关的微博数据,见: 如何使用快捷采集-以微博签到数据采集为例 。在导出的数据表中,有个字段是“签到地点”,如下图所示: 有很多同学问,怎样基于签到地点,得到实际的经纬度数据。本Notebook案例就是针对这个问题的实验。 1.1,数据采集 见之前已发布的1篇文章:如何使用快捷采集-以微博签到数据采集为例。本Jupyter Notebook使用GooSeeker快捷采集:微博签到采集_此地热议 采集得到的结果表:temp_微博签到采集_此地热议_规则1列表_20xxxxxxxxxxxxx.xlsx。本notebook使用该表做实验 1.2,为什么要做成notebook数据处理模板 GooSeeker每年都要支持各个大学的毕业生采集数据完成他们的毕业设计,而且期望各种技术背景的毕业生都无障碍地分析数据,那么就从数据采集到数据分析各个步骤都提供一套便捷工具。 1. 采集步骤:微博采集工具项和快捷采集工具——不需要编程序和定义采集规则 GooSeeker有一套微博采集工具,专门面向不希望编写网络爬虫程序的研究者设计的。 例如,可以先从微博关键词搜索入口,把搜到的涉及“xx城市空气”的微博话题采集下来,然后把这些话题的微博博文采集下来。微博博文内容呈现方式很丰富,文字、图片、视频都有。这些内容都可以采集下来,分别进行分析。例如,将视频采集下来以后抽取关键帧图片,利用图片分析方法进行分析。 针对重点的微博内容,可以深入采集转发和评论,转发者和评论者,可分析和描述传播的特征和转发者和评论者的传播者特征。还可以根据博主的粉丝数计算传播的量化特征。 GooSeeker推出多个微博采集工具,匹配高校师生从不同角度、不同传播路径、不同内容呈现采集数据的需求。同样也适用于公共领域和民间舆论场分析,市场和商业环境分析等。 2. 文本处理步骤:GooSeeker分词和情感分析——导入文本,即可导出分析结果 数据采集下来之后,需要趁手的工具来做数据处理和数据分析,GooSeeker提供了文本分词和情感分析软件, 同时也推出了系列Jupyter Notebook,借助于python的大量第三方库,为数据分析大量强大的工具。 3. 数据分析步骤:做成Jupyter Notebook——只需稍许调整,就能套用上输出分析结果和可视化图表 Jupyter Notebook这类交互式数据探索和分析工具代表了一股不容忽视的潮流,借助于Python编程的强大力量,数据加工的能力和灵活性已经有相当明显的优势,尤其是程序代码和文字描述可以混合编排,数据探索和数据描述做完了,一篇研究报告也基本上成型了。 然而Python毕竟是一个全功能的编程语言,对于非编程出身的数据分析师来说,Pandas,Numpy,Matplotlib这些词让人望而生畏。本系列Notebook将设法解决这个问题,让非编程出身的数据分析师能够忽略复杂的编程过程,专注于数据处理和统计分析部分,就像使用Excel的公式一样驾驭Python。 所以,我们将尝试发布一系列Jupyter Notebook,像文档模板,一些基本的程序环境设置、文件操作等固化下来,在设定的分析场景下不需要改动程序代码。而数据处理部分的代码可以根据需要截取选用。每一项功能用一个code cell存代码,不需要的处理功能可以删除。 1.3,本模板适应的场景 本模板根据GooSeeker快捷采集:微博签到采集_此地热议(https://www.gooseeker.com/res/rule_620.html)采集得到的结果表:temp_微博签到采集_此地热议_规则1列表_20xxxxxxxxxxxxx.xlsx,对数据进行基本处理后,调用百度api获取每个地点的经纬度。 1.4,使用方法 基本操作顺序是: 1. 把GooSeeker快捷采集:微博签到采集_此地热议 采集得到的结果表:temp_微博签到采集_此地热议_规则1列表_20xxxxxxxxxxxxx.xlsx, 放在本notebook的data/raw文件夹中 2. 从头到尾执行本notebook的单元 注意:每个notebook项目目录都预先规划好了,具体参看Jupyter Notebook项目目录规划参考。如果要做多个分析项目,把整个模板目录专门拷贝一份给每个分析项目。 1.5,简要技术说明 在每个功能项单元,如果是不需要关心的编程细节,将注明【编程细节】。 本notebook主要实现以下几个步骤: 1. 读取data/raw文件夹中的微博签到采集结果文件:temp_微博签到采集_此地热议_规则1列表_20xxxxxxxxxxxxx.xlsx 2. 对数据表进行基本的预处理 3. 调用百度api获取每个签到地点的经纬度 2,第三方库 无 3,修改历史 2021-06-29:第一版发布 4,版权说明 本notebook是GooSeeker大数据分析团队开发的,所分析的源数据是GooSeeker网络爬虫软件从互联网上收集的公开数据,本notebook中的数据和代码可自由共享使用,包括转发、复制、修改、用于其他项目中。 5,准备程序环境 导入必要的Python程序包,设定要分析的文件名变量: file_weibo_sign:微博签到采集结果表 6,检测data\raw目录下是否有微博签到结果表 本notebook为了让这个模板有更大的适应性,python程序中不是写死文件名,而是去查找名字含有“微博签到采集_此地热议”的文件。从微博快捷采集工具导出的结果文件的名字前半部分都是一样的,只是后面的数字不同,那么只要把导出的结果文件放在/data/raw文件夹,下面的代码不用修改就能运行成功。 但是要注意,在data/raw文件夹中不能放两个或者多个“微博签到采集_此地热议”采集结果文件。我们假定每个notebook处理一个结果文件。 7,读取微博签到结果表 以下的演示以GooSeeker快捷采集:微博签到采集_此地热议采集得到的结果表:temp_微博签到采集_此地热议_规则1列表_20xxxxxxxxxxxxx.xlsx为例, 需要把结果表放在本notebook的data/raw文件夹中 8,查看微博签到结果表原始数据 9,数据预处理 按已经做的测试,如果直接把“信阳”或者“信阳·中环荣域”发给百度api,会查不到这个地点。 但是发“信阳市”或者“信阳市中环荣域”就可以查到。 所以需要对数据做预处理。 9.1,删除签到地点是nan的行 采集到的数据放在excel中看,如果“签到地点”字段没有数据,那么在DataFrame中就是一个NaN,会影响后面的程序执行,所以,要把空的行删除。 9.2,把签到地点字段的点(·)替换成市 9.3,把签到地点字段的值只是城市,后面没有跟“市”的,在后面加上一个“市”。比如“信阳”修改成“信阳市” 9.4,显示替换后的数据 9.5,在dataframe的最后增加一列:经纬度 9.6,定义获取经纬度数据的函数 9.7,获取经纬度数据 9.8,显示获得的经纬度数据 10,把签到地点按经纬度标注到地图上 11,下载Jupyter Notebook 下载源代码请进入:用python获取微博签到地的经纬度并在地图上显示 |