【数据可视化-76】从释永信被查,探索少林寺客流量深度分析:Python + Pyecharts 炫酷大屏可视化(含完整数据和代码)

发布于:2025-08-01 ⋅ 阅读:(16) ⋅ 点赞:(0)

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

一、引言

  少林寺作为中国著名的佛教圣地,每年吸引着大量的游客。近期,释永信被调查的事件引发了广泛关注。为了更好地理解少林寺的运营情况,我们对近一年的客流量数据进行了详细分析。本文将使用 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")

七、分析总结

  通过上述可视化分析,我们可以清晰地看到少林寺近一年的客流量变化规律:

  • 节假日与非节假日:节假日的客流量明显高于非节假日。
  • 天气影响:晴天的客流量最高,而暴雨等恶劣天气的客流量较低。
  • 特殊活动:有特殊活动时,客流量显著增加。
  • 温度与降雨量:温度适中且降雨量较少的天气,客流量较高。

  这些分析结果为少林寺的运营提供了数据支持,有助于优化游客体验和管理资源。

  希望这篇文章能帮助你更好地理解和分析少林寺的客流量数据。如果你有任何问题或建议,欢迎在评论区留言!🎉



网站公告

今日签到

点亮在社区的每一天
去签到