本文主要是介绍手把手教你用Python进行城市公交网络分析与可视化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、数据查看和预处理
数据获取自高德地图API,包含了天津市公交线路和站点名称及其经纬度数据。
import pandas as pddf = pd.read_excel('site_information.xlsx')
df.head()
字段说明:
-
线路名称:公交线路的名称
-
上下行:0表示上行;1表示下行
-
站序号:公交线路上行或下行依次经过站的序号
-
站名称:站点名称
-
经度(分):站点的经度
-
纬度(分):站点的纬度
数据字段少,结构也比较简单,下面来充分了解我们的数据和进行预处理。总的数据有 30396 条,站名称缺失了 5 条,纬度(分)缺失了 1 条,经度(分)缺失了 38 条,为了处理方便,直接把有缺失值的行删除。
经纬度数据是7031.982、2348.1016这样的,需要将其转换为以度为单位。
df2 = df1.copy()
df2['经度(分)'] = df1['经度(分)'].apply(float) / 60
df2['纬度(分)'] = df1['纬度(分)'].apply(float) / 60
df2.head()
处理后的数据里,共有 618 条公交线路,4851个站点数据。
重新保存为处理后数据
df2.to_excel("处理后数据.xlsx", index=False)
二、数据分析
分析天津市公交站点的分布情况
# -*- coding: UTF-8 -*-
"""
@Author :python小叮当
"""
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import randomdf = pd.read_excel("处理后数据.xlsx")
x_data = df['经度(分)']
y_data = df['纬度(分)']
colors = ['#FF0000', '#0000CD', '#00BFFF', '#008000', '#FF1493', '#FFD700', '#FF4500', '#00FA9A', '#191970', '#9932CC']
colors = [random.choice(colors) for i in range(len(x_data))]
mpl.rcParams['font.family'] = 'SimHei'
plt.style.use('ggplot')
# 设置大小
plt.figure(figsize=(12, 6), dpi=200)
# 绘制散点图 经度 纬度 传进去 设置 颜色 点的大小
plt.scatter(x_data, y_data, marker="o", s=9., c=colors)# 添加描述信息 x轴 y轴 标题
plt.xlabel("经度")
plt.ylabel("纬度")
plt.title("天津市公交站点分布情况")
plt.savefig('经纬度散点图.png')
plt.show()
结果如下:
通过 matplotlib 绘制散点图可视化天津市公交站点的分布情况,容易看出天津市的公交热点分布区域。为了能更形象地分析公交线路网络,我们还可以将数据可视化在实际地图上,利用 Pyecharts 的BMap。
# -*- coding: UTF-8 -*-
"""
@Author :python小叮当
"""
import pandas as pd
from pyecharts.charts import BMap
from pyecharts import options as opts
from pyecharts.globals import CurrentConfig# 引用本地js资源渲染
CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'df = pd.read_excel('处理后数据.
这篇关于手把手教你用Python进行城市公交网络分析与可视化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!