📣 前言
- •Step 1. 导入模块
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
from plotly.subplots import make_subplots
Step 2. 数据总览
数据下载:查看文章末尾获取。
file_path = '/home/mw/input/subway2423/地铁客流-2024年更新.xlsx'
xls = pd.ExcelFile(file_path)
sheet_names = xls.sheet_names
sheet_names
输出结果:
['数据概览', '分流客流', '过去三个月趋势', '客流量预测', '历史客流top10', '年日均客流', '月日均客流', '周日均客流']
这份数据包含以下8个sheet表:
- 1. 数据概览
- 2. 分流客流
- 3. 过去三个月趋势
- 4. 客流量预测
- 5. 历史客流top10
- 6. 年日均客流
- 7. 月日均客流
- 8. 周日均客流
# 创建一个字典来存储每个工作表的数据框
sheet_dataframes = {}
# 将每个工作表的数据读取到数据框中,并存储在字典中
for sheet in sheet_names:
sheet_dataframes[sheet] = xls.parse(sheet)
# 显示每个数据框的前几行,以便对数据进行概览
sheet_overviews = {sheet: dataframes.head() for sheet, dataframes in sheet_dataframes.items()}
sheet_overviews
Step 03. 数据概览数据可视化
这是“数据概览”sheet中关于不同城市地铁运营的几个关键指标的数据可视化总结:
- 1. 各城市地铁运营线路数(蓝色条形图):展示了上海、常州、北京、广州和西安的地铁运营线路数量。北京在这几个城市中拥有最多的运营线路。
- 2. 各城市地铁运营站点数(绿色条形图):展示了相同城市的地铁运营站点数量。上海在这几个城市中拥有最多的运营站点。
- 3. 各城市地铁运营里程(红色条形图):展示了这几个城市的地铁运营里程。上海的运营里程最长,达到约800.59公里。
- 4. 各城市地铁最高客流量(紫色条形图):展示了这几个城市的地铁最高客流量记录。上海的地铁最高客流量最大,达到约1339.7万人次。
这些图表为我们提供了不同城市地铁运营规模和客流情况的基本概览。
overview_data = sheet_dataframes['数据概览']
fig1 = px.bar(overview_data, x='城市', y='运营线路', title='各城市地铁运营线路数', labels={'运营线路': '运营线路数'})
fig1.update_traces(marker_color='skyblue', marker_line_color='black', marker_line_width=1.5)
fig2 = px.bar(overview_data, x=‘城市’, y=‘运营站点数’, title=‘各城市地铁运营站点数’, labels={‘运营站点数’: ‘运营站点数’})
fig2.update_traces(marker_color=‘salmon’, marker_line_color=‘black’, marker_line_width=1.5)
fig3 = px.bar(overview_data, x=‘城市’, y=‘运营里程/km’, title=‘各城市地铁运营里程’, labels={‘运营里程/km’: ‘运营里程/km’})
fig3.update_traces(marker_color=‘lightgreen’, marker_line_color=‘black’, marker_line_width=1.5)
fig4 = px.bar(overview_data, x=‘城市’, y=‘最高客流’, title=‘各城市地铁最高客流量’, labels={‘最高客流’: ‘最高客流量’})
fig4.update_traces(marker_color=‘lightsalmon’, marker_line_color=‘black’, marker_line_width=1.5)
fig = make_subplots(rows=2, cols=2, subplot_titles=(‘各城市地铁运营线路数’, ‘各城市地铁运营站点数’, ‘各城市地铁运营里程’, ‘各城市地铁最高客流量’))
fig.add_trace(fig1[‘data’][0], row=1, col=1)
fig.add_trace(fig2[‘data’][0], row=1, col=2)
fig.add_trace(fig3[‘data’][0], row=2, col=1)
fig.add_trace(fig4[‘data’][0], row=2, col=2)
fig.update_layout(height=800, width=1200, showlegend=False,template=‘ggplot2’,)
fig.update_xaxes(showline=True, linewidth=1, linecolor=‘black’)
fig.show()
输出可视化结果:
Step 04. 分流客流
flow_data_xian = sheet_dataframes['分流客流']
输出可视化结果:
这是西安地铁各线路的分流客流量条形图。从图中可以看出:
- • 西安地铁的某些线路,如2号线,有较高的客流量。
- • 其他线路,如5号线,客流量相对较低。
Step 05. 过去三个月趋势
上海地铁过去三个月客流量趋势
# 从'过去三个月趋势'工作表中提取上海市的数据
trend_data_shanghai = sheet_dataframes['过去三个月趋势'].loc[sheet_dataframes['过去三个月趋势']['city'] == '上海']
# 将’date’列转换为日期时间格式
trend_data_shanghai[‘date’] = pd.to_datetime(trend_data_shanghai[‘date’])
# 按日期对数据进行排序
trend_data_shanghai = trend_data_shanghai.sort_values(by=‘date’)
输出可视化结果:
这是上海地铁过去三个月的客流量趋势图。从图中可以看出:
- • 在这三个月内,上海的地铁客流量有波动,但整体上保持在一个相对稳定的水平。
- • 有些特定日期客流量出现高峰,可能是由节假日、周末或其他特殊事件引起的。
城市间客流量对比
比较不同城市在同一时间段内的平均客流量,看看哪个城市的地铁系统最繁忙。
trend_data_all_cities = sheet_dataframes['过去三个月趋势']
trend_data_all_cities[‘date’] = pd.to_datetime(trend_data_all_cities[‘date’])
city_avg_flow = trend_data_all_cities.groupby(‘city’).mean().reset_index()
输出可视化结果:
这是不同城市地铁平均客流量的对比图。从图中可以看出:
- • 在所提供的样本数据中,上海的平均地铁客流量是最高的,这表明上海的地铁系统可能是最繁忙的。
- • 其他城市如西安的平均客流量相对较低。
这个图表帮助我们理解不同城市地铁系统的繁忙程度。
周末与工作日对比
工作日和周末的数据,可以比较不同城市在这两段时间的客流量差异。
# 要比较周末和工作日的客流量,首先需要确定哪些日期是周末
# 假设周末为周六(5)和周日(6),这在许多国家都是典型的
trend_data_all_cities['weekday'] = trend_data_all_cities['date'].dt.weekday
trend_data_all_cities['is_weekend'] = trend_data_all_cities['weekday'].apply(lambda x: 1 if x in [5, 6] else 0)
# 按城市和周末标志分组,并计算每个组的平均客流量
city_weekday_weekend_avg_flow = trend_data_all_cities.groupby(['city', 'is_weekend']).mean().reset_index()
# 重新排列表格,将'Weekday'和'Weekend'作为单独的列,以便进行更好的比较
city_weekday_weekend_avg_flow_pivot = city_weekday_weekend_avg_flow.pivot(index='city', columns='is_weekend', values='flow').reset_index()
city_weekday_weekend_avg_flow_pivot.columns = ['city', 'Weekday', 'Weekend']
输出可视化结果:
这是不同城市地铁在工作日和周末的平均客流量对比图。从图中可以看出:
- • 对于大多数城市,周末的地铁客流量通常低于工作日。这可能是由于人们在周末通常不需要通勤上班或上学。
- • 每个城市的具体流量模式可能因城市的特定情况而异,例如居民的工作习惯、旅游活动等。
这个图表帮助我们理解不同城市在工作日和周末的地铁客流量差异。
=
原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/79283.html