La lista que recibí hace tiempo, compártela
Directorio de artículos
requisitos de trabajo
Requisitos finales de la tarea "Python y análisis de datos" (año académico 2020-2021, segundo semestre)
1. Requisitos finales de la tarea:
1. Sobre la base de los datos rastreados en la tarea anterior, escriba código en Python para realizar un análisis completo de los datos rastreados. Datos y visualización, fomentar el establecimiento de un modelo de medición para el análisis,
2. Escribir el documento de trabajo final: la idea general, el análisis del sitio web de rastreo, qué aspectos del análisis de datos y visualización de datos y conclusiones.
3. Debe escribir su propio programa de rastreo. No está permitido usar marcos de rastreo (como scrapy) para rastrear datos, y el plagio está estrictamente prohibido.
2. Presentar:
1. El archivo de código del programa del rastreador (trabajo preliminar)
(.ipynb), más las notas o apuntes necesarios
2. El archivo de código de visualización y análisis de datos (.ipynb), más las notas o apuntes necesarios
3. Archivos de datos capturados y archivos intermedios generados por el análisis y visualización de datos
4. Documentos finales de trabajo.
raspado de datos
# 用于爬取信息
import requests
# 用于解析网页
from bs4 import BeautifulSoup
# 用于正则匹配找到目标项目
import re
# 对csv文件的操作
import csv
# 打开文件
# a+权限追加写入
# newline=""用于取消自动换行
fp = open("data.csv", "a+", newline="")
# 修饰,处理成支持scv读取的文件
csv_fp = csv.writer(fp)
# 设置csv文件内标题头
head = ['日期', '最高气温', '最低气温']
# 写入标题
csv_fp.writerow(head)
# UA伪装
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0"
}
# 存放全部数据
data = []
# 进行url拼接,主要拼接的是年份和月份
# 从2011年到2020年
for i in range(2011, 2021):
# 从1月到12月
for j in range(1, 13):
# 字符串化
i = str(i)
# 小于10则补0
if j < 10:
j = "0" + str(j)
else:
# 字符串化
j = str(j)
# 完成拼接
url = "http://www.tianqihoubao.com/lishi/beijing/month/" + i + j + ".html"
# 获取响应
response = requests.get(url=url, headers=headers)
# 设置编码为gbk
response.encoding = 'gbk'
# 获取响应文本数据
page = response.text
# 用BeautifulSoup解析网页
soup = BeautifulSoup(page, 'lxml')
# 获取所有tr标签
tr_list = soup.find_all('tr')
# 解析每一个tr标签
for tr in tr_list:
# 用于存放一天的数据
one_day = []
# 字符串化便于正则匹配
tr = str(tr)
# 去除所有空格
tr = tr.replace(" ", "")
# 取出日期
date = re.findall(r'title="(.*?)北京天气预报">', tr)
# 如果取到则放入one——day存放
if date:
one_day.append(date[0])
# 取出最高温和最低温
tem = re.findall(r'(.*?)℃', tr)
# 如果取到则放入one——day存放
if tem:
one_day.append(tem[0])
one_day.append(tem[1])
# 如果完整的取到一天的数据则放入data存放
if len(one_day) == 3:
data.append(one_day)
print(one_day)
# 写入csv文件
csv_fp.writerow(one_day)
# 关闭文件指针
fp.close()
Resultados del rastreo
procesamiento de datos
# 读取csv文件
import csv
# 作图工具
from matplotlib import pyplot as plt
# 存放日期
x = []
# 存放最高气温
h = []
# 存放最低气温
l = []
# 读取之前爬取的数据
with open("data.csv") as f:
reader = csv.reader(f)
j = 1
for i, rows in enumerate(reader):
# 不要标题那一行
if i:
row = rows
print(row)
x.append(rows[0])
h.append(int(rows[1]))
l.append(int(rows[2]))
# 设置画板大小
fig = plt.figure(dpi=128, figsize=(20, 6))
# 显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 画最高气温
plt.plot(x, h, c="red", alpha=0.5)
# 画最低气温
plt.plot(x, l, c="blue", alpha=0.5)
# 区间渲染
plt.fill_between(x, h, l, facecolor="blue", alpha=0.2)
# 标题
plt.title("北京市过去3658天的气温变化")
# y轴名称
plt.ylabel("气温")
# x轴名称
plt.xlabel("日期")
plt.xticks(x[::300])
plt.show()
Visualización de datos
gran documento de trabajo
La idea general
es rastrear la temperatura más alta y la temperatura más baja en Beijing en los últimos 9 años (3658 días) desde el sitio web de post-garantía del clima, y usar matplotlib para dibujar un gráfico de líneas para analizar la tendencia del
clima
. El sitio web solo puede consultar el clima durante un mes a la vez. 2. Los
datos de consulta se encuentran en forma de tabla, y la etiqueta tr no tiene atributos. Al procesar cada tr con coincidencia regular, es necesario determinar si los datos, Se consulta la fecha, la temperatura máxima y la temperatura mínima. En ese momento, se considerará como un éxito y se almacenará en la lista
de análisis de datos
del total de datos. 1. A través de los cambios de temperatura en los últimos 3658 días, puede Se puede ver que la diferencia de temperatura anual entre el frío y el verano en Beijing es básicamente estable en alrededor de 50 grados, mientras que la diferencia de temperatura entre el frío y el verano superó los 60 grados en 2015.
Conclusión
1. El cambio de temperatura en Beijing básicamente se ajusta a la ley