提升技能是成为数据科学家的重要组成部分。刚开始时,您主要侧重于学习编程语言,正确使用第三方工具,显示可视化内容以及对统计算法的理论理解。下一步是在更困难的数据集上测试您的技能。

  有时,这些数据集需要大量清理,格式不正确或很难找到。关于理解我们周围数据的重要性,这里有很多内容,但是对于如何实际获取数据却几乎找不到。

  随着您成为数据科学家的成长,最初的数据调查,探索和检索是最重要的学习步骤。从多个来源中查找和清理数据集无疑会产生前期成本—但是一旦您拥有了清理,格式正确且易于理解的数据集,回答数据上多个问题的可能性就会大大提高。

  在大数据分析如何跟踪迁移模式中,我们将逐步研究,检索和清理现实世界的数据集。为了纪念世界候鸟日,我们将使用候鸟数据。我们还将介绍构建您自己的数据集所涉及的成本收益和必要的工具。有了这些基础知识,您就可以深入研究并找到自己要使用的数据集。

  研究可用的候鸟数据集

  您应该从一个关键问题开始每次调查:我们要学习什么?有了这个问题,找到合适的数据集就容易了。对于我们的示例,我们想了解北美鸟类的迁徙方式。要了解这些模式,我们需要在几年中找到准确的迁移数据。

  很难找到这样的模糊数据。可能会有业余爱好者在个人网站,论坛或其他渠道上托管自己的数据,但是业余数据集通常容易出错并且包含丢失的数据。相反,我们应该寻找在政府或大学网站上托管的更专业的数据集。

  搜寻关键字“鸟类迁徙”,“数据库”和“美国”,我们找到了几个有关鸟类迁徙信息的网站。第一个是eBird,包含康奈尔实验室托管的鸟类迁徙数据。第二个是来自美国鱼类和野生动物服务(USFWS)网站,该网站使用合作伙伴关系和公民研究数据来创建报告。我们希望使用两种服务的数据集,以便我们可以交叉检查数据并确定不一致之处。

  让我们从eBirds数据集开始。

  导航到下载页面,系统将要求您在康奈尔研究实验室创建一个帐户。登录后,您可以进入下载页面。但是在访问完整的数据集之前,您需要填写一张表格,描述您打算如何使用数据。我们成功填写了表格并等待了几天,然后才能完全访问数据集。需要时间,但不太困难。

  

  接下来,让我们看一下USFWS。乍一看,该网站似乎比eBirds门户网站容易使用得多。有一个明确的链接可以指导我们找到完整的数据库列表,其中包含不同的鸟类,地理数据点和迁徙飞行路线。如果它们具有有效的链接,则这些井井有条且经过分类的数据集将非常有帮助且易于分析。

  

  不幸的是,从USFWS门户检索数据并不容易。有多个无效链接,格式不正确的数据集以及无法按所宣传的那样运行的HTML按钮。尽管这些问题大多是不良的界面设计,但所有HTTP端点似乎都可以正常运行,并且只需使用少量Python代码,我们就会发现我们能够获取所需的数据。

  查找数据

  由于USFWS网站提供的链接数量众多,很难仅找到可能的数据集端点。当我们潜入时,我们发现的第一个成功数据集是通过链接到USFWS发布的水禽飞行方式数据手册。该数据手册据说包含了我们进行调查所需的所有信息,但存在一个主要缺陷:它以PDF格式存储。由于PDF的结构不一致,因此很难解析它们,因此这应该是最后的选择。

  

  致力于水鸟飞行路线模式的数据集,我们决定遵循另一条链接到USFWS报告的路径。这些报告被描述为1995年以来有关北美水禽飞行路线模式的调查数据。正是我们想要的。单击报告的链接后,我们将看到服务条款和免责声明阻止程序。接受后,有一个报告生成表格,使研究人员能够限制有关水禽类型,状态或发现该水禽的“图”的数据。

  

  而不是限制数据,我们选择表单中的每个值,然后按提交。最后,我们向您展示了一个分页表格,其中包含完整数据集的样本。

  

  滚动到页面底部,还有整个数据集的下载按钮!不幸的是,按下按钮会将我们重定向到403 Unauthorized页面。

  有点沮丧,但并非没有希望,我们正在寻找解决方案。首先,我们追溯为检索数据而采取的步骤。这些步骤是导航到下载页面,提交简单的表单提交,解析HTML格式的表并在数据的每一页上运行解析器。考虑这些步骤,我们意识到可以使用Python网络抓取脚本轻松地将它们自动化!

  下载数据

  我们将使用两个主要包来抓取数据。

  1)请求(用于发出HTTP请求)

  2)beautifulsoup(用于解析HTML)

  首先,requests执行HTTP请求,表单提交和下载HTML表文件。使用Chrome Dev Tools,我们将导航到调查表单页面,并填写表单中的所有值,然后按下Submit按钮,然后检查请求的标题。

  

  我们分别突出显示了请求类型,URL和表单数据的字段。从屏幕截图中,要生成报告,我们需要使用给定的表单数据将POST请求发送到URL。为了使事情变得简单,我们将使用URL编码的表单数据源代码。然后,我们将使用以下代码段使用和内容类型标头来发出POST请求。requests.post()x-www-form-urlencoded

  

  这种感觉是正确的,但是我们缺少的重要组成部分,我们才能发出请求。如果要运行该代码段,那么我们的请求将被所需的条款和条件页面阻止,而不是返回报告。回想一下,USFWS要求您在使用数据之前接受其免责声明。

  要解决此问题,请注意,在接受条款和条件时,您的浏览会话拥有对其余报告的完全访问权限。要在Python脚本中重新创建此行为,我们需要实例化一个持久requests.Session对象。使用该requests.Session对象,我们将导航到“接受”页面来接受免责声明,并且在经过身份验证的会话中,我们将提交表单数据。

  总之,它看起来像:

  

  成功!我们根据需要获得了报告表,但是请注意,有616页的数据要解析。我们可以减少数量的一种方法是选择更多数量的textRows表单值。让我们将其更改为每个表99行的最大值。

  

  现在我们已拥有每页的最大行数,我们可以转到HTML解析步骤。

  解析数据

  要解析数据,我们需要BeautifulSoup使用报告响应HTML字符串创建一个对象。在后台,该BeautifulSoup对象将HTML字符串转换为树状数据结构。这样可以轻松查询诸如包含报告数据的标签之类的标签。

  

  使用我们的可分析对象,我们现在可以在HTML文档中搜索该标记。在文档中,报告数据在第二个中,因此我们将使用该.findAll()方法并在列表中选择第二个项目。然后,我们将过滤表的所有行,并将它们设置为rows变量。

  

  接下来,我们要提取标题行并清理值。作为参考,HTML表格的标题行使用标记格式化,数据行使用格式化。要获取标签值,我们需要调用标签的.string属性BeautifulSoup。我们将从表的第一行中获取标头值。

  

  提取标题后,就该从行中获取数据了。我们将遍历该表的各行,找到所有标签,并将其分配给新行。此外,我们将合并标题和行,然后清理一些空白值,以使其更易于解析。

  

  使用进行更多的unicode清理后unicodedata.normalize(),我们应该获得以下输出:

  

  

  解析表之后,我们可以遍历数据集的每一页并将值组合在一起。

  放在一起

  在构建完整的数据集之前,尚需实现三个部分:

  1)查找要分页的数据总页数。

  2)创建一个form_data模板以动态修改表单数据。

  3)循环浏览页面并合并所有行。

  我们将从第一点开始。窥视报告页面的HTML,我们看到总页数在标题中。我们可以从标题中提取总数的一种方法是从标题中分离数字,然后将其转换为整数。这是可行的,但是依靠标题字符串的解决方案太脆弱了。

  相反,如果我们仔细查看表单数据,则会有一个隐藏的输入字段为我们完成工作。在标记的底部,带有的输入值name=txtLastPage。使用BeautifulSoup,我们只需搜索输入标签和匹配名称,然后将值转换为整数。这是一个潜在的实现。

  

  

  现在,我们要一起添加模板和分页。首先,我们将创建一个字符串模板,该模板form_data使用字符串格式提交动态表单数据。在我们的情况下,我们要动态修改当前页面值。接下来,我们将找到使用页面总数的值并保持循环,直到我们学会了数据集。经过一点清理,我们得到以下最终实现:

  

  

  太棒了!我们已经提取了完整的数据集,并且它也处于Python可读状态。从这里,我们可以添加更多数据清理功能,将表保存到文件中,并对数据进行一些分析。

  结论

  使用一些基本的Python Web抓取,我们能够:

  1)使用会话访问仅经过身份验证的内容。

  2)解析HTML表格数据并将其映射到Python列表列表。

  3)跨多个HTML页面自动抓取数据集。

  从这个例子中,我们能够证明Python的Web抓取能力,用于数据调查,清理和检索。如文章开头所述,在询问数据科学中更困难的问题时,您需要查找自己的数据集。网络上有大量可用数据。一旦您拥有查找和收集此数据的工具和经验,您将在分析中获得很高的回报。

  如果您想更新示例,请添加以下内容:

  1)使用表数据创建一个CSV文件。

  2)使用协程或线程加快网络呼叫的阻塞。

  3)循环浏览页面,而不必两次请求第一页。

  4)添加错误处理以提高代码的健壮性。

摘自:https://www.aaa-cg.com.cn/data/2699.html

大数据分析如何跟踪迁移模式相关推荐

  1. 检索数据不能检索了_数据检索和清理:跟踪迁移模式

    检索数据不能检索了 Advancing your skills is an important part of being a data scientist. When starting out, y ...

  2. 大数据分析平台如何进行支出跟踪

    企业需要使用正确的数据分析工具来控制其业务支出.在保持精益运营的过程中,很多企业发现了使用大数据的好处.大数据技术可以让他们提高利润率,企业也试图在经济衰退期间保持竞争优势.使用大数据的最重要好处之一 ...

  3. 图文详解 DBMS 数据库管理系统三层架构体系(三级模式)《ClickHouse 实战:企业级大数据分析引擎》...

    引文 计算机科学领域的所有问题,都可以通过添加一层中间层来解决.通过在用户和计算机中间添加一层逻辑层(概念模型层),于是就有了"数据库的三级模式":数据库在三个级别 (层次)上进行 ...

  4. DBMS 数据库管理系统的三级模式架构《ClickHouse 实战:企业级大数据分析引擎》...

    引文 计算机科学领域的所有问题,都可以通过添加一层中间层来解决.通过在用户和计算机中间添加一层逻辑层(概念模型层),于是就有了"数据库的三级模式":数据库在三个级别 (层次)上进行 ...

  5. Druid 大数据分析之快速应用(单机模式)

    1.概述 本节快速安装基于单机服务器,很多配置可以默认不需要修改,数据存储在操作系统级别的磁盘.推出快速安装的目的,便于了解并指导基于Druid进行大数据分析的开发流程.本节主要讲Druid的安装.实 ...

  6. 流式数据分析_流式大数据分析

    流式数据分析 The recent years have seen a considerable rise in connected devices such as IoT [1] devices, ...

  7. python在大数据分析中的应用

    每个人都喜欢Python,如果您打算开始从事数据科学事业,我们可以肯定Python在您心中已经占有特殊的位置.它直观且易于在任何平台上运行,并且具有大量令人惊叹的库和工具.与其他编程语言相比,Pyth ...

  8. 2018年最好的软件开发、云计算、大数据分析和机器学习工具

    InfoWorld编辑和评论家评选出今年最好的软件开发,云计算,大数据分析和机器学习工具. 欢迎来到InfoWorld的年度技术奖,这是我们对信息技术领域中最好,最具创新性,最重要的产品的年度庆典. ...

  9. 学习大数据分析python编程指南

    每个人都喜欢Python.如果您打算开始从事数据科学事业,我们可以肯定Python在您心中已经占有特殊的位置.它直观且易于在任何平台上运行,并且具有大量令人惊叹的库和工具.与其他编程语言相比,Pyth ...

最新文章

  1. DispatcherServlet的启动和初始化
  2. Linux下Mysql的查询用法
  3. linux 下 nginx phpcgi 的安装及配置
  4. IAR STM32工程报错Error[Pe020]: identifier “GPIO_Pin_0”is undefined D:\STM32F103_Demo\App\main.c
  5. 关于精英版stm32从模板工程移植RTT Spi驱动打开后编译不过的处理办法
  6. mysql update修改数据_MYsql如何用update语句修改数据,值得一看
  7. notepad++配置Zen Coding
  8. ip=request.servervariables(Remote_Addr)获得ip显示::1
  9. Linux使用openssl实现RSA非对称加密
  10. winfrom软件开发汽车测试_从事汽车电子软件开发岗,我们最近还没那么愁
  11. windows server 2003 系统提权
  12. 《西游记》的读后感4000字
  13. python小论文范文3000字_论文范文3000字
  14. 共享办公室,丰富运营体系
  15. 北语计算机基础知识作业1,【图】- 北京语言大学20秋《计算机基础》作业1 - 昆山经济开发区其他教育培训 - 昆山百姓网...
  16. java导出excel 打不开_java – 无法使用AbstractExcelView导出Excel工作表
  17. HDU 1253 胜利大逃亡
  18. Xsolla 解读中国手机游戏支付方式
  19. 老夫聊发少年狂之初学编程
  20. nodejs服务使用pm2启动多个进程和进程守护,以及使用pm2-logrotate-ext分割日志

热门文章

  1. 推荐:雨林木风Linux
  2. Docker(9) 安装Oracle18c
  3. 关系数据模型和SQL基础
  4. java生成word排版_java生成word(文字和图片)
  5. STM32L476rg 低功耗模式关系梳理以及stm32duino Lowpower库的调用关系梳理
  6. 手把手教你制作手机底部导航栏,领导看完都说好
  7. 如果实现类似微信附近的人功能
  8. 五分钟玩转Andriod开发环境配置
  9. zkSnark教程:从方程到验证
  10. CSS教程:vlink,alink,link和a:link