Heim >Backend-Entwicklung >Python-Tutorial >Verwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen

Verwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen

王林
王林nach vorne
2023-04-11 20:04:251609Durchsuche

Verwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen

Datenerfassung

Um die Verteilung von Hochschulen und Universitäten darzustellen, müssen Sie zunächst die Standortdaten von Hochschulen und Universitäten ermitteln im ganzen Land. Die Daten für diesen Artikel stammen vom Palm College Entrance Examination Network (https://www.gaokao.cn/school/search).

Verwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen

Zum Zeitpunkt des Schreibens dieses Artikels im Juni 2022 Insgesamt wurden Informationen zu 2822 Hochschulen und Universitäten eingeholt. Nach der Überprüfung der Daten sind die gesamten Daten bis auf einige Nullwerte sehr vollständig und haben keinen Einfluss auf die Verwendung. Die Daten umfassen insgesamt 44 Felder. In diesem Artikel werden nur einige Felder verwendet. Sie müssen nicht verarbeitet werden und können bei Bedarf abgerufen werden.

Verwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen

Einführung in Datenerfassungsmethoden (Grundkenntnisse im Crawler) :

1. Registrieren Sie sich und melden Sie sich auf der Website für die mobile Hochschulaufnahmeprüfung an. Wählen Sie auf der Seite alle Schulen aus.

2 Drücken Sie die Taste F12, klicken Sie auf Netzwerk > Fetch/XHR und klicken Sie dann ein paar Mal. 🎜🎜# Die Schaltflächen und auf der Seite zeigen die aufgerufene API und andere Informationen auf der XHR-Seite an.

3. Kopieren Sie die API jedes Mal, wenn Sie die Seite umblättern, um sie zu vergleichen, und finden Sie die Parameter, die sich ändern, wenn Sie Umblättern Es gibt zwei: Seite und Signsafe, Seite ist die Anzahl der Seiten, auf die derzeit zugegriffen wird, und Signsafe ist ein MD5-Wert, der nicht dekodiert werden kann, aber die vorherigen Werte können gespeichert und später zufällig verwendet werden. Mit diesen Informationen können durch ständige Änderung der Anzahl der besuchten Seiten und des Signsafe-Werts alle Schuldaten abgerufen werden.

Der Parameterwert numFound in Response ist die Gesamtzahl der Schulen, die auf jeder Seite angezeigt werden, um die Gesamtzahl der Seiten zu erhalten Klicken Sie direkt auf die Seite #🎜🎜 #Sehen Sie sich die Gesamtzahl der Seiten an und ermitteln Sie so die Anzahl der Besuche.

4. Da für die Nutzung der Website eine Anmeldung erforderlich ist, ist es auch erforderlich, beim Zugriff die Header abzurufen, z als Anforderungsmethode (diesmal verwende ich POST), User-Agent usw.


5. Schleifen Sie mit den oben genannten Informationen die URLs aller Seiten ab und verwenden Sie Anfragen zum Senden von Anfragen die Daten aller Hochschulen und Universitäten, und verwenden Sie dann Pandas, um die Daten in Excel zu schreiben.


Warme Erinnerung: Beim Abrufen von Daten müssen Sie die entsprechende Erklärung der Website einhalten , und der Crawler-Code sollte auf ein möglichst sicheres Zeitintervall eingestellt werden. Führen Sie den Crawler-Code nicht während der Spitzenzugriffszeiten aus.

Zusätzliche Erklärung:

Die neueste Ankündigung von People's Daily Online: Die Anzahl der An normalen Hochschulen und Universitäten im ganzen Land gibt es 2.759 Schulen, das sind 63 andere als die 2.822 Schulen, die in diesem Artikel vom Palm College Entrance Examination Network ermittelt wurden. Der Unterschied ist hauptsächlich auf die unterschiedlichen statistischen Methoden einiger Zweigstellen zurückzuführen. Was dieser Artikel zeigt, ist die Verteilung, und dieser Unterschied hat kaum Auswirkungen. #? 🎜#

Das Palm College Entrance Examination Network ist eine Website zum Ausfüllen von Freiwilligendiensten für die College-Aufnahmeprüfung. Die erhaltenen Daten umfassen zwar 44 Felder, enthalten jedoch keine Breiten- und Längengrad der Schule. Um den Standort von Hochschulen und Universitäten besser auf der Karte anzuzeigen, ist es notwendig, anhand der Adresse der Schule den entsprechenden Längen- und Breitengrad zu ermitteln.

Verwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen


Dieser Artikel verwendet die Baidu Map Open Platform: https://lbsyun.baidu.com/apiconsole/center #/ home: Sie können die offene Schnittstelle von Baidu Map verwenden, um den Längen- und Breitengrad des geografischen Standorts abzurufen.

Die zu verwendenden Schritte sind:
#🎜 🎜#

1. Registrieren Sie sich und melden Sie sich bei einem Baidu-Konto an (z. B. Konten für Netzwerkfestplatten, Wenku usw.).

2. Melden Sie sich bei der Baidu Map Open Platform an, klicken Sie, um einzugeben, klicken Sie dann auf in und dann auf , um eine Anwendung zu erstellen. Passen Sie den Anwendungsnamen an, geben Sie nach Aufforderung und Bedarf weitere Informationen ein und unterziehen Sie sich einer Authentifizierung mit echtem Namen, um ein einzelner Entwickler zu werden.

Verwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen


3. Nachdem die Anwendung erstellt wurde, können Sie diesen AK-Wert verwenden, um die API von Baidu aufzurufen.

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. Nachdem Sie die Baidu Map API erfolgreich aufgerufen haben, lesen Sie die Standorte aller Universitäten, rufen Sie die obige Funktion nacheinander auf, ermitteln Sie den Längen- und Breitengrad aller Universitäten und schreiben Sie sie in Excel um.

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

Das endgültige Datenergebnis ist wie folgt:

Verwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen

Einzelne Entwickler müssen bei der Verwendung der offenen Baidu Map-Plattform aufpassen. Es gibt ein tägliches Kontingentlimit, daher sollten Sie dies beim Debuggen des Codes nicht tun Verwenden Sie zuerst alle Daten, führen Sie zuerst die Demo durch, andernfalls müssen Sie einen Tag warten oder den Betrag kaufen.

Verwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen

Standortanzeige der Hochschule

Die Daten sind fertig, wir zeigen sie auf der Karte an.

Dieser Artikel verwendet Baidus Open-Source-Datenvisualisierungstool Echarts. Echarts stellt die Pyecharts-Bibliothek für die Python-Sprache bereit, die sehr benutzerfreundlich ist.

Installationsbefehl:

pip install pyecharts

1. Markieren Sie den Standort von Hochschulen und Universitäten

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

Verwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen

Den Kennzeichnungsergebnissen zufolge werden hauptsächlich Hochschulen und Universitäten verteilt an der Küste, Zentrale und östliche Gebiete, insbesondere im Westen, gibt es relativ wenige Höhengebiete. 2. Zeichnen Sie eine Heatmap der Verteilung von Hochschulen und Universitäten , Guangzhou und die Becken des Jangtse und des Gelben Flusses sind der einzige Ort, an dem es im Westen mehr Orte gibt.

3. Zeichnen Sie eine Verteilungsdichtekarte nach Provinz östliche Teile des Landes, insbesondere in den zentralen und östlichen Teilen des Landes. Mehrere Provinzen in der Nähe von Peking und Shanghai.

Verwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen

4. Die Verteilung von 211 und 985 Hochschulen und Universitäten
Filtern Sie die Daten von 211 und 985 Hochschulen und Universitäten heraus und zeichnen Sie sie erneut. (Der Code muss nicht wiederholt eingefügt werden. Fügen Sie einfach eine Zeile Filtercode hinzu.)

Verwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen

Das Obige ist der gesamte Inhalt dieses Artikels.

Das obige ist der detaillierte Inhalt vonVerwenden Sie Python, um die Verteilung von Hochschulen und Universitäten im ganzen Land anzuzeigen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen