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

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

WBOY
WBOYavant
2023-05-01 10:16:121067parcourir

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

Lorsque cet article a été rédigé en juin 2022, un total de 2 822 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.

Comment utiliser 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 des robots) :

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 affichera des informations telles que l’API consultée.

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 consultées. et ne peut pas être inversé. Solution, 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 la réponse est le nombre total d'écoles. Divisez par le nombre d'écoles affichées sur chaque page pour obtenir le nombre total de pages. Vous pouvez également cliquer directement sur la afficher le nombre total de pages, déterminant ainsi la fréquence des 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 est utilisé 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 de 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.

Acquisition de latitude et de longitude

Le Palm College Entry Examination Network est un site Web de services bénévoles pour l'examen d'entrée à l'université. Bien que les données obtenues comportent 44 champs, elles ne contiennent 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 l'emplacement géographique.

Les étapes sont les suivantes :

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

2. Connectez-vous à Baidu Map Open Platform, cliquez pour accéder au , puis cliquez sur dans , puis cliquez sur 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.

Comment utiliser 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': ''}

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')

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

Comment utiliser 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 y a une limite de quota quotidien, donc lors du débogage du code, n'utilisez pas toutes les données. Tout d'abord, parcourez-le avec la démo, sinon vous devez attendre un jour ou le montant de l'achat.

Comment utiliser 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, qui fournit la bibliothèque pyecharts pour le langage Python, qui est très pratique à utiliser.

Commande d'installation :

pip install pyecharts

1. Marquez l'emplacement des collèges et universités

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')

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

D'après les résultats de l'annotation, les collèges et universités sont principalement répartis le long de la côte, dans les zones centrales et orientales, et relativement peu le sont. situé à l'ouest, notamment dans les zones de haute altitude.

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

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

def draw_location_heatmap():
"""绘制热力图"""
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_=ChartType.HEATMAP
).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)),
visualmap_opts=opts.VisualMapOpts()
).render('high_school_heatmap.html')

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

À partir de la carte thermique, les endroits où les collèges et universités sont plus concentrés sont principalement les zones côtières, le nord, Shanghai, Guangzhou, et les bassins du Yangtsé et du fleuve Jaune, tandis que le Sichuan et Chongqing sont les seuls endroits avec plus de places à l'ouest.

3.绘制按省划分的分布密度图

from pyecharts.charts import Map
from pyecharts import options as opts
import pandas as pd


def draw_location_density_map():
"""绘制各省高校分布密度图"""
map = Map(init_opts=opts.InitOpts(bg_color='black', width='1200px', height='700px'))
df = pd.read_excel('school_lng_lat.xlsx')
s = df['province_name'].value_counts()
data_pair = [[province, int(s[province])] for province in s.index]
map.add(
'', data_pair=data_pair, maptype="china"
).set_global_opts(
title_opts=opts.TitleOpts(title='全国高校按省分布密度图', pos_left='500', pos_top='70',
title_textstyle_opts=opts.TextStyleOpts(color='white', font_size=16)),
visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True, pos_left='100', pos_bottom='100',textstyle_opts=opts.TextStyleOpts(color='white', font_size=16))
).render("high_school_density.html")

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

从省级分布密度图可以看出,高校数量多的省份集中在中部和东部,尤其是北京和上海附近的几个省。

4.211和985高校的分布情况

筛选出211和985的高校数据,再绘制一次。(代码不重复粘贴,只需要加一行筛选代码即可)

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer