快乐学Python,数据分析之获取数据方法「公开数据或爬虫」
学习Python数据分析,第一步是先获取数据,为什么说数据获取是数据分析的第一步呢,显而易见:数据分析,得先有数据,才能分析。
作为个人来说,如何获取用于分析的数据集呢?
1、获取现成的数据集
获取数据集的第一种方式,就是获取行业上已经有人整理好的数据集。目前大数据行业持续火爆,数据本身已经变成了一种产业,自然也包含数据集。这些有人已经整理过的数据集,我们统称为现成的数据集。
现成的数据集大概有两种:比赛数据集和行业数据集。
(1)比赛数据集
高水平的数据分析大赛毫无疑问是大数据行业火爆的一大有力证明。现如今,数据分析比赛已经不再简单的是数据分析师、数据科学家们互相切磋的比赛,而演变成了各路公司将自己公司遇到的数据难题抛出来悬赏各路英雄来解决的平台,充满了来自现实世界的挑战。
主流数据分析大赛的比赛题目往往就是赞助商公司面临的实际问题,而数据集也往往来自赞助商公司的真实数据,经过一定脱敏之后开放给所有参赛的数据分析师。比赛中拿到最好结果的团队可以收到不菲的大赛奖金,另一方面其贡献的解决方案可以帮助公司找到后续业务发展的方向,最后,比赛过程中公司贡献的数据集又为数据分析爱好者和初学者们提供了绝佳的学习材料,可谓是一举三得。
作为数据初学者的我们,自然可以去数据分析大赛上找一些现成的数据集来练手用。目前数据分析比赛蓬勃发展,呈现越来越多的趋势。目前数据分析大赛认可度比较高的比赛一个是国际上的 kaggle,一个是国内的天池。
- kaggle 可以说是所有数据分析大赛的鼻祖,也是目前世界范围内规模最大的数据分析比赛,但存在两个问题:一是全英文网站,二是国内访问速度较慢。整体来说对新手并不是很友好。
- 天池是国内目前影响力最大的比赛,整体平台的配置、数据集的丰富度都有保障,并且还有一系列新手赛帮助入门。
这里以天池平台为例,示范如何获得比赛的数据集。
(1)访问天池官网:https://tianchi.aliyun.com/,并使用淘宝账户注册、登录。
(2)选择天池大赛 - 学习赛,进入学习赛题列表。

(3)下滑列表,选择二手车交易价格预测比赛,标题为:零基础入门数据挖掘 - 二手车交易价格预测”。
(4)进入比赛详情页后,点击报名参赛。
(5)点击左侧的赛题与数据,进入数据集的页面,这个页面的上方是数据集的下载链接,下面则是数据集的描述。

因为分析比赛的数据集都会分为训练集和测试集,我们现阶段不用关心这个,直接看训练集(train.csv) 即可。
(2)行业数据集
除了比赛用的数据集之外,个人还可以从一些行业公开的网站上获得用于分析的数据。在这里列举三个比较常用的,你可以简单参考。
(1)清博智能:http://www.gsdata.cn/
清博智能是一个聚焦新媒体行业的大数据服务网站,提供了大量新媒体渠道的优质榜单,比如微信、头条、抖音……。只需要登录便可查看,同时支持下载为 Excel 格式。
(2)房天下房价指数:https://fdc.fang.com/index/
顾名思义,这里提供的是房价相关的数据集,但数据均值以表格的形式提供的,没有 Excel 的形式。
(3)移动观象台:http://mi.talkingdata.com/app-rank.html
移动观象台提供了热门手机 App 的排行数据,手机 App 排行一直都是数据分析的热点。很多公司都希望通过对榜单进行分析来抓住用户的最新的兴趣以及来调整自己的业务方向。不过遗憾的是,它和房天下一样,移动观象台仅提供了网页访问,不可以下载 Excel 或者 CSV 格式文件。
(3)存在的问题
无论是比赛数据集,还是行业公开的数据集,都有比较明显的短板。
- 比赛数据集:数据集都是脱敏的,往往只能发现一些数据背后的隐藏关系,适合拿来测试一些数据挖掘算法,对于初级的数据分析帮助不大。
- 行业公开数据集:绝大多数行业公开数据集都只能提供网页浏览或者 PDF,基本没有 Excel 可下载,所以只能看,很难在此基础上做自己的分析,而且免费用户能看的都比较有限。
简单来说,虽然个人可以从数据分析比赛和部分行业数据网站访问数据,但这两个渠道都存在一些问题,不能完全满足我们做数据分析的需要。我们还有什么方式可以获取到数据进行分析呢? 首先我们可以先想一下,什么地方的数据最多?答案就是:互联网本身。
2、从广袤的互联网中构建数据集
互联网包含成千上万个网站,而每个网站又包含数不清的帖子、评论、影评等。综合来说,互联网拥有着取之不尽,用之不竭的数据。如果我们可以直接从互联网根据需要拿数据进行分析,那简直不要太美。
一方面,来自互联网的分析数据都是真实用户产生的,分析的结论自然天生就具备极高的可信度。另一方面,来自互联网的数据大多都具备一定的规模,非常适合拿来实验各种各样的数据分析技巧,是学习数据分析的不二之选。
那现在问题来了,互联网的数据,基本都是通过一个个不同的网页的形式呈现。这种类型的数据如果进行数据分析呢? 我们知道,主流的数据分析往往都是基于表格,比如 Excel 或者CSV 文件。那有没有办法把互联网上的一个个网页变为能够被分析的表格呢?答案是肯定的。
通过Python 爬虫这门神奇的技术,就可以做到这件事情。接下来,我们先来了解一下爬虫的基础。如何实现爬虫会在后续文章中一一阐释。
(1)什么是爬虫?
爬虫是一类程序的名称,也有人称之为网络爬虫。爬虫程序简单理解就是下载网页并按照一定的规则提取网页中的信息,而 Python 则是市面上最适合用来开发爬虫程序的语言。
我们通过一个例子来说明爬虫到底可以干什么。
以某电视剧网站为例,我们看到的网页是这样的。

但我们希望能够整理出一个电视剧的表格,比如下面这样:

一种方法是,我们看着网页,把电视剧和主演一个一个抄到 Excel 里。但这样比较麻烦,而且电视剧有几十页,根本不可能抄得完。
另一种方式就是 Python 爬虫,我们使用爬虫将网页中我们想要的内容(电视剧名、演员名)提取出来存放在 Python 的列表中。因为整个过程是用代码实现的,所以不管最终有多少页,我们使用一个循环就可以轻而易举获得所有电视剧的信息,最后再把保存了结果的列表存为 Excel 或者CSV 格式即可。效率相比人肉抄写提升百倍。
那现在问题来了。爬虫这么逆天的工具,背后的原理和流程是怎么样的呢?
(2)爬虫的主要流程
本质上,爬虫的原理类似于我们拿来上网的浏览器,比如 Chrome、Edge 这些。我们首先来说一下浏览器的工作原理,以 Chrome 为例:
浏览器的流程大致分为四个步骤:
-
用户输入网址,告诉浏览器想看的网页;
-
浏览器根据网址,去找网址对应的服务器请求网页内容;
-
网址对应的服务器将网页内容返回给浏览器;
-
浏览器将收到的网页内容画在窗口中展示给用户。
了解了浏览器的工作内容,我们来看一下爬虫的工作流程:
爬虫的工作主要包括以下步骤:
-
用户在代码中指定要抓取的网页的网址;
-
请求网址对应的服务器;
-
服务器返回网页内容;
-
根据用户指定的规则提取感兴趣的内容(比如之前的例子,我们仅对电视剧名字和演员名感兴趣)。
从上面的例子可以看出,我们要实现一个爬虫程序,主要要实现三大模块。
-
数据请求:可以像浏览器一样,根据一个网址去下载对应的网页内容。
-
网页分析:根据规则,从网页繁多的文字、图片中筛选出感兴趣的内容。
-
数据保存:抓取到的感兴趣的内容保存到CSV、Excel 文件中,为后续的分析环节做好准备。
(3)爬虫的注意事项
爬虫的功能十分强大,如武侠小说写的那样,越是强大的武器越要讲究正确地使用,滥用往往会导致很多不好的事情发生。
爬虫也是一样,一方面,我们可以通过爬虫来直接抓取互联网上的网页信息来构建我们的数据集。但另一方面,网站数据的所有权毕竟还是网站自身。虽然爬虫本质和浏览器的角色一样,但爬虫可以做到短时间就爬取大量的网页和数据,所以在开发与使用爬虫技术的时候,我们一定要注意以下两点:
-
适当降低抓取网页的频率,以免给相关的网站服务器产生负担;
-
抓取到的数据仅作自己分析使用,切忌传播或销售,否则可能有违法的风险。
相关文章:
快乐学Python,数据分析之获取数据方法「公开数据或爬虫」
学习Python数据分析,第一步是先获取数据,为什么说数据获取是数据分析的第一步呢,显而易见:数据分析,得先有数据,才能分析。 作为个人来说,如何获取用于分析的数据集呢? 1、获取现成…...
前端常用的设计模式
设计模式:是一种抽象的编程思想,并不局限于某一特定的编程语言,而是在许多语言之间是相通的;它是软件设计中常见的问题的通用、可反复使用、多少人知晓的一种解决方案或者模板。一般对与从事过面向对象编程的人来说会更熟悉一些。…...
游戏引擎支持脚本编程有啥好处
很多游戏引擎都支持脚本编程。Unity、Unreal Engine、CryEngine等大型游戏引擎都支持使用脚本编写游戏逻辑和功能。脚本编程通常使用C#、Lua或Python等编程语言,并且可以与游戏引擎的API进行交互来控制游戏对象、设置变量、执行行为等。使用脚本编程,游戏…...
react中概念性总结(二)
目录 说说你对react的理解?有哪些特性? 说说Real diff算法是怎么运作的,从tree层到component层到element层分别讲解? 调和阶段setState干了什么? 说说redux的工作流程? 为什么react元素有一个$$type属…...
WPF自定义漂亮顶部工具栏 WPF自定义精致最大化关闭工具栏 wpf导航栏自定义 WPF快速开发工具栏
在WPF应用程序开发中,自定义一个漂亮的顶部工具栏具有多重关键作用,它不仅增强了用户体验,还提升了整体应用的专业性和易用性。以下是对这一功能的详细介绍: 首先,自定义顶部工具栏是用户界面设计的重要组成部分&…...
Transformer 的双向编码器表示 (BERT)
一、说明 本文介绍语言句法中,最可能的单词填空在self-attention的表现形式,以及内部原理的介绍。 二、关于本文概述 在我之前的博客中,我们研究了关于生成式预训练 Transformer 的完整概述,关于生成式预训练 Transformer (GPT) 的…...
关于LwRB环形缓冲区开源库的纯C++版本支持原子操作
1、LwRB环形缓冲区开源库: GitHub - MaJerle/lwrb: Lightweight generic ring buffer manager libraryLightweight generic ring buffer manager library. Contribute to MaJerle/lwrb development by creating an account on GitHub.https://github.com/MaJerle/l…...
微信小程序Canvas画布绘制图片、文字、矩形、(椭)圆、直线
获取CanvasRenderingContext2D 对象 .js onReady() {const query = wx.createSelectorQuery()query.select(#myCanvas).fields({ node: true, size: true }).exec((res) => {const canvas = res[0].nodeconst ctx = canvas.getContext(2d)canvas.width = res[0].width * d…...
Unity Editor实用功能:Hierarchy面板的对象上绘制按按钮并响应
目录 需求描述上代码打个赏吧 需求描述 现在有这样一个需求: 在Hierarchy面板的对象上绘制按钮点击按钮,弹出菜单再点击菜单项目响应自定义操作在这里的响应主要是复制对象层级路路径 看具体效果请看动图: 注: 核心是对Edito…...
解决录制的 mp4 视频文件在 windows 无法播放的问题
解决录制的 mp4 视频文件在 windows 无法播放的问题 kazam 默认录制保存下来的 mp4 视频文件在 windows 中是无法直接使用的,这是由于视频编码方式的问题。解决办法: 首先安装 ffmeg 编码工具: sudo apt-get install ffmpeg 然后改变视频的…...
一键与图片对话!LLM实现图片关键信息提取与交互
本期文心开发者说邀请到飞桨开发者技术专家徐嘉祁,主要介绍了如何通过小模型与大模型的结合,解决数据分析中的问题。 项目背景 在智能涌现的大模型时代,越来越多的企业和研究机构开始探索如何利用大模型来提升工作效率,助力业务智…...
洛谷 P8833 [传智杯 #3 决赛] 课程 讲解
前言: 大家好! 我们又见面啦~~~ 对于我20多天没上号,深表歉意!! 希望大家给我的account点一个赞,加一个粉丝,谢谢! 也对CSDN的所有博主们送上衷心的祝福! 如有错误…...
中国IT产经新闻:新能源汽车发展前景与燃油车的利弊之争
随着科技的进步和环保意识的提高,新能源汽车在全球范围内逐渐受到重视。然而,在新能源汽车迅速发展的同时,燃油车仍然占据着主导地位。本文将从新能源与燃油车的利弊、新能源汽车的发展前景两个方面进行分析,以期为读者提供全面的…...
一、数据结构
一、 数组 1.1 数组 定义 遍历 // 遍历数组 传递指针 func traverse() {var b [...]int{1, 2, 3} //长度为3 元素为 1 2 3var ptr &b //ptr是指向数组的指针fmt.Println(b[0], b[1]) // 打印数组的前 2 个元素fmt.Println(ptr[0], ptr[1]) // 通…...
案例分享:各行业销售岗位的KPI指标制定分享
在当今竞争激烈的市场环境中,销售岗位的绩效考核至关重要。有效的绩效考核能帮助企业了解销售人员的业绩,激励他们提高效率,并确保销售战略的实现。关键绩效指标(KPI)作为绩效考核的核心,能精炼地反映销售人…...
【办公类-19-01】20240108图书统计登记表制作(23个班级)EXCEL复制表格并合并表格
背景需求: 制作一个EXCEL模板,每个班级的班主任统计 班级图书量(一个孩子10本,最多35个孩子350本) EXCEL模板 1.0版本: 将这个模板制作N份——每班一份 项目:班级图书统计表 核心:一个EXCEL模板批量生成…...
spring boot 2升级为spring boot 3中数据库连接池druid的问题
目录 ConfigurationClassPostProcessor ConfigurationClassBeanDefinitionReader MybatisPlusAutoConfiguration ConditionEvaluator OnBeanCondition 总结 近期给了一个任务,要求是对现有的 spring boot 2.x 项目进行升级,由于 spring boot 2.x 版…...
客服系统配置之Nginx处理静态资源和动态请求
Nginx直接处理静态资源,接口动态请求走反向代理到后端 这样可以减轻后端服务的压力 location / {try_files $uri kefu; }location kefu {# 这里是命名位置 kefu 的配置proxy_pass http://backend-server;# 其他反向代理的配置... }如果请求的是静态资源(…...
Golang 切片
前言 在Go语言中,切片是一个引用类型,它提供了对数组的动态窗口。切片并不存储任何数据,它只是描述了底层数组中的一个片段。切片的定义包括三个部分:指向数组的指针、切片的长度和切片的容量 基本使用 声明切片:声…...
防止公司办公终端文件数据 | 资料外泄,——自动智能透明加密防泄密软件系统
天锐绿盾公司电脑文件数据资料透明加密防泄密软件系统是一款专门用于保护企业电脑文件数据安全的软件系统。它采用透明加密技术,能够在不影响员工正常工作的情况下,对电脑上的文件数据进行自动加密,从而有效防止企业数据泄密。 PC端访问地址&…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
