您好,登录后才能下订单哦!
随着中国高等教育的快速发展,全国高校的数量和分布情况成为了一个备受关注的话题。了解高校的分布情况不仅有助于教育资源的合理配置,还能为考生和家长提供有价值的参考信息。本文将介绍如何使用Python编程语言,结合数据获取、数据预处理和数据可视化技术,展示全国高校的分布情况。
要展示全国高校的分布情况,首先需要获取高校的地理位置数据。这些数据可以从多个渠道获取,例如:
如果从教育部官方网站获取数据,可以使用Python的requests
库和BeautifulSoup
库进行网页爬取。以下是一个简单的爬取示例:
import requests
from bs4 import BeautifulSoup
url = "http://www.moe.gov.cn/s78/A03/moe_560/jytjsj_2019/qg/202001/t20200106_414658.html"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 假设高校信息在表格中
table = soup.find('table')
rows = table.find_all('tr')
for row in rows:
cols = row.find_all('td')
if len(cols) > 0:
school_name = cols[0].text.strip()
location = cols[1].text.strip()
print(f"学校名称: {school_name}, 所在地: {location}")
获取到的原始数据通常需要进行清洗,以去除无效或重复的数据。常见的数据清洗步骤包括:
import pandas as pd
# 假设数据已经存储在一个CSV文件中
df = pd.read_csv('universities.csv')
# 去除空值
df.dropna(inplace=True)
# 去除重复值
df.drop_duplicates(inplace=True)
# 统一格式
df['location'] = df['location'].str.replace('市', '')
为了在地图上展示高校的分布情况,需要将地理位置信息转换为经纬度坐标。可以使用geopy
库进行地理编码。
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="geoapiExercises")
def get_lat_lon(location):
try:
location = geolocator.geocode(location + ", 中国")
return (location.latitude, location.longitude)
except:
return (None, None)
df['coordinates'] = df['location'].apply(get_lat_lon)
df[['latitude', 'longitude']] = pd.DataFrame(df['coordinates'].tolist(), index=df.index)
df.drop(columns=['coordinates'], inplace=True)
使用folium
库可以轻松地绘制交互式地图。首先,创建一个基础地图,然后在地图上添加高校的位置标记。
import folium
# 创建基础地图
m = folium.Map(location=[35, 105], zoom_start=5)
# 添加高校位置标记
for idx, row in df.iterrows():
folium.Marker(
location=[row['latitude'], row['longitude']],
popup=row['school_name'],
icon=folium.Icon(color='blue')
).add_to(m)
# 保存地图
m.save('universities_map.html')
为了更直观地展示高校的分布情况,可以使用matplotlib
库绘制高校分布图。
import matplotlib.pyplot as plt
# 绘制高校分布图
plt.figure(figsize=(10, 8))
plt.scatter(df['longitude'], df['latitude'], alpha=0.5)
plt.title('全国高校分布图')
plt.xlabel('经度')
plt.ylabel('纬度')
plt.grid(True)
plt.show()
为了增强用户体验,可以使用plotly
库创建交互式地图。用户可以通过鼠标悬停查看高校的详细信息。
import plotly.express as px
fig = px.scatter_geo(df, lat='latitude', lon='longitude', hover_name='school_name', scope='asia')
fig.update_layout(title='全国高校分布图', title_x=0.5)
fig.show()
通过上述步骤,我们成功获取并展示了全国高校的分布情况。从地图上可以看出,高校主要集中在东部沿海地区,尤其是北京、上海、广州等大城市。中西部地区的高校数量相对较少,但近年来随着国家政策的支持,中西部地区的高校数量也在逐步增加。
以下是完整的Python代码,包括数据获取、数据预处理和数据可视化的所有步骤。
import requests
from bs4 import BeautifulSoup
import pandas as pd
from geopy.geocoders import Nominatim
import folium
import matplotlib.pyplot as plt
import plotly.express as px
# 数据获取
url = "http://www.moe.gov.cn/s78/A03/moe_560/jytjsj_2019/qg/202001/t20200106_414658.html"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table')
rows = table.find_all('tr')
data = []
for row in rows:
cols = row.find_all('td')
if len(cols) > 0:
school_name = cols[0].text.strip()
location = cols[1].text.strip()
data.append([school_name, location])
df = pd.DataFrame(data, columns=['school_name', 'location'])
# 数据清洗
df.dropna(inplace=True)
df.drop_duplicates(inplace=True)
df['location'] = df['location'].str.replace('市', '')
# 数据转换
geolocator = Nominatim(user_agent="geoapiExercises")
def get_lat_lon(location):
try:
location = geolocator.geocode(location + ", 中国")
return (location.latitude, location.longitude)
except:
return (None, None)
df['coordinates'] = df['location'].apply(get_lat_lon)
df[['latitude', 'longitude']] = pd.DataFrame(df['coordinates'].tolist(), index=df.index)
df.drop(columns=['coordinates'], inplace=True)
# 数据可视化 - 地图绘制
m = folium.Map(location=[35, 105], zoom_start=5)
for idx, row in df.iterrows():
folium.Marker(
location=[row['latitude'], row['longitude']],
popup=row['school_name'],
icon=folium.Icon(color='blue')
).add_to(m)
m.save('universities_map.html')
# 数据可视化 - 高校分布图
plt.figure(figsize=(10, 8))
plt.scatter(df['longitude'], df['latitude'], alpha=0.5)
plt.title('全国高校分布图')
plt.xlabel('经度')
plt.ylabel('纬度')
plt.grid(True)
plt.show()
# 数据可视化 - 交互式地图
fig = px.scatter_geo(df, lat='latitude', lon='longitude', hover_name='school_name', scope='asia')
fig.update_layout(title='全国高校分布图', title_x=0.5)
fig.show()
本文详细介绍了如何使用Python展示全国高校的分布情况。通过数据获取、数据预处理和数据可视化,我们能够直观地了解高校在全国范围内的分布情况。这不仅为教育资源的合理配置提供了参考,也为考生和家长提供了有价值的信息。希望本文能够帮助读者掌握相关技术,并在实际应用中发挥作用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。