python数据整理+突发断网解决方法(学习笔记)

简介: 这篇博客本来是接第一篇的(关于如何抓取数据下来),但由于CSDN现在不能发布关于爬虫的博客,所以我来写写抓取的数据如何整理吧。

这篇博客本来是接第一篇的(关于如何抓取数据下来),但由于CSDN现在不能发布关于爬虫的博客,所以我来写写抓取的数据如何整理吧。

04680f8e5973449e841910a30ebf91b6.png

当我们抓取文件的时候,如果网络突然断开,这样不仅会中断抓取,而且还会让我们的数据全部丢失,那么此时我们就可以使用一种方法:即每隔20条数据自动创建一个Excel文件,就能减小风险。

import pandas as pd
import urllib
import requests
from lxml import etree
import urllib.request as req
import re
import requests
from lxml import etree
from bs4 import BeautifulSoup
import urllib.request as req
import requests
import time
import numpy as np
import urllib
# import urllib2
import os
headers={'User-Agent':'.........'}
skdfs=pd.DataFrame()
for ski in range(0,30):
    skdf=pd.DataFrame()
    url='http://........com.cn/skygb/sk/index.php/index/seach/'+str(ski)
    reuqest=urllib.request.Request(url,headers=headers) 
    content=urllib.request.urlopen(reuqest).read()
    soup=BeautifulSoup(content,'lxml')
    tables=soup.findAll('table')
    tab=tables[2] # 查找发现tables[2]是我们要的数据
    skdata=pd.read_html(tab.prettify())
    skdf=pd.DataFrame(skdata[0])
    skdfs=skdfs.append(skdf)
    print('已经完成第'+str(ski)+'页')
    skdf.to_excel("skfiles/"+str(ski)+".xlsx",encoding='utf-8-sig')  # 在skfiles文件夹下面
    time.sleep(np.random.randint(5))
# skdfs.to_excel("skfiles.xlsx",encoding='utf-8-sig')

如图即为爬取的数据,会放到skfiles文件夹下的Excel当中:

e1372c0775e748cbaa7bb74d1189baa1.png

b02b358449e44aae9eaf15261989dacd.png

ba6aa30b42b446eaa95e3c5010c3d681.png

一个Excel当中有20条记录,那么如果是要让100条记录在一个Excel当中呢?

for ski in range(0,30):  # 0-30页,我要每5页创建一个Excel文件
    skdf=pd.DataFrame()
    url='http://fz.people.com.cn/skygb/sk/index.php/index/seach/'+str(ski)
    reuqest=urllib.request.Request(url,headers=headers) 
    content=urllib.request.urlopen(reuqest).read()
    soup=BeautifulSoup(content,'lxml')
    tables=soup.findAll('table')
    tab=tables[2] # 查找发现tables[2]是我们要的数据
    skdata=pd.read_html(tab.prettify())
    skdf=pd.DataFrame(skdata[0])
    skdfs=skdfs.append(skdf)
    print('已经完成第'+str(ski)+'页')
    if((ski%10)==0):
        skdf.to_excel("skfiles/"+str(ski)+".xlsx",encoding='utf-8-sig') # 在skfiles文件夹下面
    time.sleep(np.random.randint(5))
# skdfs.to_excel("skfiles.xlsx",encoding='utf-8-sig')

6d4c1242ed174916afb38eefbf20eb27.png

每隔5页创建一个Excel文件:

e4b4db286cfa4cb98877b51f123cd8f1.png


数据合并(追加)



比如我们要把上面的5.xlsx到25.xlsx合并起来,应该如果做呢


方法一:Excel


bc3087ed5fd648688b0353cd6dee48e7.png

调用查询编辑器power quer:

dc5d3eaa09194af48d6ae191f90a50fa.png

74bdc65578664e10a2ce782a5fea4761.png

54df2e70c9a34145abb3e5de386a1ddb.png

导入数据源:将10.xlsx与25.xlsx进行连接:

c558ddc3db4d468585062e38f3824e4f.pnge9d17a6e55f24a2c9accfa5446fa12a3.png

17643e13e24e4c1c9851869b51b51e4e.png

165cce05d8884ab0adba35148f7a069e.png

1c0433e28069419f9198996d5be65a59.png

此时即追加成功


方法二:Python


我要将下图的两个Excel文件通过Python进行合并

bd97928fad784ec5970adfb5d8ebcebf.png

注:不能直接写("skdf2810.xlsx",usecols=np.arange(1,21)) ,要确保Python与Excel的文件路径一致。

import numpy as np
import pandas as pd 
skdf1=pd.read_excel("skfiles/skdf2810.xlsx",usecols=np.arange(1,21)) 
skdf2=pd.read_excel("skfiles/skdf5020.xlsx",usecols=np.arange(1,21))

其中这句话的含义是:usecols=np.arange(1,21)当读取表格的时候只从第一列开始读,第0列不用读,因为0列没有多大意义。

d348e0fcc4da424888c9264ee98304aa.png

合并:

skdf=skdf1.append(skdf2)
skdf.info

c1b8a1432e694a7c8d2c6e51a66ad262.png

关于Python的merge:

如果我把数据分成两半,sheet1是原始数据,sheet2是sheet1的前3行,sheet3是sheet1的后三行,则是否可以使用merge将后两张表进行合并呢?

29cb66fec8c542dba00c51eec2ab4c5d.png

# 以stus为例
studf1=pd.read_excel("stus.xlsx","Sheet2")
studf2=pd.read_excel("stus.xlsx","Sheet3") # df1与df2没有共同语言
stusdf=pd.read_excel("stus.xlsx")
63cdb8702b1444a994eb80cce3c53d8b.png b7142332fc4b4b7582da2eb41908ad10.png

但是仔细想想,studf1和studf2分别都和studf有共同语言啊!

stusdfm=pd.merge(studf1,stusdf,how="left")
 #merge是考虑关系型数据,两者此时有共同语言

此时在sheet2最下面加一行数据:

7762848f6fb24df7bd00179c20881fd8.png

此时就添加了:

14339e57416642898e10af38616d7b55.png

# stusdfapp=studf1.append(studf2)
stusdfm=pd.merge(studf1,stusdf,how="left") #merge是考虑关系型数据

其中的how="left"是merge当中的一个参数,表示按照左边为索引进行合并,只有左边有该数据,则才会和右边的一起合并。而省略该参数则默认how=inner。

当我们把学号列添加到是studf2的时候,此时两者有了联系:

9ecac91d6983407aafe651e688adc59c.png

那么如果把学号改成stuid是否还能成功呢:

此时则涉及到merge的另外两个参数left_onright_on

left_on='学号',right_on='stuid'表示左边要合并的表的共同列为学号列,右边的为stuid列

stusdfm2=pd.merge(studf1,studf2,how="outer",left_on='学号',right_on='stuid') 
#可以对应,名称不重要,数据要相同

8792d80379ef44a7989fb2cfdc80fae5.png

stusdfm3=pd.merge(studf1,studf2,on=suffixes=['_l','_r']) # 当两张表都有相同的学号数据
stusdfm3


相关文章
|
2月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
305 10
|
6天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
1天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
22 12
|
1月前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
2月前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
2月前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
2月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
3月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
92 3
|
4月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
3月前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
52 1

热门文章

最新文章

推荐镜像

更多