很多人刚开始学 python 做数据分析的时候,最先接触的往往是 pandas, 但是如果你越往后学一点,有会发现有一个名字会反复出现,就是 nmap。 很多人知道它很重要,但是不知道它到底是干嘛的,所以今天这条视频我来介绍一下 nmap 到底是什么,以及它有什么作用。 nmap 的 全称叫 numerical python, 就是 数值 python, 你 可以把它理解成 python 里面专门用来做数值计算的一整套工具,它最核心的东西叫做 nd error, 也就是多维数组。 如果说 python 原生的例子呢,也就是列表更像是一个普通的容器,那么 numpy 的 数值更像是一个专门为了做数值计算优化过的一个数值容器。 为什么 numpy 很 重要呢?原因很简单,因为很多数据分析科学计算机器学习的问题,它本质上都是数字的计算,比如说向量矩阵、均值翻叉、向量函数这些东西,它的计算都离不开高效的数值的支持,而 numpy 做的就是这件事。所以你表面上再用 pandas, 再用 sklearn, 但是它底层其实是 number 在 起作用,这也是为什么很多人会说 number 其实是 python 数据科学里面最基础的库之一。 number 像什么呢?你可以把 number 理解成一个专门用来处理数字矩阵的一个发动机, pandas 更像是一个表格处理工具, sklearn 的 话,它是一个机器学习的工具库,但这些工具一旦涉及到真正的计算的时候,底层就是用 number 来撑着。 做了这么多, number 到底能够做什么?它能做的事还蛮多的,当你入门的时候,其实可以先记住几个最常见的一个事, 第一个就是可以创建数组,比如说一维数组、二维数组,全零、全一等差数列、随机数值等等,这些很常见。然后第二类呢,是做数组的计算,比如说加减乘除、求和求平均值、最大值、最小值、标准差等等。第三个就是切片和,所以也就是说你怎么从一个大的数组里面挑选出你所需要的那部分数据。 第四个呢,就是矩阵和现代数的运算,这部分其实很重要,因为所有的机器学习模型和科学计算的一些工具涉及到计算的时候,它用到的都是矩阵 number, pad 呢,能够把矩阵的运算做的非常快,比 python 原生的那个 list 快 非常多,所以它就非常重要。 nanope 和普通的历史有什么差别?这个地方很关键,因为很多人刚学的时候会觉得拍摄里面已经有列表了,那为什么还要专门去写 nanope 呢?列表很通用,但它不适合高效的计算,它里面可以同时放数字,字不串对象,灵活性非常强。但是 nanope 数组更强调的是 同一种类型的数据按照规则整齐的放在一起,然后方便你一次性的做批量的计算。比如说你想要让一列数据同时加一 在列表里面,往往是要写循环的,但是 number 的 话,可以用一行代码直接完成它,这背后其实就是一个向量化计算的一个思路。为什么很多人学 number 会觉得非常的抽象,因为 number 处理的不是表格的故事,它是更贴近底层的一些数据结构和数学运算。 如果你本身非常熟悉 excel, 然后第一次看到多维数族、广播机制、矩阵运算这些概念其实是非常绕的。但是你要注意,你不一定一开始就要把 number pad 学的非常深,但是你最低的要求至少要知道它是干什么的,为什么很多 python 数据科学工具都离不开它? 我觉得对于大部分做数据分析的人来说,你不一定要把特别底层特别数学化的东西学的非常深, 但是你至少要掌握这些东西树主是怎么创建的,基本计算是怎么做的,锁影和切片是怎么用的,一些基本的炫普这些基本概念是什么意思,以及它跟 pandas 或者 sklearn 这些工具是什么关系。这样的话,如果你以后去看别人写的代码,或者让 ai 帮你生成一些代码, 你去看的时候还不至于完全闷掉,就不知道它写的是什么。所以如果让我用一句话来概括 number pad 的 话,它不是最花哨的那个库,但它很可能是拍摄数据分析和机器学习这个领域里面最底层也最基础的一个库。 你不一定每天要直接去写 number pad, 但是你只要继续往数据分析机器学习这个方向走,你迟早还是会碰到它的。所以我建议你先去了解一下它是干嘛的。
粉丝5.1万获赞24.6万

很多人呢,即将学习 python, python 呢,都会有一些库, 这里面我们看一下,就是下载最多的,不一定你能用得上,就是说大家都用的比较相对比较多的哪些库啊?跟哪些有关系?第一个是 bot 三,它是 aws 的 python sdk, 支持 aws 集成, 还有 ulab 三,用于互联网上发送的 http 客户端,这一看就是网络编程用的一个东西。 request 呢,是用户友好的 http 曲库,用于发出各种 web 请求,也属于网络编程。呃, setup tools 呢,是用于构建和分发 python 包和工具包 啊,就涉及到它的安装了,设置了 model corolla, 也是 aws 的 s d s d k 核心群,提供低企的 aws 客户端。 certificate 是 用于 ssl 的 证书啊,它是发证书用的。 idna 呢,是域名,国际化域名用的 a trust it normally is 是 web 字母编码检测库,一看也是网页编程。 taping instances 是 python 类型模块的备份类型提示。 packaging 呢,是准备 python 的 核心使用程序。 python。 youtube 呢,是标准的 python 日期时间模块拓展。 呃, graphical titles 呢,是用于处理 g r p c 状态代码和元数据的使用程序。 pyyam 呢,是用来 yam 的 解析器和处理,这个就是在嗯填在配置 yam 的 这方面的东西要使用。 six 呢,就是 二三的兼容,你像以前我二点七和三点一不兼容的时候,也许下载它就好多了,对吧?现在才知道 s 三 transfer 呢,是 bot 三,亚马逊的这个,这个 s 三传输管理器。 crapital fingerprint 很 显然是一个加密的一个东西,是吧?这个,这个 crap, 这个很显然是跟加密有关系的词。 apple code 使用的是异步的版本是吧? bot code 的 异步版本。 然后这个 numpad 是 科学运算,这个是大家最常见的,你要把它排在第一我也不觉得奇怪。 f s s pitch 呢?是各种文件系统后后端的统一接口啊,这是接口 呃, c f f i 呢,是用于 python 调用 c 代码的一个交互的包。

picasa 爬虫教程第三集 request school 的 使用浏览器向服务器发起请求,然后获得到服务器响应的页面内容。这个过程我们可以想象成去奶茶店买奶茶,奶茶店就是服务器,奶茶就是我们想要获得的内容。 如果我们想用代码模拟这个行为,就需要借助一个非常实用的 python 库 requests 库。接下来的时间,我们就来学习怎么使用 requests 库,并通过它发起请求,抓取并保存百度首页的页面。 request queue 是 一个第三方库,所以我们需要先在终端中以命令的形式安装它。打开终端,在终端内写上 pip install requests, 然后按下回车就可以下载安装最新版本的 requests queue。 安装完成后,如果终端显示 successfully installed requests, 说明安装成功了。如果之前已经安装过,就不会出现这句话,而是显示 requirement already satisfied 表示你之前下载安装过这个第三方库。你也可以在终端用 ppleist 的 命令来查看当前已经安装了哪些第三方库。 成功安装好 request 库之后,我们来看看怎么用它。发起请求使用第三方库之前,除了下载安装,还有一步很重要,那就是在 python 文件中导入模块。 大家还记得之前讲过的三种导入方式吗?第一种是直接导入整个库,第二种是只导入库中需要使用的方法, 第三种是导入库并给它取一个别名。这里我们采用第一种方式直接导入整个 request 库。上个视频我们已经了解了发起 http 请求两种常见方式, get 请求和 post 请求。在 request 库中发起 get 请求就用 request 点 get 方法。 发起 post 请求,就使用 request 点 post 的 方法,当然光写这两个方法还不够。 request queue 不知道你想对哪个网站的服务器发起请求,所以我们需要在方法的括号里传入参数。第一个参数当然是最重要的,也是不能省略的,就是传入你想抓取的网页的网址。 比如我们想向百度首页发起请求,那么就以字母串的形式把网址传进去,告诉 requestcool 我 们想访问哪个地址。现在我们对服务器发起了请求,我们发起请求,服务器会对我们的身份进行甄别。而现在我们是以 requestcool 爬虫的身份发起了请求, 就相当于一个机器人想要去奶茶店喝奶茶,奶茶店老板看到后觉得机器人没有味觉,不想浪费自己的奶茶,就不会给机器人奶茶。那么作为机器人如何伪装自己成功买到奶茶呢?还记得之前我们在浏览器里看到的请求头吗? 浏览器发起请求时,会在请求头里带上自己的身份信息,也就是 user agent 发送给服务器。我们只要让 requests 也带上这个浏览器的身份信息,就能成功伪装成浏览器。那么我们怎么获取浏览器的身份信息呢? 在浏览器里右键点击页面,选择检查,进入开发者模式,然后切换到网络这个选项卡, 刷新页面,然后找到这个蓝色的图标。三 w 点百度点 com, 我 们在右边的标头中就可以看到浏览器发起的请求,以及响应 上个视频学习的浏览器发起 http 请求,找到请求头内会写上的 user agent, 用户代理复制上这一串浏览器的身份,然后在我们的代码里把这段身份信息放进 header 参数中, headers 表示的就是标头, user agent 和浏览器的身份存在对应关系,所以使用字典的形式储存,然后作为参数的值放入了 request queue 发起请求的方法中,这样我们就将 request queue 发起的请求包装成为了浏览器发起的请求。 写好这个方法之后,你就会获得服务器的响应。以 get 请求为例,我们把响应的内容保存到一个变量里,这个变量我们叫做 response 响应。那么我们现在打印一下这个 response, 发现 request 库将响应的内容打包成了一个对象。在这个响应对象里有两个我们最常用的属性,第一个 http 状态码, 使用 response 点 status code 属性,我们就可以查看 http 状态码,通过状态码我们可以知道发起的请求是否成功。第二个 response 点 text, 这个属性里面装的就是服务器响应给我们内容中响应体里的具体内容。 学习了怎么发起请求,怎么获取响应内容之后,我们来通过抓取百度浏览器首页的形式来实践一下如何使用 request cool 成为一名爬虫吧。 在拍唱中,我们需要新建一个项目,所以我们在这个主菜单中选择新建项目,然后在这里写上你新建项目的名字,在这里我不做修改。爬虫项目需要使用到虚拟解释器, 所以我们创建项目的时候需要做出一点修改,我们需要将环境勾选这个生成新的解释器,解释器的类型选择这个虚拟环境。简单来说,你可以把虚拟环境想象成一个独立的干净的项目。专用工作间,你之后可能会同时开发多个 python 项目, 不同的项目可能需要同一个库的不同版本,为了避免版本冲突,所以我们需要使用到虚拟环境。 接下来我们点击创建,打开这个新窗口。大家需要注意的一点是,虚拟环境是独立的,所以在不同的项目中使用同一个第三方库,例如 request 库都需要重新下载,那么现在我来重新下载一下 request, 点击到终端,然后在终端以命令的形式写下 pip install requests, 然后按一下回车。现在终端就开始下载 requesttool 了,成功显示了 successfully installed。 那 么我们使用 piplist 来看是否成功地下载了 requesttool。 在 这里我们可以找到 requesttool, 那 么说明我们已经成功下载安装了 request 第三方库。 接下来我们就可以完成我们的第一个爬虫项目了。在这里我们新建一个 python 文件,取名为 catch。 百度创建了这个 python 文件之后,我们在这里需要做的第一步就是导入 request queue, 写上 import requests。 现在我们已经成功在 python 文件中导入了 request queue, 使用 request queue 发起请求,那么我们需要使用到的就是 request 点 get 方法。 因为我想要抓取的是百度的首页,不需要传递密码和用户名给服务器,那么我直接使用 get 方法输入百度的网址,然后将抓取的内容给变量 response, 复制给 response 之后,我们将响应体的内容,一般来说都是网页中的原始 html 文件,我们将网页中的 html 代码写入到我们自己创建的 html 文件中。 写入文件,我们需要先打开文件,写上 whatsopen, 使用 w 写入模式创建一个百度点 html 文件,并且在这个百度点 html 文件中写上我们获取到的百度的网页 html 文件。 现在我们来运行一下这段代码,可以看到这里出现了报错,这是为什么呢?因为我没有将文字编码形式改为 utf 杠八, 所以在这里我们一定要记住将 encoding 改为 utf 杠八。再次运行这段代码,可以看到在这里已经自动创建了百度点 html 文件,点开这个 html 文件,已经成功写入了一些 html 代码, 那么我们在这里使用浏览器打开,可以看到我们已经成功抓取了一个类似百度首页的页面,但是还是出现了一些乱码。为什么我们已经将 encoding 改为了 utf 杠八,还是会出现乱码呢? 那是因为服务器已经识别了我们爬虫的身份,触发了反爬机制,没有给我们准确的信息。那么我们在浏览器中打开百度,点击检查, 找到网络,然后重新加载数据包,查找到这个三 w, 点 baidu 点 com 这个蓝色图标, 将 user agent 用户代理复制下来,点击复制,然后我们以字典的形式粘贴到这里面,直接粘贴的话,我们需要给它们加上双引号和冒号。成功粘贴好用户代理之后,我们记得在请求的时候,将用户代理写入到标头中,再次重新运行这段代码,打开百度点 html 文件, 现在我们再次在这里打开浏览器运行,得到的就是和百度首页一模一样的内容。大家可以看到在这里是三 w 点百度点 com, 也就是百度自身的网页,而这个是我自己创建的百度 html 文件,网址是这个样子的,我们抓取的页面和浏览器发起请求获得的页面是一致的, 使用这种方法你就可以抓取到大部分网站的原始网页了。不过爬虫的最终目标并不是保存整个网页,而是从网页中提取出我们真正想要的有效信息。所以下个视频我们就来学习如何从这些原始内容中解析出自己想要的数据,我们下个视频再见。

大家在使用 p i p 做我们所涉及到的第三方库安装的时候呢,一定会遇到一个网络问题啊,为什么呢?因为我们提到了前面它默认所使用的网站是一个外国网站啊,有时候使用的是我们所说这个 p y p i 点 o r g 啊这样的一个网站来去下载对应的库,那么这个呢,有时候咱们在国内访问的时候呢,会比较慢, 那怎么解决慢这个问题呢啊?这时候就牵扯到我们要去修改 p i p 的 数据源的配置,呃,我们一般会用国内的数据源啊去替代国外的数据源啊,这样话呢就不会出现我们有时候这个库下载不下来,或者是比较慢的情况了。 那么这个怎么来替代我们替代的话呢?实际上是有两种方案,那么第一种方案呢,就是一个永久性的配置,就是我们修改完之后, 那么啊每次他用的源呢就全部修改掉了。那么第二种方式呢,是一种临时的方案,这临时方案呢只是常用于我们进行测试的时候啊,什么是临时方案?大家看一下,有时候我们在安装的时候呢, 在后面增加一个杠 i, 然后杠 i 后面呢去写一个圆的地址,那么我在这呢所写这个圆地址就是由清华大学所提供的咱们国内的一个数据源的地址。那比如说通过这样的方式呢,他在安装 request 的 时的时候,就会从我们这个国内的圆来进行安装了,但这个呢只是针对于这一次安装,你说你下次安装的话呢,如果你没有指定他默认呢还是用的是国外的这个圆, 所以说我们用的比较多的话呢,还是一次性给它修改到,那怎么来修改呢?在这呢,我们要去给它增加一个 p i p 的 配置文件啊,大家注意下,这配置文件呢,它放的位置不太一样,一般 windows 的 话呢,我们放的是 app date, 这个目录下会去放一个 p i p 的 叫 n i 的 配置文件。那么如果大家使用的是 linux 的 话呢 啊,这个配置界面呢,是放在呃它的根目录下的啊,去创建一个 p i p 的 目录,然后放一个 p i p 点 config 的 文件,所以这两文件放的位置不一样。那么我们首先就来演示一下 windows 放在哪个地方,因为后续呢 linux 呢,我们会在呃部署的时候会大家去介绍到啊,因为部署的服务器呢,通常是 linux 的, 那么我们这时候呢就在 windows 上,如果说这个目录呢特别长,你记不住的话,你就记一个它的简化写法就可以了,打开一个文件夹,在这来输就行了, app 对 的,那么他自己会帮大家找到 app 对 的那个目录 ip。 好, 这时候大家就打开了啊,但有种情况就是默认这个文件夹是没有的啊,如果你第一次安装的话呢,你的电脑应该是没有这文件夹的,所以说大家这时候呢就去新建一个文件夹,然后在里面新建这个文件就行了。我们主要关注下这文件是写了什么内容啊?打开一下, 那么这文件里的话呢?呃,我现在写的话是写的比较简单的,最简单写法就是配一个数据源的地址,然后把它配到我们的 index url 上, index url 这个属性呢,它的含义指的就是我们下载源的主地址是什么啊?说配好之后呢,它就会默认读 我们这个数据源的地址,有下次我们从这个数据源上去下载文件,那么除了此之外呢,这里面可配的信息有很多啊,给大家再举个例子啊,有时候呢,我们可能配一个源,比如这个源由于某些原因导致了他暂时不支持了,或者某一个库他上面没有怎么办呢?我们在下面可以去配置一个备份的数据源, 备份的数据员通过这样的一个属性,那备份数据员的主要作用呢?就是当主数据员啊,我没有下载包成功的话,那么他会自动去读备数据员的上面的包啊。备数据员的话,我们可以配成跟之前不太一样。那么在国内的话呢,咱们用的数据员比较多的是,可以给大家推荐有四个 啊,分别是清华大学的,阿里云的,中国科具科学技术大学的,还有华为云的。那么大家可以根据情况去配啊,比如说我们把咱们备数据员的话,换备份成这个阿里的,对吧?我们就写他的这个网址, 好,我们到这把这网址给它改一下啊,有时候写成清阿里的,那么有时候主数据源是清华大学的啊,背数据源呢,就是阿里的了。那么在这呢,我还可以配一个超时的时间 啊,那么这个超时时间呢,它的主要作用就是来去界定,比如说我们连接数据源多长时间啊,就认为这数据源就 超时了,就要换数据源了,那么这个时间呢,我们比如说一般可以配成六十啊,这是秒的意思啊,就说比如一分钟这个数据源我们没有连上,那我们就选用备用数据源进行一个下载啊,以后这块呢我们可以增加一些配置,这样可以保证你的数据源啊,下载起来是没问题的啊,不至于说主数据源出了问题,我也出现下载失败这种情况出现啊, 但在这呢他有些其他的配置啊啊,其他配置呢,大家可以去查询一下文档,或者查询下 ai 啊,会有相关的一个介绍,那么咱们后面呢用到哪个去介绍哪个好?这个文件呢咱们就编辑好了啊,编辑好之后呢,我们要想让它升调的话呢,大家要去把你的这个控制台啊,要重启一下,比如说要把我们这个倒数命令呢,给他关掉,再去打开一遍, 咱们再打开一遍啊,告诉命令, ok 啊,打开之后的话呢,我们怎么知道这个配置数据完成了,最简单办法就是你下载一个库,是吧?看它从哪下的,那么如果你在没下库状态下怎么去测试呢?我们这么来测试啊,大家可以记住几个命令,第一个命令呢叫 pip config list 啊,这时候呢大家看它就会把我们生效的这个配置给你打印出来,比如说我们能打印出来这个信息,说明这个配置就配置上了,对吧?可以配置到这个信息出来啊。

pyasa 爬虫教程第四集 beautiful subcool 的 使用 hello, 大家好,你知道什么是网络爬虫吗?这里说的爬虫可不是一条真的虫子,而是指模拟人类在浏览网站时,把有价值的信息自动保存下来的一种行为。 举个例子,假如我们想每天自动获取百度热搜的内容,手动打开网页复制太麻烦,但通过爬虫代码就可以做到批量的把热搜内容保存下来,完全不需要我们手动操作。那么网络爬虫是怎么做到的呢? 首先,我们需要先弄明白百度里的内容是如何出现在我们眼前的。当我们想在浏览器里查看百度时,在搜索框输入百度或者直接输入网址,这个过程就相当于我们人类通过浏览器向百度的服务器发起了一次请求, 服务器收到请求后,会把百度的原始网页内容,也就是 html 代码返回给浏览器,这些 html 代码经过浏览器的渲染,才变成了我们看到的那种图纹并茂、排版整齐的漂亮页面。 这就是我们人类在浏览器中访问网站时,浏览器和服务器之间做的事情。而网络爬虫呢,则是通过代码的方式,直接向服务器发起请求,获取到页面内容。因为没有浏览器的渲染,我们拿到的就只有最原始的 html 代码。 百度页面上的每一个字,每一张图片,其实都是由 html 代码中的标签来承载和展示的。所以如果我们想抓取对自己有用的信息,思路就很清晰了,只需要找到对应的标签,把里面的内容提取出来就行。 但 html 里的标签有成百上千种,如果一个个去找,那就太麻烦了,那怎么快速找到我们需要的标签呢?这个视频我们就来学习一个非常好用的库, beautiful soup。 大家可以把 beautiful soup 理解成一个过滤器, 它能够解析网页的原始内容,把 html 代码里的标签自动分门别类整理好。这样当我们想抓取热搜词条的时候,我们就只需要找到对应的标签就好了。 接下来我们就来看看怎么使用 beautiful soup cool beautiful soup cool 是 第三方库,需要在终端以命令的形式写下 pip install beautiful soup 四就可以完成下载和安装,安装好之后,我们就可以用它来解析 html 文件了。 在 python 里我们通常这样写,首先导入 request 库,使用 request 库中的 get 方法向百度网页发起请求。 为了防止服务器发现我们是爬虫而不返回正确数据,我们需要带上 headers 参数,伪装成浏览器发起请求,获取到响应之后呢,用 response 点 text 拿到网页的 html 代码。拿到了 html 代码之后,我们再导入 bs 库,使用 beautiful soup 库中的 beautiful soup 方法, 并且利用 html 解析器把原始的 html 代码中的标签都解析成一个个的标签对象。作为爬虫,我们其实不需要知道每个标签的具体作用,但我们一定要弄清楚 html 标签的结构, 在 html 里,大部分标签都是成组出现的,结构是这个样子的,想要抓取的数据就包裹在这个标签中间。 beautiful soup 的 解析器会仔细阅读整个 html 文件,把这些标签都整理归类好。现在我们来实际操作一下, 在浏览器中打开百度网页,右键点击检查,进入开发者工具。在这个窗口里,我们可以看到整个页面的 html 源码, 并且我们可以看到有很多箭括号包裹着元素,这些箭括号就是 html 标签。点击左上角的小箭头,然后把鼠标移动到页面上我们感兴趣的元素上。比如热搜里的一个词条,源代码就会跳转到 html 源码中的位置, 我们可以看到这个热搜词条是由一个 span 标签包裹起来的,其他的热搜词条也是由一个 span 标签包裹起来的。 那么我们想要查找热搜词条就只需要查找 span 标签就可以了,而解析器就会帮我们自动找到 html 文件中的所有 span 标签。使用 beautiful super cool 最常用的方法有两种,就是根据标签名来查找想要的元素,使用 find 或者 find all 方法, 在括号内写上你想要查找的标签名,记住标签名要使用引号标记起来。假设查找 d i v 标签,翻译方法只能够抓取 html 代码中第一个你想要查找的标签,而 find 方法可以查找 html 代码中所有的 d i v 标签, 这也是爬虫批量获取数据常用的方法。还是打开这个开发者模式,我们会发现在一个网页的 html 文件中,可能不同的内容都会使用相同名字的标签, 比如说这个热搜词条和上面的这个元素零都是使用 span 标签包裹起来的。而我们只想要抓取到热搜中的词条,我们应该怎么精确地查找到这个词条呢?每个 html 标签后面通常会带上一些属性,比如说 id 或者 class, 在 id 和 class 后面的值就相当于这个标签特有的名字,可以帮助我们更加精确地找到这个标签。 在我们来复制这个热搜词条特有的 class 名 title content title, 将 class 名也写到 find 或者 find all 方法中。 值得注意的是,因为 class 在 python 中是创建类的关键词,所以我们复制到这里查找标签时,需要在 class 后面加上下划线作为区分。这样 hot search 内就是我们刚刚抓取的 span 标签了。简单来说,爬虫的工作流程就是这个样子的, 使用 request cool 发起请求获得到响应的 html 文件,再使用 beautiful suite 内的解析器来解析 html 文件。 将每个 html 标签归类好,再使用 find 或者 find 方法搜索目标标签,并且从目标中提取到文本或者属性刚刚的代码。我们使用的是 find 方法抓取到了第一个热搜词条的内容。如果需要抓取页面中所有的热搜词条,就需要使用到 find 方法。 接下来我们通过练习来提取热搜上自己想要的信息吧。首先,我们必须在 pycharm 中的终端内下载好 beautiful soup cool, 在 终端中写下命令, piping store b s 四,然后按下回车键,直到出现这个 successfully, 那 么就表示我们已经安装成功了,在这里才可以使用上 beautiful soup cool。 想要抓取百度页面中所有的热搜词条,那么我们就需要使用到的是 find all 方法。在这里将我们刚刚复制过来的代码改为 find all。 然后我们再来运行一下这段代码。 大家可以看到我们可以抓取到这个对应的标签。想要获取到对应的内容,那么我们就需要使用到 for 循环,使用 element 代替列表中的元素,抓取每一个标签里面的内容。使用这个点 text 的 方法 写好之后,我们再来运行这段代码,大家就可以看到我们就成功抓取到了热搜上的词条。那么再点击看一下热搜词条, 可以看到热搜上的词条与我们抓取的是一致的,那么就说明我们已经成功抓取了百度中的热搜词条。 beautiful soup 就 像一个智能的文档分析助理,能够帮你将杂乱无章的 html 代码变成结构清晰,可以轻松获取信息的数据模型。 相信大家通过今天的学习已经掌握了 request cool 和 beautiful soup cool, 并且已经真正地掌握了爬虫的工作原理。你也可以用以上方法尝试来抓取你想要获取的内容。当然如果你有什么疑问也可以在这个评论区提出来,那么我们下个视频再见吧,拜拜!

pyc 数据分析第二天, matt potley 入门 hello, 大家好呀,我是浅安。作为刚学 python 做数据分析的小白,我猜很多人都有同一个疑问, 经常听人提起 my pro lib, 它到底是什么?安装起来麻烦吗?我们新手能学会吗?别着急,今天这条视频就从新手视角出发,一步步带大家认识 my pro lib, 学会基础用法,跟着步骤念,你也能慢慢掌握。 先跟大家说清楚,核心 myprolib 到底能帮我们解决什么问题。简单来说,它是 python 常用的数据可塑化工具,也是小白做数据分析时的必备工具。 咱们平时做数据分析,面对一堆数字和表格,往往很难快速找到其中的规律,就算想把分析结果展示给别人,也不容易说清楚。而 micro lib 就是 用来解决这个问题的, 它可以把枯燥的数据转换成折线图、柱状图、饼图等直观的图标,不管是自己查看数据趋势,还是做汇报展示, 都能一眼看清重点,也能让我们的分析结果更显专业。了解完 my pro lib 的 作用,接下来就进入大家关心的安装使用环节, 下面我就一步步带大家实操,教大家怎么轻松完成安装与使用。第一步,在拍上左下角,找到终端界面。第二步,直接输入这行命令, p i p install my pro lib, 按下回车键,耐心等几分钟,它就会自动安装完成。如果安装失败,记得用前面视频提到的换原安装哦。 安装完成后,关键的部分来了,新手入门使用不用记一堆复杂操作,就掌握这三步基础流程, 跟着敲代码,一分钟就能画出你的第一个数据图表,成就感直接拉满。第一步,导入酷迷你 import my pro lib 点呸 plot as prt, prt 是 业内通用的简写,就像我们的小名一样。 第二步,准备数据。新手不用搞复杂,简单数据练手感就好,比如直接写 data, 等于一二三四五, 里面的数字可以随便换,哪怕换成你喜欢的数字都可以,不影响练习效果,重点是熟悉操作流程。第三步,绘图加显示先写绘图命令 p r t, 点 plot, 里面填写你需要展示的数据,也就是 data, 这是画折线图的基础命令,也是新手常用的。再写显示命令, p r t, 点 show, 输入完这两行代码,运行代码,神奇的事情就发生了,图标会直接弹出来,是不是超级简单? 其实学到这里,你会发现 my pro lib 真的 没有大家想象中的那么难,它的核心作用就是把枯燥的数据变直观,变好看。不管你是学生还是职场里做数据分析的朋友,哪怕是刚入门 python 的 纯小白, 掌握它都能大幅提升数据分析效率,让你的汇报报告更出彩,轻松脱颖而出。而且它的入门特别简单,不用害怕代码复杂,也不用纠结看不懂。 接下来跟着我讲的三步基础流程,反复练习两三遍,就能够快速上手,顺利画出属于自己的第一个数据图表,为后续的拍损数据分析之路打下扎实的基础。

大家好,今天教你们 date time 库,我们先来教一下显示时间 这串代码的导入该库,然后定义一个变量等于 date time, date time no, 这是显示时间,然后打印当前时间, 可以看到打印出当前时间了,下一步只获取当前日期, 还是定一个变量,但是是 date today, 这个就是获取当前日期,然后下面的这一串代码是打印它 看到获取当前日期了。接下来我们要一个一个打印, 还是获取当前时间,但只不过变量后面加了年月日时分秒,打印一下 获取年月日时分秒了。接下来试校你们的格式, 这个 starf type 自定义格式,就比如双引号里面,然后运行它,格式就变了, 时间格式变调,最后一个就是时间加减, 好了,这就是本 季。

大家好,今天教你们随机库, 先导入这个库,然后教你们打印随机小数,用 print random random 打印小数,运行起来看看。 打印了随机小数,接下来教你们随机一到一百的随机数, 这个就是随机数,同理 range 也是随机数, 随机数随机的是二十二。接下来打乱列表,随机抽选列表,在列表中随机选项, 看这些就是随机数。关于列表的选项了,我们运行试试, 可以看到这三个都行了。好了,这就是本期 rap 的 内容,你学废了吗?

什么是 type? 它其实就是 python 自带的一个共享工具库,里面有世界上无数人写好的现成的工具供你调用, 比如说自动生成图片、快速画图、爬虫爬数据等,其中还包括了像 pandas 数据库、商派数字计算、 request 上网等知名工具。 有了 type, 你 想用这些工具,就不用再到网上去到处找下载解压配置环境了, 直接用 type 指令一键安装。接下来我们演示一下怎么使用 type, 我 们点击 win 加二,打开命令行,输入 cmd, 打开控制面板,在控制面板上我们输入 type 双横杠 version, 如果这里显示出来了 pip 的 版本号,说明你的 python 已经装好了 pip 之后我们来演示一下怎么使用 pip 安装各种工具库。我以当 pip 为例子,我们先输入 pip install, 这里的 install 是 安装的意思,我们再输入你想要安装的工具的名称,比如我要安装的是 numpad, 然后直接点击 enter, 这里它就开始下载了,我们可以看到上面的进度条, 等到新的指令出来的时候,你就会看到这里已经下好了 long pad 以及它的版本号,我们安装就完成了。

好,接下来我们来介绍一下买设备基础的第二部分,那这里边呢主要是和查询相关的,那这块全是要求大家要掌握的,那么首先第一个是掌握 d q l 查询语句,那第一个 简单查询条件查询排序,聚合分组,去重分页这一堆都需要掌握。记不记得我刚才给你们写过一个综合的那个符号句子,有印象吗?那个就是整个这一堆的一个总结。那再来呢就是表关系一对多,多对多和一对一,然后之后就是一个外界和多表查询这一块。 行了,那收盘咱们快速去演示一下。好,那首先我们先来看第一部分查询,之前我们说在电商网站上,他的商品数据呢,都是存在表里边的,当我们通过网站来浏览数据的时候,哎,就是在进行一个查询的操作。 好,所以呢,接下来我们来看看关于这个是单表查询如何快速走一遍。首先第一个我们先来看这个操作呢叫简单查询,能够使用 slack 的 进行简单查询操作 啊,那么这里边呢就有一个 slack 的 星号 from 它,然后 slack 的 列名一,列名二等等等等,还有一个叫别名查询,这里边是不是有就是华为 price store, 然后还有什么还有意思, self catalog id 等等等等,这里边是不是有一堆的数据啊?哎,我们就可以拿来直接去玩了,那下边呢就是星代表所有列, 然后呢,那我们如果想精准的要其中某一列,那你可以在这里边写列名的方式来做,那接下来再往前边也可以给列起列名,然后呢,那也可以通过表明点列名, 这种情况适用于啥呢?适用于举个例子啊,假设我们的 a 表有内幕, b 表也有内幕, c 表也有内幕,这样那个内幕是不是在这里边已经重复了呀?所以如果说,哎,我想精准的识别这个内幕是谁,就可以通过表名加列名来实现。 好,那接下来再往下边,表名也是可以起别名的,之后呢,就是起别名的时候,如果别名和关键词重名了,要在两侧添加反引号,是不就是咱说的这个 esc 下边那个键啊?哎,这个叫反引号这个键。 好了,那接下来再往前边儿,就是比如 select id, s, d, s c, 那 么要通过反义号去做一个包裹。好,那之后呢,就是往下来看,那之后就是总结的这一堆了,那接下来我们快速的去演示一下这个数据集呢,我给大家准备的是它, 我们可以看一下,在这里边呢有一个笔记,我们可以打开它,笔记打开以后呢在这里边,哎,我,我的那个数据集呢,他好像没在这,是吧?然后把这个先给他关掉了,我找一下啊, 好,那接下来我们继续啊啊,这个数据集呢,已经分享给大家了,在这有一个数据集,大家直接双击打开,把第一波直接 ctrl c 把它贴走就可以了。 那么贴完以后呢,我们做一件事,首先 alt 加 e, 调出左侧的一个绘画连接右键,我们去创建一个新的绘画, 那建完以后呢,在右侧找到这个文件,我们要干嘛呀?给它改名了,右键 refactor rel, 这是不是咱讲的零四,零四呢?这个动作是咱要讲的,叫单表查询相关。好,来,那么首先 整个这个位置呢,我来先给大家写一下,叫杠星,来我们一块看啊,单表查询介绍, 首先第一个概数,我们说一下,所谓的单表查询指的是指的是按照一定的条件,然后从一张哎搜索表中表中查出我们想要的啊,想要的结果数据。 好,那么接下来咱来看一下它的一个格式啊,就是总的格式啊,叫总总的格式。总的格式是怎么写的呢?来,我记得我讲过一回啊,大家再看。 select 中括号,然后写上 d, s, t, i, c, d, d, s, t 等, 然后呢?写上列名 as 别名,然后再来个列名 as 别名,然后再来一个点点点, 然后呢,我想说的是 as 别名这一堆,我再给你加个中括号,就是想加就加,不想加拉倒,那别名,想加就加,不想加别不写啊,那再来后边就是我们的 from, from 什么呢? from 后边写上我们的数据表明, 那接下来再来一个 vr, 这个是一个组前,组前啊,筛选好那再来。完事以后 group by 刚写过一回, group by, 后边写上分组词段,那再往后写上一个 happy, 这个叫组后筛选,再往后边写上一个 order by, order by 后边写上排序的,排序的列一,然后中括号, a, s, c, 或者说 d, s, c, 然后再来个操作叫排序,排序的叫列二, 排序的列二啊,这个点他也可以写。对对,那再来来个 limit, 后边写上一个 n 和 m, 那 就是起始,所以叫起始,所以再来逗号数据条数。好,我讲完了。好,那么这就是我们一会要讲的总的这个格式,它长这个样子。 好,那接下来他有些细节,细节我一会遇到了我给你写,一二三四往下加,我很负责任讲,接下来我们两节课的时间,大家只要把这个东西学会就可以了啊,就这一个。好,那既然我一项一项拆开给你讲,首先这个地方我们先写上,叫准备 准备数据。准备数据呢,就是把刚才这堆我们给它拉上来,拉过来以后呢,我们干件事在这里边写上一个看,好啊,把刚才这堆 ctrl c 啊, ctrl c 给它拉下来,拉下来以后呢,我们 ctrl c 把它复制一下,复制完毕以后我们把它称之为第一项,叫准备动作,不是按一啊,叫准备动作好干嘛呢?哎,叫准备数据。 那么问你个问题啊,咱现在做的是什么库啊?我们现在用的是哪个库?你是不是要切一下呀?叫 use 点零二。我直接来了 use 点零二,这个叫切库, 然后看好整个这里边代码是不是都要执行啊?他其实说白了就一张商品表,然后有个商品 id, 商品名,有个单价,有个分类 id, 接下来呢,里边就是往里添加了一堆的数据, excel 的 英寸往里边怼数据 value 等于 c o c。 我 问你个问题啊,我不用这个数据集, 我能不能自己搞一张商品表,咱往里边塞一些数据可不可以?当然可以了,一模一样的东西啊。来,接下来我们直接开始, 首先整个这个位置,我做一件事,啥事呢? ctrl 加回车,然后选择下边那个, 这样的话我是不是把所有代码全选中了?嗯,敲回车我们执行就可以了。那么执行以后,接下来我先给大家讲案例,其实你可以自己完全来设计一些案例,围绕他来做就行了。 好,那么我先给大家讲这个叫案例一,案例一呢,我们把它称之为叫简单查询。 好,首先我们先写第一个,第一个呢,是查询表中所有的数据啊,它的格式是,哎,格式,格式是 select, 叫列名一,然后多号列名二,给大家点 from, 叫数据表明。 好,那么来了啊, select, 我 们来看,你可以先写个什么呢?星 from from 谁呢啊?这个叫 products。 那前面正常不应该写形,应该写啥呢? pid, 然后呢,再来写上拼音内容,但是别一个一个敲,你往下拉拉拉拉,看到这,有没有发现这个表里边全列名是不全来了,你直接敲回车就行了。那这个 pid 前面那个你就可以给它删掉,因为多一个 ctrl 加回车,那为什么没结果?因为新文件是不要点一下 in edit 呀啊,点一下,点完以后再次执行,你会发现表中所有的数据集全来了,那我往下拉一下啊,表中所有数据集一共十三条,全在这,咱要一直用。 好,那么接下来那有人说,老师,我如果说我不想要这样做干嘛呢?来格式二, 格式叫上述格式。哎,语法堂,语法堂是如果要写全列啊,或者说查询全列啊,可以写为写,为什么呢?写为这个写啊,写为这个叫星, 那于是上面那个就可以写 slack 的 星 from 谁呢?或者 x, 接下来 ctrl 加回车,你会发现效果跟刚才是一模一样的。 哎,能跟上来吧。好,那接下来再往下边清屏了,清屏,我们第二个是查询,查询指定列的数据啊,例如我只要俩,哪俩呢?一个是商品名,一个是价格, 那这种情况下就只能 select 拼音 name 逗号,再来个 rise from projects, 这就是查询精准的两列的数据。但是有个问题就是我英语不好, 那这个时候呢?那批量啥意思? price 啥意思?我看不懂。所以呢,第三个叫别名,叫别名查询。 别名查询是啥呢?格式是格式啊,我写一下,写到这格式,正常应该是列名,叫列名 as 别名,然后呢?或者叫表明,表明 as 别名, 但是注意啊,那 s 可以 省略不写,那于是正常应该是 p 内容,你看啊,我 s 了, s 啥呢?叫商品,听好商品名啊。再来一个, price 叫 s, 什么商品?价格? 价格?你看, ctrl 加回车,你告诉我有没有在这里面把列名改了?请问是这次查询的时候改了, 还是说我在原表中也把这个表名给改了?这个列名改不改啊?没有啊,他只是临时查询的时候做显示。原表的列名有做修改吗?没有的,没有。那接下来我给你演示一下。这个就是我们要讲细节, ctrl 加 d, s 可以 首列不写 好,那么 s 省略不写咋做呢?那就是 p 类目,直接写个商品名,然后呢? price 直接写个价格,甚至你还能给这个表名起个别名叫 s p, 你 屁股后边直接在这写个 p 就 ok 了。 但是现在没有意义啊,为啥现在就这一张表,你写这个屁是不是一点意义都没有?如果一会涉及到多张表啊,那这个屁是不是就有意义了啊?那现在没有啊,只是说可以这样做。走你,你看执行以后,那对号执行成功结果跟刚才是不是也是一样的?好 简单查询,其实到这已经玩的差不多了,但是还有一个我没有给大家讲,那干嘛呢?第四个叫干嘛呀?听好了叫修改某列值啊,或者说干嘛呢?来看一下啊。那记 啊,还是查询商品名啊,然后还有一个价格,但是,哎,价格要 加十块钱的运费。加十啊,就比如说现在这个商品卖多少钱,我要在所有商品价格上加十块钱,就是每个商品都加十块钱,为啥多十块钱的运费呗。那如果你来查的话,我 ctrl 加第一首, alt shift 加下下下下下下。 这个代码是不是已经过来了?你告诉我,如果我现在想在这个地方价格加十怎么做? 按照你的理解怎么做? plus 直接加十就行了。老师还能这样查?当然可以了, ctrl 加回车,但是完犊子了。为啥呢?先说价格变了, 但是上面的列名是不是也完犊子了?而且你看老有的同学问老师你繁衍号哪来的?我繁衍号这么来的?这不人家这个地方就加个繁衍号吗?那这个列名不符合我想要的,我可以在后边 s 起个别名,你猜我还起个啥名? price, 所以呢,这是他的一个全称,但是我要一解,解完犊子了,你信吗?你猜我要写成什么 price? 加十 price 啊,就这种情况,那这种情况呢?我可要加回车。我先问你能执行吗?能执行,但是他给我报仇了, 报警告了。有同学看到这个代码他就懵了啊。所以说前期啊,就是,虽然能写就是 s, 虽然能省略啊,但是干嘛呀?我建议对吧你,甚至你可以在这写个什么呢?写个 pr 都行, 对吧?你只要不是原始的名字,他就不会给你报那个警告,除非是你写的跟原始一模一样。那这种情况下,他有可能就给你报刚才那个警告的问题。 喂,能不能听到啊?所以呢?所以说回来啊,虽然能省略,这样做也可以,但不推荐。所以前期大家写 s 编名的时候,你最好全加上啊,这种方式会好很多。 好了,到这关于我们的第一波,哎,我们就聊完了,简单查询就是怎么样起编名,怎么样去修改列的值,然后以及怎么样去做这个事情。我们就聊到这里来,我先保存一下。

大家好,从这一期开始呢,我们一起来学习中文拍摄的一些界面库 啊,这一次呢我先给大家介绍这个,这个界面库,他叫 p y c p u r, 可以理解成是简单的界面啊,当然我们是汉化的翻译的,这个虽然他名字叫做简单,但是来看一下他的这个演示啊,也可以做出比较复杂的效果, 而且呢使用起来呢比这个拍摄自带的要非常的漂亮很多。好,我们来学习一下, 其实呢拍摄呢,它本身啊自带了一种这个界面库,我们在中文拍摄中也把它分装了一下,非常简单,比如说我们常说这个按钮框, 但是呢这样呢非常的啊,不太好看啊,就这样子啊,这也是拍成他啊,这个自带的一个酷的一个风装,他就是这种颜色啊, 而且呢啊,虽然这个我们封装起来之后,写起来非常简单,一行呢你写上这么一行命令就可以做出一个弹框,但是呢这些弹框都不能修改,就是固定的一些形式, 如果你想这个修改呢,所以说呢,我们就给大家介绍了这个界面库啊,这个界面库呢也不用安装,就在中文拍摄里面,但如果你还没有安装中文拍摄呢, 你就访问我的网址,我的网站是五二中文编程点 com, 这是五二中编程, 然后呢点击这个常用中文库啊,这里面呢我们就可以下载到这个。好,现在我们来看一下,这里面呢集成了很多常用的中文这个库,现在我们就给大家看一下怎么找出来。 好,我们写一个导入 input, 然后呢你写完这个中文拍成之后,加个点儿就可以看到,这里面呢,我汉化了一些常用的库 啊,这个库的名字叫 py simplegi, 你们看到有两个带大写的,这个是原版,你也可以直接使用英文版,英文版也不用安装啊,就是我已经把它集中到这里面了,如果你现在安装最新版本,反而呢是一个啊,最新的版本反而是需要注册, 需要收费的,现在是一个之前一个不收费的版本啊,你现在呢?我们点击这个,这个是英文版,加上这个下划线 z w 就是中文版。 好,我们现在导入之后给他取一个名字哦,你呢可以取自己喜欢的名字,或者就叫 ur 或者 gur 或者等等,我这用一个中文的界面两个字,大家这样看起来会比较 啊,一读好,现在我们就来看一下演示,就这个时候啊,我们点一下他输入演示两个汉字。 好,我们现在直接运行一下,就可以看到他有一个演示效果啊,稍等一会啊,这个演示效果 有这个菜单栏,这些颜色呢,你都可以自己设置啊,有些文本这个进度条什么的啊,还有一些这个常用的啊,展示了一下这些主件 啊,内容比较多啊,我这有个界面没有翻译,当我们使用这一组件都可以使用中文的名称啊,这个一会给大家演示 啊,这里面我想重点介绍的是这个主题,他这个主题非常的好啊,就是啊,这个主题的输入输入我们不说了, 可以看到能够一键切换不同的颜色搭配。这样子啊,这介绍这个搭配啊,我先关掉啊,这个有点慢啊,点赞切换主题啊, 刚才是啊,这个这种颜色,你看我点这个黑色啊,现在有这么多主题呢,我先切换第一个,大家看,你看就说他的主题的类型是非常多的, 这个我就不再一一切换了,这个现在我们来正式的来学习一下这个,这个库, 好,这个库呢,实际上我已经写好了一个例子,大家把鼠标指到这上面,就可以看到我已经写好的一个例子。好,现在我来直接复制一下,大家看一下这个例子就行,从这开始第一行我已经有了 on 这个,这一行是设置字体大小的,如果啊,我们现在直接运行吧,直接运一下,我这个例子已经算好了,你看就是出来这么一个啊,稍微复杂一点的窗口,当然我们可以自己去写这个窗口的布局 啊,现在我们演示一下,随便输入两个字,点击确定啊,就来了一个弹框,而且呢,你看到这也出现了这两个字,这呢提醒我们输入了什么可以接收这些数据啊,这个意思呢,我们之后再看, 我们现在先来看一下这个窗口他怎么显示的,我们说我们现在这个窗口是复杂的,所以说不是一行代码就能够显示出来,你复杂的窗口就需要复杂的来配置 啊,其中这一行,第一行,这一行呢是设置一个选项可以看出来的,我使用的微燃雅黑字体二十号字,如果没有这一行也行,他是用默认的字体和字号,这样就太小了, 就不利于大家的这个看这个教程了。但如果你的电脑分辨率比较低,那这个会显得大一些,根据自己的情况啊,是否使用这一行啊?然后第二部分是布局,来看一下这个布局,这就是我这要重点讲的,你看 这个布局他们的关系啊,就是你这个窗口复杂的,窗口在里面是摆摆放哪些内容,怎么摆啊?一会我们再来详细介绍。现在我们来看一下窗口的显示, 这的显示呢,好像比较复杂啊,实际上呢,这里面不但有窗口的显示呢,还有对于这个窗口内的组件点了和输入了之后做出哪些反应,所以说显得有点复杂 啊,我们先把它简化一下,我们下一节再讲怎么去反映你的输入和点击。现在呢,我们先把它简化这个模型来看,我这样简化一下,这样呢,这只有这么几行,大家看起来就清晰多了,你看 首先呢布局呢,就是啊,这个窗口内放入哪些内容?看这个窗口放了这么几行内容啊,这个文本欢迎使用一个输入框啊,这还有个文本,但是你现在 看不见,我输入两个字之后呢,啊,这要更新一下界面啊,这个现在我把它删掉,更新不了了,我把那个处理删掉,我们先对照一下吧,就是有这么五行内容。好,这就是布局, 布完局呢,你得,你呢需要把它给啊,窗口放到里面来,我们先定义一个窗口,这个窗口呢使用了这么一个界面,窗口类标题,我们可以起个标题,这呢他用了默认的 布局,就是把这个布局给拿过来,如果我们布局改了,这个就会改,然后呢下一行是窗口的读取,所谓读取呢,就是显示出来,就是把这个窗口给展示出来,最后是关闭,但是他不是直接 关闭啊,是你点了之后他才会关闭,但是呢我们一般啊,写上这一行就是防止出错啊,虽然把这行省略也行,那我建议大家写上,就是说要真正的显示一个窗口有四行内容比较重要。 哪四行内容呢?要定义一个布局,然后呢啊实力化窗口类,然后呢读取这个窗口,最后呢关闭这个窗口。 好,现在我们就来看一下布局,所谓布局呢,大家刚才也看到了这么一个效果 啊,这个布局中呢,可以给窗口的内内部呢放一些主件,这些主件呢有文本按钮等,主件有点多,我现在准备给大家简化一下,我们光用按钮 组件,只用这一个组件,这样呢会简单一些。大家看一下布局呢,他必须写一个列表,就是你写一个双过号的就行,我现在把它全删掉,这样 就说所有的内容这个布局都写到一个列表中,现在我列表是空的,我看一下会显示什么啊?这样不行,好了,这个布局中,我们然后再干什么呢?我现在回车,我现在分多行来写,这样显得更清晰。 这里面我再加一个列表,然后放入我刚才复制的这个按钮来看一下,效果。 好,现在出现了一个按钮,比如说这个列表中再刷 一个列表,什么意思呢?这个总的列表就是整个所有的内容,这个窗口中,然后呢这里面有再放多个列表,每个列表代表一行,现在我加一个逗号来看,我继续呢再来复制粘贴一下。 好,现在我再来运行,他会出现两行确定按钮来看一下,是不是 啊,刚才这个还没关掉,先关掉它再来一次 啊,有两行就说这个总的列表中你放上几个列表,然后呢,这些列表就作为每一行的内容,我们可以再来一个回车,就是我们在这个代码中一行就放一个列表,这样就就给他进行了一一个 一一对应,我现在改成一和二,然后每一行中也可以放多个组件,我这个组件,比如说大家看这啊,我这第一行我想放两个按钮,我就可以这样想 啊,在这个列表呢有两个元素啊,这个加一个一点一吧,一点二吧,这个叫一点一啊,大家看一下效果,我先把它关掉 来看,就这样你们可以在啊这一个列表中放多个储件, 也可以只放一个,但是只放一个也必须用列表把它包围起来,否则呢也会出错啊。现在呢,由于我没有设置啊,读取了这些点击操作怎么 办?所以现在默认是点,这是关闭,点按钮也是关闭。好,现在我们啊又弹出来有,刚才可能我点击了两次导致的 啊,现在我给大家试验一下,如果你觉得这样写会不行的,这样写这样写会应该会出错误,就是每一行都必须这样做 啊,这样就会出错,如果大家看到这个界面 er 就是一个错误的意思,就是创建布局出错了,这时候呢,你点这个 close 啊,有时候呢点 close 也不行,有时候点了 close 也不行,这种界面你点这个 q, 这个红色的啊,就是杀死这个程序啊,他这个指一过来就是这个意思, 这是彻底关掉的。好了,这就是我们的该讲的这个界面,这个刚才出串,出串有时候会弹两次啊, 就是啊,我们今天重点讲的就是窗口的显示,要用一个窗口类,这个我下节再给大家讲讲啊,然后呢窗口要读取,想读取就是显示出来,然后呢要关闭窗口 啊,重点是布局,布局呢我们就写一个列表,列表中在千套列表,千套的列表呢,每一个千套的列表就是一行内容,这一行中呢可以放一个组件,也可以放多个组件。 好,这就是这节的内容,大家呢可以自己呢去写一个,自己啊,常 试一下,然后除了按钮也可以尝试其他的,比如说你可以尝试我这里面这些,其他的你不会使用。不要紧,大家先使用这几种去组合一下。 好,这就是今天的主要内容啊,我们下一节再详细的讲。这个读取了值之后啊,怎么去使用这些值啊?读取了这些用户的点击输入操作等等 啊,这就是今天内容啊,我的这个库呢啊,不需要安装原版啊,原版实际上呢它 那已经变成了一个收费的了啊。如果你想安装,请访问我的网站五二中文编程点 com。 好,今天的视频就到这,如果你喜欢我的视频,请别忘了点赞和关注,谢谢大家,我们下期再见。

好,接下来呢,我要给大家讲解的内容呢是关于分组查询啊,那么分组查询呢,对于初学者来讲,它可能是一个小难点,所以我们快速的去过一下。 首先第一个分组查询呢,可以理解为是把你的数据啊,给你分成 n 份,化整为零。比如说举个例子啊,咱们班是 ai 二三七,这是咱们整张大表, 但是在咱们这张表中,把大家啊,为了好管理,我们分成了几个组啊?是不是分成了十个组,对不对?所以大家还是坐在一起,还是再去上课,大家还是在一起的,所以说整张表数据还是放到一块,只是为了好管理,所以有了逻辑上的分组。 所以接下来我们来看一下,比如说我想统计每个类别商品的个数,那是不是就需要根据类别进行分组了?那就跟我想统计咱们班每个组有多少人是一样的,那这种我们要通过 group by 来做 好,那接下来呢,我们先看 group by, 分 两步来念一下这几个字叫先什么?先分组再聚合。讲完了,而且呢,聚合自断只能是分组,自断 只能是分组字段。好了,那接下来我们往下来看,先分组就是根据什么字段把它分到一起,然后接下来就可以进行聚合操作了啊,比如说大家看一下,这个我就不带划的了啊,来看一下这个图,这个图已经画的很细了,我们瞅一遍, 看一眼啊,问你个问题啊,在这里边分类有几呢?有一二三,是不是一共有三个分类啊?如果你写了这个代码,可如果败开了格瑞 id, 他 会做一件事,把你 id 分 类 id 唯一的这些商品全帮你放一起, 把你 id 为二的商品全给你放一起,把你 id 为三的商品全部放到一起。所以呢,他把你的数据从一份给你变成了几份?三份跟上来了吗?那分组以后,接下来来我问你个问题啊,这个自营 这俩字能不能代表我这一组?能代表吗?代表不了。为啥代表不了?因为我这还有什么非自营的? 那我再问你个问题,这个九九九能代表我这一组数据吗?能代表我吗?代表不了。那如果你不理解,我给你举个例子,这是咱们班所有数据,叫 ai 二三七,这是第一组啊,第一组的组长是谁呢啊?比如说第一组两个组长 好,那么啊,刘闯啊,还有水冷哥,那这个时候我说一下咱班第一组,那我能不能把它称之为叫闯王组啊?或者水冷组,我叫这个。那第一组的学生答应吗?答应, 哈哈哈。啊,拆台了是吧?把他直接豁出去,那这种情况下那肯定是不 ok 的 啊,为什么?因为那我们发现第一组除了除了刘闯啊,除了赵信,还有其他很多的人, 你的名字是不是代表不了组队其他所有的人啊?那你们有一个共同的名称,那就是什么?就是你的分了 id 就 叫第一组,所以说能代表你们组的只有谁呢?只有这个开国 id, 所以 接下来你不能用任何的一个内幕, price, score 等等等等出现在你的这里边儿, 大家仔细看看这个格式,大家仔细看看,看能不能看明白。我问你个问题啊,这个是 groupby, 是 不是咱根据谁分组? 你帮我看看在这个 slack 的 这,它只能出现什么?第一个念一下悄悄话说聚合。第二只能出现什么?分组说,我根据开的格 id 分 组,我把开的格 id 写这,这个没毛病吧?但是呢,你如果把这个 price 直接写这不好意思报错。 为啥呢?因为你没有根据 price 分 组,你的一个 price 代表了我们组内所有人。 所以记住一句话,根据谁分组就根据谁查询,且你看根据谁分组,根据谁查询且分组时段啊,那且分组查询只能出现分组时段及聚合函数。好了,那接下来这个图很关键,我先留到这,然后把它挪到这里,再接着往下走。 好,那接下来对于组内的数据,我就可以做啥事呢?我就可以做 count 了,比如 group by cat, group, id is self。 你 告诉我它会分成几个组? 如果我根据这两个进行分组,我会分成几个组啊?我会分成几个组?六个组。哪六个组呢?哎,分类为一的自营非自营。 分类为二的自营非自营。分类为三的自营非自营是不?六个组啊,所以不同的分组时段,咱们班也会分为不同的组。你看,哎,这上面就有开头格 id 一 自营,开头格 id 一 非自营。跟上来了吗?这有点像啥呢?我问你,咱班能分成几个组? 这个十组是怎么来的?是不是根据根据人数大体去划分的?咱班能不能分成两个组呢?可以吧,怎么分啊?左边右边是吧?啊,我想的是男女是吧?你想左边右边也可以啊,这是不是两个组啊?那咱班能不能分啊?几十个组呢?比如三十多个组,能分吗? 可以吧,怎么分?按照你的这个什么籍贯就是你的省啊,你的省来分,咱国内是不是有三十多个省吧?应该是。好,那比如说河南,河北,山东,山西等等等等,可以这样来分吗?好,那么下来,如果我想更多,我能不能按照你的市来划分呢? 也可以吧,那我能不能按照你的县区来划分呢?可以吧,那如果我想把咱们分成三个组,你能想办法怎么分吗? 我要把咱班人分成三个组,就想想你身上那些啊,一些别的,或者你身边的一些什么分成三个组啊,有人在那笑是吧?啊?男女萨瓦迪卡是吧? 啊,没有这个啊,咱班没有这种啊,你要国外讲的可能有,咱们班没有。有啊,所以呢,那说后来,那这种情况下,如果我要分三个组,你想想身边怎么样能分能分啊,三个组是可以的, 我能不能根据你的手机号的运营商来分组呢?不是,你用的是移动 还是联通还是电信?那老师都有啊,都有就参考。比如说啊,就是顺序是移动,联通,电信有移动,移动组没有,移动有联通,联通组没有。联通好用的是电信,那就是电信组, 这种情况可不可以画分呀?也是可以的啊,有人说老师我没有手机,你别逗我是吧?啊,开玩笑的对不对?所以说,那说不来,那你的不同的分组时段最终得到的分组是不是也是不一样的?我能不能根据身高分, 能不能根据体重分,那等等等等,这些是不是都可以啊?好,所以说那一定是先分组,再聚合,分组自断其实是很重要的,分完组以后,接下来就可以做聚合了,比如说 count id, 哎,这个组里边儿 count id 是 不是对它进行一个 计数的一个操作呀?两个两个,两个,两个两个,还有这个,哎,谁规定我非得刻的 id 啊?我能不能对这个 price 这个地方来个 sum, 来个 max, 来个 me, 这些是不是都可以啊?哎,我都能做到。所以呢,这个操作就是统计商品的数量,如果你要直接在这里边写的话,每个分类 你是不是得写 word 模板,然后根据它分组,然后再来统计啊?如果说每个分类的自营非自营,那是不是根据这两个字段分组是不就可以了 啊?那再往下边呢,就是后边这个代码就不再写了,注意啊,分组字段怎么怎么样,咋地咋地。来,接下来我们看着字段是分组字段,字段被聚合函数统计, 那接下来呢,就是我们去聊的这个操作啊,那么说不来,那你会发现整个这个代码会报错。为啥报错?因为我说了分组字段, 分组查询啊,这个查询字段只能出现第一分组字段,这哥们是分组字段吧,所以他在这没问题。 那再来第二个,这个是啥?句号函数吧,也没问题,因为咱刚才说了,你这只能出现分组词段和什么句号函数,那 excel 啥都不是,所以在这他会干嘛? 报错啊?会报错,但其实不是啊,实际开发还有种极特殊的这个方式,极特殊的回头那三十四个题中有那个方式极特殊的回头那三十四个题中有那个案例。我讲到了啊,那就是啥呢?如果你的这一列听好,如果你的这一列 和我的这一列是一一对有关系啊,是唯一的一一对有关系。那即使你这个四段没有出现在分组四段中, 你也是可以在这里边写的,就是查询也是可以写的,但这是特殊情况,等咱做题我再给你讲。现在先不讲,现在你就记这个分组查询,他的查询列只能出现第一 分组词段,第二局部函数,算上来了吗?除了这俩谁都不行。来,往下了,往下了,接下来就是分组这块了,我们快速的来写 啊。首先这个地方呢,我们把它落地啊,落地,这还挺重要的。那老师重要为什么放到最后讲?因为刚好讲完了。中午你是不是可以花时间把这个稍微去再看看,对吧?好, ctrl c 直接来了啊,来了, 那么这是我们的阿里五,阿里五呢,叫分组查询啊,叫分组查询杠星,我们先来一个格式, 格式是这样的,首先 select 里边先写个星啊, from from 谁呢?这是咱的数据表明 正常是不是这样写的?那后边儿你可以写啥呢?你可以写 where, where 是 组前筛选,就是分组前对数据做筛选。接下来就是 group by, group by 后边儿可以写什么分组列啊?分组的列 好,那么列一列二点来点,可以写多个。再来就是 having, having 叫什么组后筛选。 所以呢,你猜将来有个面试题问你的,就是 vr 和 happy 的 什么区别是什么?这个稍后再聊。那接下来把这块给大家讲透啊。 第一个是查看,叫查看表数据,大家会发现你的数据是一个 select 星号 from 群呢? products。 咱所有的数据是不是已经要全过来了?那接下来我要开始来分组了,来,各位仔细看啊,千万别跑神儿,这个如果一跑神儿就完犊子了。 好,来,我把这个数据给你截下来,截下来以后大家往下走,在这个位置听。好,我现在做一件事,上边的这个细节呢,我先写下第一句话,细节叫根据谁 分组就根据谁,干嘛呀?查询即分组查询,分组查询的查询列啊,只能出现分组字段 和句号函数,其他啥都不行啊,其他啥都不行。这是第一种情况,根据谁分组就根据谁查询。第二个细节,组前筛选 用维尔,组后筛选用哈密。啥叫组前?啥叫组后?这个一会再说。来,接下来开始做题,我给你提需求,需求是统计 每个类别的商品数量。哎,你把这个学完就有点接近零三十四个题那个效果了。听清,统计每个类别的商品数量,举个例子, c 零零幺,这个类别有几个商品啊? 有三个 c 零零二,一个,两个三个呦。哎,还有一个 c 零零二有几个呢?有四个。 这不就跟咱们班我让你统计咱们班每个组有多少人,是不是一样的呀?啊?一样的需求,那其实说白了它就是根据谁分组啊?根据 color id 分 组,然后 count。 干嘛?计数 即可啊,计数啊,计数即可。来吧,那首先 control d。 是 不是应该把当三 d 拉过来啊?我一般写我都是先写哪呢?我不写查询,我先写分, 你告诉我分怎么分?直接在这写不就行了吗?说拜拜,谁开头格 id。 好 了,我写完了,这叫根据开头格 id 分 组。 这个能不能听懂?那接下来问题就到前边了,前边是我们说了根据谁分组就根据谁查这个心儿,这个位置可不能瞎写了,你要是在这里边,你给我来个什么 price? 完犊子了。 为啥完了呢?我问你个问题啊,请问你有在这里边根据 plus 做分组吗?没有,你有把 plus 放到聚 聚合函数中吗?也没有,因为我们说了分组查询的查询列只能出现分组字段和聚合函数啊,那聚合一下呗。有人说老师 com 的 技术,我问一件事啊,我写个 com 的 pid, 这是不是在这里边统计数量的?你看,我问你,我不写狗不可败。听清,我不写狗不可败,我就写前面那一堆,你告诉我我执行结果是啥? 这不刚算过吗?统计表中所有是不是一共十三条?那如果我现在要不输不败了,这啥意思?这就是把你的数据是不是从一个大整体给你分成了三个组,是不是统计每个组的数量啊?那我们这,哎,你看,闹换到哪一组, 闹发到哪一组,闹自己单独一组,所以接下来当你统计完毕以后,你就变成了来这个结果叫三四二二一。 先说我有没有按照 c 零零幺这个分类 id, c 零零二, c 零零三四五到分成了几个组?分没分,分了,分了。但是我问你一件事,来告诉我这个二 哪个类别?看不出来哪个类别,你为啥不知道呀?没,没,我也不知道,因为 no 在 这里边有二 啊,两次, no 出现两次, c 零零三是不是也出现两次啊?所以你会发现一件事,这就是根据谁分组,哎,你就来,比如说去这里边找一个能代表我这一组的,就跟第一组, 你说肇庆组,你说刘闯组,然后你说什么什么组?张三组,李四组都不对,因为他代不了所代表不了所有人, 所以应该是把你组内大家都一样的数据。是不是把这个词段拉过来啊?那你根据开的格 id 分, 就根据开的格 id 查。我讲完了,这就是刚才我说的叫根据谁分组就根据谁 查询,你根据谁分,那默认就是在前面把它扔这儿,后边再扔个聚合分组就讲完了。 看上来了,不来了可别跑神啊,这个很重要的, ctrl 回车问,你,这个数据来了吧,但是这个值看着是不是很难受啊?所以后边我会写个 s 叫 total, 哎。 total? 什么 total? ct 就是 走数量嘛,走数哎,走你,你看哦,一分类仨 r 分 类四个,空分类两个。而这个格式呢,咱一般会把它变成什么呢?比如说 把它选中 alt 加 l, 它会变成这种形式。 select, 这个是谁来听好了,这个叫分组,这个叫分组子段。 那上面这个东西告诉我它也叫什么?它也叫分组词段,那也告诉我这个东西它叫什么?聚合函数,所以根据谁分组就根据谁查询,而分组查询的查询列只能出现分组词段和句号函数。 哎,能不能听懂?好,但是没完,我接下来我接着,我还给你写最后一个啊,把还没写完再结束啊。那么还没来我再给你提个需求,这个需求是三需求,统计每个类别的商品数量。这个是不是跟上面一样的,只要 只要商品总数,商品总数数量在二以上的分类好,或者说只显示吧?只显示, 只显示啊,商品数量在二以上的这个分类。那你告诉我换一只,这后边这几个我是不是都不要了?嗯,那怎么办, 我就直接复制了啊,我是不是应该把刚才的代码复制下来啊?我就猜你们肯定会说,老师,哎,写个 vr 就 行了。 对,在这写个 vr。 那 你这写 vr 不 行,那 vr 谁?你现在是不是已经分组自断起别名了?你把这个别名拉过来就行。拉过来,先说逻辑,应该是这哥们大于二, 然后逻辑是不是应该这样写啊?啊?逻辑没问题的,逻辑就应该是这样写的。逻辑没问题不就加一个 vr 就 行了吗?这个叫那祖后筛选。 那为啥?是不是先分组,分完组了我结果什么都出来了,我要再做筛选。那这种呢?叫祖后筛选。祖后筛不能写谁呢?你得写韩伟老师,为啥俩字规定 ctrl 加回车?有没有发现是不是只有一个数据了?那 where 干的是啥?这里面有个面试题,写完咋办啊?我给你落一下地啊。有人会问我 where 和它的区别是啥?所以第三个面试题, where 和 having, hvac 按及 having 的 区别是什么?好,第一个作用不同, where 用于啊组前筛选,就是在你 group by 还没有分组呢,先做一个筛选,然后呢? having 用于用于什么?左后筛选,这是第一个区别。 第二个区别听好了,后边是否可以跟跟什么聚合函数叫聚合函数?我问你个问题啊,来往下看,刚才我们写的这个 happy 啊, happy 的 后边你是不是写个 total ct 啊?你要不想写,你把 control p a d 就 这都可以。 这是一个聚合函数啊,你猜这个答案能不能执行啊?能,那你看这个结果是不是出来了。所以说 having 的 后边是可以跟聚合的,但是 vr 的 后边不行。 好,那么那 happy 后边 where 不 可以?后边不可以啊, happy 后边干嘛可以?我讲完了啊,这是他们的区别。那么最后一句话结束有人说老师主前筛,主后筛有什么区别呢? 好,那我给你讲讲啥叫主前筛?啥叫主后筛?这个例子我每个班都会讲啊,那么比如说,呃,大家有没有经历过招飞? 就是你上初中或者高中的时候有没有部队去你们学校招飞行员?有有有这个事吗?河南好像挺多的啊,反正我们学校当时有啊,我们 初中的时候是我们当时这个县的重点,就是把那个我们县所有学校的尖子生大概是一百二十个人啊,然后拉过去分成两班,然后就是重点教学怎么怎么样,然后很荣幸我也是其中一例哈。然后呢,就是当时去我们那招招生就是招飞, 招飞是要看你的那个中考成绩,不是看高考成绩,是中考,我们是初中去的初三,然后当时去的时候是就是看组前筛,我就模拟一下我是教官, 然后当时去的时候把我们所有的男生因为当时就招南飞行员就把我们所有男生叫到一个教室。那你告诉我这个叫组前筛还是叫组后筛? 就是在所有的两个班里边所有的学生中,只要男生这个叫组前筛还是叫组后筛?组前这个叫组前,但是我不按那个,按那个,我讲不明白的时候。然后呢我们现在就把所有的学生全放到一个教室,男生女生都有啊,男生女生都有,来听着,所以我先讲第一个 啊,男生女生现在全都在教室里边。 ok, 我 开始筛了啊,第一个,视力不达标的,拜拜。 啊。视力不达标的,拜拜。好的,这个叫左前筛,叫左后筛,这个叫左前筛,左后筛, 这个叫左前。我是不是还没有根据男女生分组呢?这个叫左前。那视力不达标的同学是不是已经错了?留下的是不是都是视力达标的?好,那男生跟女生的身体素质一样吗? 不一样。那怎么办? ok, 男生女生分组就是留下来的视力达标的学生,男生女生按照性别进行分组,是不是做到教室的两边?哎,这个 group by 是 不是分完组了?分完组了人还多怎么办?接着筛,筛什么? happy? happy, 再接着筛,筛什么?筛你的身高体重,然后你的力量和你的体能这一块能不能达标?这是分完组再做筛选啊,这个时候用的是谁 happy 啊?老师做完了吗?还没有做完。嗨名后边还有。还有啥呢?你看我能不能接着说。比如说招飞,男飞行员我要俩,女飞行员我要俩,但是现在满足条件的男生和女生还有很多, 有没有可能出现这种情况呀?当然有了。那怎么办?好,接下来根据你的中考成绩,中考成绩进行一个排名,这个时候是不是嗨名后边就要跟哪个单词了? order 来,这个 order by 这个单词不就来了吗?好, order by 排完以后,但是我不会要那么多人,我最多是不是只要俩人啊?那我怎么样排序后只要前两个呢?最后一个语句就完了。最后一句叫什么 li meet 啊?所以你会发现整个代表查询其实就是一个招聘的故事,到下午的时候我会把这个事再给你讲一遍时间关系,我讲的很粗糙,到下午的时候我还会再给你细讲一遍,把这个再说一遍这个事情。好吧,来,我保存一下这个知识点啊。

q m t 安装好之后,提示 python 库缺失或者找不到 python 文件,你有没有遇到这种情况呢?昨天就有两个朋友遇到了相同的问题来问我,我是没想到一个 q m t 的 安装还能出现这么多叉子,今天就给大家讲一下安装配置的要点, 如果还没有安装包的朋友,可以点这里领取哦。拿到安装包之后,我们打开它解压装在 q m t 的 盘里面,然后在文件里找到安装向导,一直点击下一步。 重点来了,安装路径,千万不要选 c 盘,你装在 d 盘, e 盘都可以。然后文件夹的名字千万不要有中文和特殊符号,避免闪退和报错。第一次打开 q m t, 建议右键以管理员身份运行,然后登录你的券商账号密码。 登录之后呢,不要着急编写策略交易,有的朋友一拿到 q m t 就 立马开始交易,其实反而发现策略运行不了,根本原因就在于 q m t 是 本地客户端,策略在本地运行,这就需要用到 q m t。 的 内置拍摄。所以说咱们第一次拿到 q m t 要做的是下载拍赠库,把它装好之后,策略就能正常跑了。 q m t 安装和拍赠库配置就这么简单,大家按照我这个方法来,可以零出错,一步到位,大家学会了吗?下一期教你们如何在 q m t 上进行回测,点赞点关注,下期不迷路哦!

这期视频来介绍一下列表的大小,可以通过魔术方法 size o 来获取一个变量占用内存的大小,它返回的是变量占用的字节,一个空列表占用的内存是四十个字节。至于空列表为什么是四十个字节, 需要在后期讲解 cps 解释器中列表的具体结构的时候才能解释清楚。再看下面这两个例子,这两个列表都是包含三个元素, 但是不管这三个元素是什么数据类型,不管他们有多大多小,这两个列表占用的内存空间都是六十四个字节。原因就是列表中实际存储的是每个元素的内存地址,也就是 c 语言中的指针, 每一个内存地址占用八个字节。这也是为什么列表可以存储任意其他的数据类型。我们知道列表是一个动态的数据类型,下面来看一下列表是如何扩展它的内存空间的。首先定义一个空列表,此 时占用的空间是四十个字节,然后往里面追加了一个元素,这个时候他扩展了三十二个字节,也就是四个元素的空间。 继续追加到第五个元素的时候,他又扩展了三十二个字节。由此我们可以得出结论,每次超出容量时,他会自动扩展四个元素的空间。