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.
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
2. Drücken Sie die Taste F12, klicken Sie auf die Schaltflächen
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.
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
3. Nach dem Erstellen der Anwendung erhalten Sie den
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:
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.
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
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')
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')
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")
从省级分布密度图可以看出,高校数量多的省份集中在中部和东部,尤其是北京和上海附近的几个省。
4.211和985高校的分布情况
筛选出211和985的高校数据,再绘制一次。(代码不重复粘贴,只需要加一行筛选代码即可)
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!