Maison > développement back-end > Tutoriel Python > Utilisez Python pour afficher la répartition des collèges et universités à travers le pays

Utilisez Python pour afficher la répartition des collèges et universités à travers le pays

王林
Libérer: 2023-04-11 20:04:25
avant
1612 Les gens l'ont consulté

Utilisez Python pour afficher la répartition des collèges et universités à travers le pays

Acquisition de données

Pour montrer la répartition des collèges et universités, vous devez d'abord obtenir les données de localisation des collèges et universités à travers le pays. Les données de cet article proviennent du Palm College Entry Examination Network (https://www.gaokao.cn/school/search).

Utilisez Python pour afficher la répartition des collèges et universités à travers le pays

Lors de la rédaction de cet article en juin 2022, un total de 2822 informations sur les collèges et universités ont été obtenues. Après vérification des données, à l'exception de quelques valeurs nulles, l'ensemble des données est très complet et n'affecte pas l'utilisation. Les données comportent un total de 44 champs. Cet article n'utilisera que quelques champs. Ils n'ont pas besoin d'être traités et peuvent être obtenus sur demande lors de leur utilisation.

Utilisez Python pour afficher la répartition des collèges et universités à travers le pays

Introduction aux méthodes d'acquisition de données (connaissances de base du robot d'exploration) :

1. Inscrivez-vous et connectez-vous au réseau d'examen d'entrée au Palm College. Sélectionnez toutes les écoles sur la page .

2. Appuyez sur la touche F12, cliquez sur Réseau > Récupérer/XHR, puis cliquez plusieurs fois sur les boutons et de la page . L'API consultée et d'autres informations seront affichées sur la page XHR.

3. Copiez l'API à chaque fois que vous tournez la page pour comparaison. On constate qu'il y a deux paramètres qui changent lorsque vous tournez la page : page et signsafe. La page est le nombre de pages actuellement visitées. signsafe est une valeur md5, ne peut pas être résolu de manière inverse, mais vous pouvez enregistrer les valeurs précédentes et les utiliser de manière aléatoire plus tard. Avec ces informations, en modifiant constamment le nombre de pages visitées et la valeur signsafe, toutes les données scolaires peuvent être obtenues. La valeur du paramètre numFound dans

Response est le nombre total d'écoles divisé par le nombre d'écoles affichées sur chaque page pour obtenir le nombre total de pages. Vous pouvez également cliquer directement sur sur la page pour afficher le nombre total d'écoles. pages, déterminant ainsi le nombre de visites.

4. Parce que le site Web doit être connecté pour être utilisé, il est également nécessaire d'obtenir les en-têtes lors de l'accès, tels que la méthode de requête (POST cette fois), l'agent utilisateur, etc.

5. Avec les informations ci-dessus, bouclez les URL de toutes les pages, utilisez des requêtes pour envoyer une requête afin d'obtenir les données de toutes les universités, puis utilisez des pandas pour écrire les données dans Excel.

Rappel chaleureux : lors de l'obtention des données, vous devez vous conformer aux déclarations pertinentes du site Web. Essayez de définir un certain intervalle de temps pour le code du robot d'exploration pendant les périodes de pointe d'accès.

Explication supplémentaire :

La dernière annonce du Quotidien du Peuple : le nombre de collèges et d'universités d'enseignement général dans le pays est de 2759, soit 63 de différence par rapport aux 2822 obtenus sur le site Web de l'examen mobile d'entrée à l'université dans cet article Cela est principalement dû aux différences entre les méthodes statistiques des branches de certaines écoles. Ce que montre cet article, c'est la distribution, et cette différence a peu d'impact.

Utilisez Python pour afficher la répartition des collèges et universités à travers le pays


Obtention de la latitude et de la longitude

Le Palm College Entry Examination Network est un site Web permettant de remplir les services bénévoles pour l'examen d'entrée à l'université. Bien que les données obtenues comportent 44 champs, c'est le cas. ne contient pas la latitude et la longitude de l’école. Afin de mieux afficher l'emplacement des collèges et universités sur la carte, il est nécessaire d'obtenir la longitude et la latitude correspondantes en fonction de l'adresse de l'école.

Cet article utilise la plateforme ouverte Baidu Map : https://lbsyun.baidu.com/apiconsole/center#/home Vous pouvez utiliser l'interface ouverte de Baidu Map pour obtenir la longitude et la latitude de la. situation géographique.

Les étapes sont :

1. Inscrivez-vous et connectez-vous à un compte Baidu. Ce compte peut être un compte commun pour l'ensemble de l'écosystème Baidu (tels que les comptes pour les disques réseau, Wenku, etc. sont courants).

2. Connectez-vous à Baidu Map Open Platform, cliquez pour entrer , puis cliquez sur dans , puis cliquez sur pour créer une application. Personnalisez le nom de l'application, remplissez d'autres informations lorsque vous y êtes invité et requis, et soumettez-vous à une authentification par nom réel pour devenir un développeur individuel.

Utilisez Python pour afficher la répartition des collèges et universités à travers le pays


3. Après avoir créé l'application, vous obtiendrez le d'une application. Vous pouvez utiliser cette valeur AK pour appeler l'API de Baidu.

import requests


def baidu_api(addr):
url = "http://api.map.baidu.com/geocoding/v3/?"
params = {
"address": addr,
"output": "json",
"ak": "复制你创建的应用AK到此"
}
req = requests.get(url, params)
res = req.json()
if len(res["result"]) > 0:
loc = res["result"]["location"]
return loc
else:
print("获取{}经纬度失败".format(addr))
return {'lng': '', 'lat': ''}
Copier après la connexion

4. Après avoir appelé avec succès l'API Baidu Map, lisez les emplacements de toutes les universités, appelez la fonction ci-dessus dans l'ordre, obtenez la longitude et la latitude de toutes les universités et réécrivez-la dans Excel.

import pandas as pd
import numpy as np


def get_lng_lat():
df = pd.read_excel('school.xlsx')
lng_lat = []
for row_index, row_data in df.iterrows():
addr = row_data['address']
if addr is np.nan:
addr = row_data['city_name'] + row_data['county_name']
# print(addr)
loc = baidu_api(addr.split(',')[0])
lng_lat.append(loc)
df['经纬度'] = lng_lat
df['经度'] = df['经纬度'].apply(lambda x: x['lng'])
df['纬度'] = df['经纬度'].apply(lambda x: x['lat'])
df.to_excel('school_lng_lat.xlsx')
Copier après la connexion

Le résultat final des données est le suivant :

Utilisez Python pour afficher la répartition des collèges et universités à travers le pays

Les développeurs individuels doivent faire attention lorsqu'ils utilisent la plate-forme ouverte Baidu Map. Il existe une limite de quota quotidien, donc lors du débogage du code, ne le faites pas. utilisez d'abord toutes les données, exécutez-les d'abord via la démo, sinon vous devrez attendre un jour ou acheter le montant.

Utilisez Python pour afficher la répartition des collèges et universités à travers le pays

Affichage de la localisation du collège

Les données sont prêtes, affichons-les sur la carte.

Cet article utilise l'outil de visualisation de données open source de Baidu, Echarts. Echarts fournit la bibliothèque pyecharts pour le langage Python, qui est très pratique à utiliser. 1. Marquez l'emplacement des collèges et universités côtière, les zones centrales et orientales, en particulier à l'ouest. Il existe relativement peu de zones d'altitude.

2. Dessinez une carte thermique de la répartition des collèges et universités

pip install pyecharts
Copier après la connexion

À partir de la carte thermique, les endroits où les collèges et universités sont plus concentrés se trouvent principalement le long de la côte, au nord et à Shanghai. , Guangzhou et les bassins du Yangtze et du fleuve Jaune sont le seul endroit où il y a plus d'endroits à l'ouest.

Utilisez Python pour afficher la répartition des collèges et universités à travers le pays

3. Dessinez une carte de densité de répartition par province

from pyecharts.charts import Geo
from pyecharts import options as opts
from pyecharts.globals import GeoType
import pandas as pd

def multi_location_mark():
"""批量标注点"""
geo = Geo(init_opts=opts.InitOpts(bg_color='black', width='1600px', height='900px'))
df = pd.read_excel('school_lng_lat.xlsx')
for row_index, row_data in df.iterrows():
geo.add_coordinate(row_data['name'], row_data['经度'], row_data['纬度'])
data_pair = [(name, 2) for name in df['name']]
geo.add_schema(
maptype='china', is_roam=True, itemstyle_opts=opts.ItemStyleOpts(color='#323c48', border_color='#408080')
).add(
'', data_pair=data_pair, type_=GeoType.SCATTER, symbol='pin', symbol_size=16, color='#CC3300'
).set_series_opts(
label_opts=opts.LabelOpts(is_show=False)
).set_global_opts(
title_opts=opts.TitleOpts(title='全国高校位置标注图', pos_left='650', pos_top='20',
title_textstyle_opts=opts.TextStyleOpts(color='white', font_size=16))
).render('high_school_mark.html')
Copier après la connexion

On peut voir sur la carte de densité de répartition provinciale que les provinces avec un grand nombre d'universités sont concentrées dans le centre et parties orientales du pays, en particulier dans les régions centrales et orientales du pays, dans plusieurs provinces proches de Pékin et de Shanghai. Utilisez Python pour afficher la répartition des collèges et universités à travers le pays

4. La répartition de 211 et 985 collèges et universités

Filtrez les données de 211 et 985 collèges et universités et dessinez-les à nouveau. (Le code n'a pas besoin d'être collé à plusieurs reprises, ajoutez simplement une ligne de code de filtrage)

Utilisez Python pour afficher la répartition des collèges et universités à travers le pays

Ce qui précède représente l'intégralité du contenu de cet article.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal