🧑 博主简介:曾任某智慧城市类企业
算法总监
,目前在美国市场的物流公司从事高级算法工程师
一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907
)
💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
【数据可视化-76】从释永信被查,探索少林寺客流量深度分析:Python + Pyecharts 炫酷大屏可视化(含完整数据和代码)
一、引言
少林寺作为中国著名的佛教圣地,每年吸引着大量的游客。近期,释永信被调查的事件引发了广泛关注。为了更好地理解少林寺的运营情况,我们对近一年的客流量数据进行了详细分析。本文将使用 Python 和 Pyecharts 构建一个炫酷的黑色大屏,从多个维度展示客流量的变化趋势和内在规律。
二、数据集介绍
数据集包含以下字段:
日期
:日期星期
:星期几(0-6,0 表示星期一)天气
:天气情况(如晴、多云、小雨等)最高温度
:当日最高温度(℃)最低温度
:当日最低温度(℃)节假日
:是否为节假日(0 表示非节假日,1 表示节假日)特殊活动
:是否有特殊活动(如无、武术表演等)客流量
:当日客流量(人)
三、环境准备
在开始之前,请确保安装了以下库:
pip install pandas pyecharts
四、数据预处理
我们首先读取数据,并进行必要的预处理。
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import ThemeType
from pyecharts.commons.utils import JsCode
# 读取数据
df = pd.read_csv("少林寺客流量.csv")
# 将日期列转换为日期格式
df['日期'] = pd.to_datetime(df['日期'])
# 提取日期字符串
df['日期_str'] = df['日期'].dt.strftime('%m-%d')
五、可视化分析
接下来,我们将从多个角度对数据进行可视化分析。
5.1 日客流量柱状图
我们首先查看每天的客流量。
# 日客流量柱状图
bar_daily = (
Line(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000"))
.add_xaxis(df1['日期'].tolist())
.add_yaxis("客流量", df1['客流量'].tolist(), itemstyle_opts=opts.ItemStyleOpts(color="#00f2fe"))
.set_global_opts(
title_opts=opts.TitleOpts(title="每日客流量", subtitle="单位:人"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
yaxis_opts=opts.AxisOpts(name="客流量"),
visualmap_opts=opts.VisualMapOpts(
is_show=True,
pos_top="middle",
pos_left="right",
orient="vertical",
min_=0,
max_=df1['客流量'].max(),
range_color=["#00fe33", "#4facfe", "#ff00ee"]
)
)
)
5.2 周客流量柱状图
接下来,我们查看每周的客流量。
# 周客流量柱状图
weekly_flow = df.groupby('星期')['客流量'].mean().reset_index()
weekly_flow['星期'] = weekly_flow['星期'].map({0: '周一', 1: '周二', 2: '周三', 3: '周四', 4: '周五', 5: '周六', 6: '周日'})
bar_weekly = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000"))
.add_xaxis(weekly_flow['星期'].tolist())
.add_yaxis("平均客流量", weekly_flow['客流量'].round(2).tolist(), itemstyle_opts=opts.ItemStyleOpts(color="#ffde93"))
.set_global_opts(
title_opts=opts.TitleOpts(title="每周平均客流量", subtitle="单位:人"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
yaxis_opts=opts.AxisOpts(name="平均客流量"),
visualmap_opts=opts.VisualMapOpts(
is_show=True,
pos_top="middle",
pos_left="right",
orient="vertical",
min_=0,
max_=weekly_flow['客流量'].max(),
range_color=["#ffde93", "#ffc107", "#ff9800"]
)
)
)
5.3 节假日与非节假日客流量对比
我们再看看节假日和非节假日的客流量对比。
# 节假日与非节假日客流量对比
holiday_flow = df.groupby('节假日')['客流量'].mean().reset_index()
bar_holiday = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000"))
.add_xaxis(holiday_flow['节假日'].map({0: '非节假日', 1: '节假日'}).tolist())
.add_yaxis("平均客流量", holiday_flow['客流量'].round(2).tolist(), itemstyle_opts=opts.ItemStyleOpts(color="#ffde93"))
.set_global_opts(
title_opts=opts.TitleOpts(title="节假日与非节假日客流量对比", subtitle="单位:人"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
yaxis_opts=opts.AxisOpts(name="平均客流量"),
visualmap_opts=opts.VisualMapOpts(
is_show=True,
pos_top="middle",
pos_left="right",
orient="vertical",
min_=0,
max_=holiday_flow['客流量'].max(),
range_color=["#ffde93", "#ffc107", "#ff9800"]
)
)
)
5.4 天气对客流量的影响
我们再看看不同天气情况下的客流量。
# 天气对客流量的影响
weather_flow = df.groupby('天气')['客流量'].mean().reset_index()
rose_weather = (
Pie(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000"))
.add("", [list(z) for z in zip(weather_flow["天气"], weather_flow["客流量"])], radius=[30, 110], center=["50%", "50%"], rosetype="area")
.set_global_opts(
title_opts=opts.TitleOpts(title="不同天气下的客流量", subtitle="单位:人"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
yaxis_opts=opts.AxisOpts(name="平均客流量"),
legend_opts=opts.LegendOpts(is_show=True,orient="vertical", pos_top="15%", pos_left="2%"),
visualmap_opts=opts.VisualMapOpts(
is_show=True,
pos_top="middle",
pos_left="right",
orient="vertical",
min_=0,
max_=weather_flow['客流量'].max(),
range_color=["#d0ff93", "#07f3ff", "#ff00d0"]
)
)
.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
)
5.5 特殊活动对客流量的影响
我们再看看特殊活动对客流量的影响。
# 特殊活动对客流量的影响
activity_flow = df.groupby('特殊活动')['客流量'].mean().reset_index()
bar_activity = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000"))
.add_xaxis(activity_flow['特殊活动'].tolist())
.add_yaxis("平均客流量", activity_flow['客流量'].round(2).tolist(), itemstyle_opts=opts.ItemStyleOpts(color="#ffde93"))
.set_global_opts(
title_opts=opts.TitleOpts(title="特殊活动对客流量的影响", subtitle="单位:人"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
yaxis_opts=opts.AxisOpts(name="平均客流量"),
visualmap_opts=opts.VisualMapOpts(
is_show=True,
pos_top="middle",
pos_left="right",
orient="vertical",
min_=0,
max_=activity_flow['客流量'].max(),
range_color=["#ff93ce", "#ff0755", "#ff0000"]
)
)
)
5.6 温度与客流量的关系
我们再看看温度对客流量的影响。
# 温度与客流量的关系
scatter_temp = (
Scatter(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000"))
.add_xaxis(range(min(df['最高温度'].tolist()),max(df['最高温度'].tolist()))
)
.add_yaxis("客流量", df['客流量'].tolist(), symbol_size=10)
.set_global_opts(
title_opts=opts.TitleOpts(title="温度与客流量的关系"),
xaxis_opts=opts.AxisOpts(name="最高温度 (℃)"),
yaxis_opts=opts.AxisOpts(name="客流量"),
visualmap_opts=opts.VisualMapOpts(
type_="size",
max_=df['客流量'].max(),
min_=0,
range_size=[5, 20],
range_color=["#ff93ce", "#ff0755", "#ff0000"]
)
)
)
5.7 月客流量趋势
我们再看看每月的客流量趋势。
# 月客流量趋势
df['月份'] = df['日期'].dt.month
monthly_flow = df.groupby('月份')['客流量'].mean().reset_index()
line_monthly = (
Line(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000"))
.add_xaxis(monthly_flow['月份'].tolist())
.add_yaxis("平均客流量", monthly_flow['客流量'].round(2).tolist(), is_smooth=True, linestyle_opts=opts.LineStyleOpts(width=2, curve=0.3))
.set_global_opts(
title_opts=opts.TitleOpts(title="每月客流量趋势", subtitle="单位:人"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
yaxis_opts=opts.AxisOpts(name="平均客流量"),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
visualmap_opts=opts.VisualMapOpts(
range_color=["#ff93ce", "#ff0755", "#ff0000"]
)
)
)
六、组合大屏
最后,我们将所有图表组合成一个炫酷的大屏。
# 组合大屏
page = Page(layout=Page.DraggablePageLayout)
page.add(bar_daily, bar_weekly, bar_holiday, rose_weather, bar_activity, scatter_temp, line_monthly)
page.render("shaolin_temple_dashboard.html")
print("✅ 已生成 shaolin_temple_dashboard.html")
七、分析总结
通过上述可视化分析,我们可以清晰地看到少林寺近一年的客流量变化规律:
- 节假日与非节假日:节假日的客流量明显高于非节假日。
- 天气影响:晴天的客流量最高,而暴雨等恶劣天气的客流量较低。
- 特殊活动:有特殊活动时,客流量显著增加。
- 温度与降雨量:温度适中且降雨量较少的天气,客流量较高。
这些分析结果为少林寺的运营提供了数据支持,有助于优化游客体验和管理资源。
希望这篇文章能帮助你更好地理解和分析少林寺的客流量数据。如果你有任何问题或建议,欢迎在评论区留言!🎉