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


相关文章
|
22天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
7天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
16 1
|
8天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
8天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
1月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
162 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
1月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
45 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
1月前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
41 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
|
1月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
122 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1月前
|
数据可视化 算法 Python
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
本文介绍了如何利用Python脚本结合动态模态分解(DMD)技术,分析从OpenFOAM模拟中提取的二维切片数据,以深入理解流体动力学现象。通过PyVista库处理VTK格式的模拟数据,进行POD和DMD分析,揭示流场中的主要能量结构及动态特征。此方法为研究复杂流动系统提供了有力工具。
63 2
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
|
1月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
128 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输