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


相关文章
|
17天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
15天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
28天前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
45 3
|
2月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
1月前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
28 1
|
2月前
|
网络协议 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访问网络视频流的技巧。
412 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
1月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
1月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
2月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
74 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
28天前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
73 0