pandas 如何删掉第一行_第16篇:Pandas快速爬取网站上的表格数据

news/2024/5/10 20:36:17/文章来源:https://blog.csdn.net/weixin_31092081/article/details/112194286

pandas的read_html()函数是将HTML表转换为pandas内部的DataFrame类型的快速便捷的方法。更直白地说,对于专门写爬取表格的Python从业者来说, 此函数简直就是懒人一大利器,你无需重做轮子如何使用Cython去写一个table表格的解释器。因为Pandas底层基于lxml+numpy+openpyxl这些底层库做了高度的Cython优化。在本文中,笔者粗略地讲解pandas.read_html()读取网上的表格和基本的数据格式化操作。

read_html()大法,好~!

直奔主题吧,当然你要给一个包含表格的网站url传递给read_html函数

8355a5e3c5a8b233a7b814e37585def8.png

read_html会返回这些表的DataFrame列表,即便整个网站有一个表也会包含在list中。因此需要访问具体的DataFrame,必须添加下标访问符,例如

df[0]

如果需要查看当前网站有多少张表,使用Python默认的len函数查看就OK了。

ce2c0fe90a21f7ae2ce6e5451f122294.png

dropna()大法,好~

上面的有一些NaN的无效数据,我们需要清理,怎么做呢?如果用惯panda做数据采集的话,那么应该知道dropna大法好~

4ec488cf81a1ebafb95f9a80aa7080c2.png

drop大法~好!

对于一些行或列的单元格有不连续多个的表格,我们要去除NaN这里需要细说一下dropna的几种情况,例如我们要删除整列都是NaN的列

489d11bfef08da67a8c05b0987af95d7.png

就需要用到drop方法,例如如下,第一个参数是列名,第二个参数是axis=1表示删除的列,若axis=0删除的行,inpace=True表示在当前dataFrame所在堆内存区域执行删除,而不额外产生新的dataFrame内存副本。

df[0].drop('網頁',axis=1,inplace=True)
df[0].drop('備注',axis=1,inplace=True)

d564d3cfc0fab78f4002e9ca626f9c32.png

但上面的表格,笔者仍然不满意,认为主演一列有NaN的行都是无意义的数据,需要将[主演]的所在列,若为NaN的单元格的相关行都删掉,要怎么处理呢?

我们介绍的是pandas的isnull函数,我们将“主演”的那一列传递给isnull函数,如下所示

pd.isnull(df[0]['主演'])

或结合dataframe的iloc下标操作符筛选出“主演”列(索引列为3),并调用isnull()方法

df[0].iloc[:,3].isnull()

如下所示,若当前所在列的单元格包含NaN,那么就返回True,反之返回False

960205ab97252e348001fccbd3eb3940.png

但这样还不够的,我们需要将isnull返回所在列的单元格包含NaN的情况,包装为一个Index对象。

cellIsNaN=df[0].index[df[0].iloc[:,3].isnull()]

cellIsNaN=df[0].index[pd.isnull(df[0]['主演'])]

此时,我们可以将cellIsNaN该缓存的Index对象,传递给datafram实例的drop方法

df[0].drop(cellIsNaN,axis=0,inplace=True)

那么最终在“主演”所在列包含NaN的行都会被删除

39be7b2f2f0e995e3125342772e9b873.png

如果你只想保留前5列的所有数据,可以使用iloc索引操作符

df[0].iloc[:,[0,1,2,3,4]]

6e9d8729a57bcebe5ac3a6f0c58be121.png

如果基于列的索引值,删除某一列的数据,例如第6列的索引是5,可以这样操作

df.drop(df.columns[5],axis=1,inplace=True)

最后,将上表的数据,另存为csv文本,使用to_csv()方法

f32fffaa63160e382702856c1b39b1ed.png

输出如下图

190e6ba644578c2e85f5404a8f0c93f2.png

小结

写本文的目地是其实是一篇预热文章,为后面写有关Python中型爬虫项目做铺垫的。我的那个Python爬虫用到了Pandas库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_833180.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机端网站服务器软件,手机端远程连接服务器的软件

手机端远程连接服务器的软件 内容精选换一换由于在安全软件中设置了安全登录限制,导致远程桌面连接Windows云服务器报错:无法验证此远程计算机的身份。需要再次登录输入密码。云服务器安装了安全软件,防止有未知IP登录云服务器。卸载安全软件…

实验五MySQL存储过程_「mysql 存储过程」MySQL | 存储过程 - seo实验室

mysql 存储过程一、概念存储过程简称过程,procedure,是一种用来处理数据(增删改)的方式。简单点,我们也可以将其理解为没有返回值的函数。一般存储过程并不显示结果,而是把结果返回给你指定的变量二、创建过程基本语法create proc…

服务器怎么不用绑定域名搭建网站,一个空间放两个网站,且不用子目录绑定域名的方法...

一个空间绑定两个域名的办法操作很多空间支持多域名绑定,但是不支持子目录绑定,这时我们就可以考虑如下几种方法来实现一个空间放多个域名站点的方法,只是其他站点都需要在一个目录下大开,但这毫不影响搜索引擎的收录。方法一&…

宝藏网站IPOL:Image Processing On Line 经典图像处理论文+源码+在线仿真

读研已有大半年的时间,在这段时间里,我一直进行图像处理相关内容的学习,平时除了完成作业、准备项目之外,我的日常工作就是找经典论文、翻译、阅读、分析源代码、尝试自己写代码、与其它经典算法进行比较、尝试提出自己idea&#…

网站开发之数据表开发库——Datatables

我们在做网站开发时,很常见的一个需求是做数据展示表,并且可能需要数据表能够实现一些数据筛选、排序等能够定制展现方式功能,也包括对表的样式美观会有一些需求。而这些全部都已经由Javascript的一个库——Datatables做到了,我们…

vs2013开发64位网站和项目设置

最近用mvc写网站玩,需要连接oracle数据库,我电脑是64位系统,就安装了64位的oracle客户端,然而在连接数据库时总报错,折腾了半天, 按照网上的说法,修改这里,根本不起作用&#xff0c…

基于bootstrap(H+)的MVC网站开发之一登录页面

1、bootstrap form 表单自带前端验证功能。不是特殊无需自写前端验证js。 2、表单提交有两种方式,一是form表单中submit提交。二是ajax异步提交。 3、form表单action属性 action 属性规定当提交表单时,向何处发送表单数据。 默认:为当前地…

FTP发布VS2015网站项目

1、前提条件 已经部署了FTP服务。在windows下通过iis创建Ftp服务方法可参考:Windows通过 iis创建FTP服务VS2015 asp.net 项目 2、操作步骤 1、vs菜单中 生成——发布 2、 配置发布文件及发布 创建配置文件 后面的用默认配置即可,点击发布 3、查看…

Spring学习笔记(二十三)——实现网站微信扫码登录获取微信用户信息Demo

目录微信扫码登录介绍开发步骤微信扫码登录示例微信开放文档遇到的问题使用第三方工具实现网站微信扫码登录开发前介绍开发步骤微信扫码登录获取微信用户信息Demo实现流程实现效果实现过程实现源码源码下载微信扫码登录介绍 微信扫码登录是指微信OAuth2.0授权登录让微信用户使…

ffmpeg+nginx+rtmp+web实现视频直播网站

项目简介:视频直播网站由三个部分构成:1.推流端 2.服务器 3.拉流端。在该项目中,推流端用ffmpeg完成,服务器由NGINXRTMP模块完成,拉流端使用VLC完成。 一、开发环境简介: 推流端:系统&#xff1…

网站安装打包 修改app.config[六]

在winform的安装工具中,少不免有一些配置文件要放到app.config去,于是修改也是成了一种需求! 无论是修改web.config还是app.config,普遍方式都有两种,用net自带封装的类,或是自定义xml操作。 可参考之前的一…

如何在IIS里对网站限速

不管是ISP或是程序开发者,都可能需要在特定情况下,对使用IIS搭建的Web站点进行限速。 本文就简单说说在IIS中如何限速,因为之前不久,我也象大多数开发者一样,由于程序测试的需要,寻求IIS限速的方法&#xf…

换了无线路由网站打不开的解决方法

一日领导家安装adsl宽带了想用无线上网就购了个dlink双线的无线路由,设置好参数后开始拔号等了很久都没有反应,死活拔不上去。最后没有办法只好另想他法,回到单位一想单位有一个tplink三线无线路由两个换换不就行了。想到这第二天马上拿到领导…

javaweb 网站邮件发送 javaMail

我们这里是使用qq邮箱来演示邮件的发送,需要先对qq邮箱先进行一些设置。在设置-账户我需要开启这个pop3协议,他会生成一个授权码。 常用的邮件传输协议有2种:POP3/SMTP、IMAP/SMTP。 POP和IMAP的区别:在邮箱客户端的操作&#xf…

网站图片延时加载

为什么80%的码农都做不了架构师?>>> 当你看到网页上有很多图片,会不会感觉加载速度超慢,甚至有砸电脑的冲动?其实,我们可以优先加载肉眼能够看到的图片,当用户拖动滚动条时,再加载其…

在线绘图网站

https://www.freedgo.com/

【百度地图API】——国内首款团购网站的地图插件

原文:【百度地图API】——国内首款团购网站的地图插件摘要: 本文介绍了一款应用在团购网站上的地图插件,适用于目前非常流行的团购网站。使用这款地图插件,无需任何编程技术,你就把商家的位置轻松地标注在地图上。 前台地址 http:…

电商网站接入快递查询

网页跳转格式 适用场景:在管理后台中,订单列表点击显示快递详情 和 订单详情页显示快递详情,使用 iframe 嵌入该URL http://www.kuaidi100.com/chaxun?com快递名称(可以中文英文)&nu快递单号 快递名称&#xff1a…

Python识别网站验证码

http://drops.wooyun.org/tips/6313 Python识别网站验证码 Manning 2015/05/28 10:570x00 识别涉及技术 验证码识别涉及很多方面的内容。入手难度大,但是入手后,可拓展性又非常广泛,可玩性极强,成就感也很足。 验证码图像处理 验证码图像识别技术主要是操作图片内的像素点,通过…

ASP.NET MVC 网站开发总结(五)——Ajax异步提交表单之检查验证码

首先提出一个问题:在做网站开发的时候,用到了验证码来防止恶意提交表单,那么要如何实现当验证码错误时,只是刷新一下验证码,而其它填写的信息不改变? 先说一下为什么有这个需求:以提交注册信息页…