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

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

WBOY
Freigeben: 2023-05-01 10:16:12
nach vorne
1083 Leute haben es durchsucht

Datenerfassung

Um die Verteilung von Hochschulen und Universitäten darzustellen, müssen Sie zunächst die Standortdaten von Hochschulen und Universitäten im ganzen Land ermitteln. Die Daten für diesen Artikel stammen vom Palm College Entrance Examination Network

Als dieser Artikel im Juni 2022 verfasst wurde, wurden insgesamt Informationen von 2.822 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.

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

Einführung in Datenerfassungsmethoden (Grundkenntnisse des Crawlers):

1 Registrieren Sie sich und melden Sie sich beim Palm College Entrance Examination Network an. Wählen Sie auf der Seite alle Schulen aus.

2. Drücken Sie die Taste F12, klicken Sie auf die Schaltflächen zeigt Informationen wie die aufgerufene API an.

3. Kopieren Sie die API jedes Mal, wenn Sie die Seite umblättern. Es wurde festgestellt, dass sich beim Umblättern zwei Parameter ändern: „Seite“ ist die Anzahl der aktuell aufgerufenen Seiten und kann nicht rückgängig gemacht werden, aber Sie können die vorherigen Werte speichern und sie später zufällig verwenden. Mit diesen Informationen können durch ständige Änderung der Anzahl der besuchten Seiten und des Signsafe-Werts alle Schuldaten abgerufen werden.

Der numFound-Parameterwert in der Antwort ist die Gesamtzahl der Schulen, die auf jeder Seite angezeigt werden, um die Gesamtzahl der Seiten zu erhalten Sehen Sie sich die Gesamtzahl der Seiten an und bestimmen Sie so die Anzahl der Besuche.

4. Da für die Nutzung der Website eine Anmeldung erforderlich ist, müssen beim Zugriff auch die Header abgerufen werden, z. B. die Anforderungsmethode (diesmal wird POST verwendet), der Benutzeragent usw.

5. Schleifen Sie mit den oben genannten Informationen die URLs aller Seiten ab, verwenden Sie Anfragen, um eine Anfrage zum Abrufen der Daten aller Universitäten zu senden, und verwenden Sie dann Pandas, um die Daten in Excel zu schreiben.

Warme Erinnerung: Beim Abrufen von Daten müssen Sie die entsprechenden Anweisungen der Website einhalten. Versuchen Sie, ein bestimmtes Zeitintervall für den Crawler-Code festzulegen. Führen Sie den Crawler-Code nicht während der Spitzenzugriffszeiten aus.

Erfassung von Breiten- und Längengraden

Das Palm College Entrance Examination Network ist eine Website für Freiwilligendienste für die College-Aufnahmeprüfung. Die erhaltenen Daten umfassen zwar 44 Felder, enthalten jedoch nicht den 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.

Dieser Artikel verwendet die offene Plattform Baidu Map: 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 Schritte sind:

1. Registrieren Sie sich und melden Sie sich bei diesem Konto an. Dieses Konto kann ein gemeinsames Konto für das gesamte Baidu-Ökosystem sein (z. B. sind Konten für Netzwerkfestplatten, Wenku usw. üblich).

2. Melden Sie sich bei Baidu Map Open Platform an, klicken Sie auf , klicken Sie dann auf , und klicken Sie dann auf 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.

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

3. Nach dem Erstellen der Anwendung erhalten Sie den . Mit diesem AK-Wert können Sie die API von Baidu aufrufen.

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': ''}
Nach dem Login kopieren

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')
Nach dem Login kopieren

Das endgültige Datenergebnis ist wie folgt:

So 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. Verwenden Sie daher beim Debuggen des Codes nicht alle Daten Führen Sie es zunächst mit der Demo durch, andernfalls müssen Sie einen Tag oder den Kaufbetrag warten.

So 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 praktisch ist.

Installationsbefehl:

pip install pyecharts
Nach dem Login kopieren

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')
Nach dem Login kopieren

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

Aus den Anmerkungsergebnissen geht hervor, dass Hochschulen und Universitäten hauptsächlich entlang der Küste sowie in zentralen und östlichen Gebieten verteilt sind und relativ wenige liegt im Westen, insbesondere in hochgelegenen Gebieten.

2. Zeichnen Sie eine Heatmap der Verteilung von Hochschulen und Universitäten

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')
Nach dem Login kopieren

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

Auf der Heatmap sind die Orte, an denen Hochschulen und Universitäten stärker konzentriert sind, hauptsächlich an der Küste, im Norden, in Shanghai, Guangzhou usw die Becken des Jangtsekiang und des Gelben Flusses, während Sichuan und Chongqing die einzigen Orte sind, an denen es im Westen mehr Orte gibt.

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")
Nach dem Login kopieren

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

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

4.211和985高校的分布情况

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

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

Das obige ist der detaillierte Inhalt vonSo verwenden 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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage