数据分析与可视化(python大作业)

目录

涉及知识

自动打开想要获取到数据的页面

绘制统计图

初步设计过程

自动化测试

所需数据包

初步过程分析

爬取数据

所需数据包

初步过程分析

数据分析与可视化(绘图)

所需数据包

各类统计图简介:

详细设计过程

导入所有数据包与数据集

数据分析

数据情况预览

数据获取与分析 

存储

涉及知识

按照实验完成顺序:

·自动化测试:selenium

·爬虫:requests

·数据解析:json

·数据清洗

·数据分析:numpy,matpltlib,pandas

自动打开想要获取到数据的页面

1)注意伪装好,绕过浏览器识别;

(2反反爬。

绘制统计图

(1)注意即将绘制的图是否有缺失值等;

(2)注意查看数据问题。

初步设计过程

自动化测试

所需数据包

from selenium import webdriver

from time import sleep

from selenium.webdriver import ActionChains

from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys

初步过程分析

(1)确定浏览器版本,下载相应驱动。

(2)防止浏览器自动关闭

option = webdriver.EdgeOptions()

option.add_experimental_option('excludeSwitches', ['enable-automation'])

option.add_experimental_option("detach", True)

driver = webdriver.Edge(executable_path='./edge driver', options=option)

(3)进入12306官网,寻找相应标签,定位元素位置(id, name, class, tag, xpath, css, link等)。

(4)一些网站具有反爬机制,反爬方式多种多样,12306中为验证码滑块,主要用到行为链,让浏览器识别不到爬虫。

具体操作:找到滑块id('nc_1_n1z'),创建对象,判断,执行。

(5) 成功登录后,有目的性地寻找所需标签,模仿鼠标与键盘响应方式。常见的一些方法如下:click(),clear(),send_keys(),perform()等。如下所示:

(6)此次实验,我没有完成最后一步,因为12306每天只有三次取消订单机会,而且我最近测试次数比较多,害怕被拉入黑名单。

(7)完成这些之后,开始爬取当前页面我们想要的数据。

爬取数据

所需数据包

import requests

import pandas as pd

import json

from tqdm import tqdm

初步过程分析

(1)确定目标网址:

如我要获取12306中从太原南到侯马西,往返,2022-11-19日的所有车票信息,网址如下图所示,除此之外,仍然要做好伪装,如下图 3.11所示,其中User-Agent用户代理,浏览器基本身份标识),Cookie(用户信息,常用于检测是否登陆账号)都是用来伪装的。

(2)获取网页数据:

获取网页数据,也就是通过网址( URL:Uniform Resource Locator,统一资源 定位符),获得网络的数据,充当搜索引擎。当输入网址,我们就相当于对网址服务器发送了一个请求,网站服务器收到以后,进行处理和解析,进而给我们一个相应的相应。如果网络正确并且网址不错,一般都可以得到网页信息,否则告诉我们一个错误代码,比如404. 整个过程可以称为请求和响应。

常见的请求方法有两种,GET和 POST。GET请求是把参数包含在了url里面,而post请求大多是在表单里面进行,也就是让你输入用户名和秘密,在url里面没有体现出来,这样更加安全。POST请求的大小没有限制,而get请求有限制,最多1024个字节。

通过requests数据请求模块里的get请求方法,对于url地址发送请求,携带上headers请求头伪装,最后用response变量接收返回数据

3)解析网页数据:

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。在Python中的json应用就是实现一些数据结构(列表、元组、字典)到字符串之间的转换,当数据结构变为字符串之后就很容易在程序之间传递。Python中序列化指的是将Python中的数据结构(列表、元组、字典)编码转换为JSON格式的字符串;而反序列化指的是将JSON格式的字符串编码转换为Python中的数据结构(列表、元组、字典);元组经过序列化处理后,再通过反序列化处理后,数据类型不再是元组(而是列表);但列表、字典经过序列化处理后,再通过反序列化处理后,数据类型不变。

JSON在python中分别由list和dict组成。

BeautifulSoup是用来从HTML或XML中提取数据的Python库。

(4)存储数据并分析:

解析完成后,由于数据不是很多,用不到数据库,我选择了保存在csv文本,如下:content.to_csv('data.csv',encoding='gbk'),这样会生成data.csv,可以直接文件中查询。

爬虫的目的是分析网页数据,进的得到我们想要的结论。在 python数据分析中,我们可以使用使用第三步保存的数据直接分析,主要使用的库如下:NumPy、Pandas、 Matplotlib 三个库。

NumPy :它是高性能科学计算和数据分析的基础包。

Pandas : 基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。它可以算得上作弊工具。

Matplotlib:Python中最著名的绘图系统Python中最著名的绘图系统。它可以制作出散点图,折线图,条形图,直方图,饼状图,箱形图散点图,折线图,条形图,直方图,饼状图,箱形图等。

  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值