Python基础实战:使用Pandas实现泰山游客数量统计

56 阅读3分钟

上一篇文章我们利用numpy实现了泰山游客数量模拟统计,今天将使用另一种方法:pandas来实现。

一、分析目标

利用 Python Pandas 库读取泰山景区游客数据,完成基础统计分析(如日均游客量、月度峰值、客流趋势等),快速呈现景区客流特征。

二、实现代码

import pandas as pd
import matplotlib.pyplot as plt

# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 1. 构造/读取泰山游客数据(实际使用时可替换为CSV文件路径)
data = {
    '日期': pd.date_range(start='2024-01-01', end='2024-12-31', freq='D'),
    '游客数量': [
        3200, 2800, 2500, 4100, 5800, 8500, 9200, 7600, 6300, 3800, 3100, 2900,
        4500, 5200, 6800, 9500, 12000, 15000, 14200, 11800, 8300, 5600, 4800, 4200,
        # 省略中间341天数据(实际使用时建议读取完整数据)
        6800, 7500, 9200, 11000, 13500, 12800, 10500, 8200, 6300, 5100, 4300, 3900
    ]
}
df = pd.DataFrame(data)

# 2. 数据预处理(添加年月列用于分组统计)
df['年份'] = df['日期'].dt.year
df['月份'] = df['日期'].dt.month
df['月份名称'] = df['日期'].dt.strftime('%m月')

# 3. 基础统计分析
print("=== 泰山景区2024年游客数量基础统计 ===")
print(f"总游客量:{df['游客数量'].sum():,} 人次")
print(f"日均游客量:{df['游客数量'].mean():.0f} 人次")
print(f"单日最高客流:{df['游客数量'].max():,} 人次(日期:{df.loc[df['游客数量'].idxmax(), '日期'].strftime('%Y-%m-%d')})")
print(f"单日最低客流:{df['游客数量'].min():,} 人次(日期:{df.loc[df['游客数量'].idxmin(), '日期'].strftime('%Y-%m-%d')})")

# 4. 月度客流统计
monthly_stats = df.groupby('月份名称')['游客数量'].agg(['sum', 'mean']).round(0)
monthly_stats.columns = ['月度总客流', '月度日均客流']
print("\n=== 月度客流统计 ===")
print(monthly_stats)

# 5. 可视化展示(月度日均客流趋势)
plt.figure(figsize=(10, 5))
plt.plot(monthly_stats.index, monthly_stats['月度日均客流'], marker='o', linewidth=2, color='#1f77b4')
plt.title('泰山景区2024年月度日均游客量趋势', fontsize=14)
plt.xlabel('月份', fontsize=12)
plt.ylabel('日均游客数量(人次)', fontsize=12)
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()

三、代码说明

  1. 数据准备:手动构造 2024 年全年日期和游客数量数据(实际应用中可通过pd.read_csv('泰山游客数据.csv')读取真实数据)。
  2. 数据预处理:提取年份、月份信息,为分组统计做准备。
  3. 核心统计:计算总客流、日均客流、单日极值,以及月度汇总统计,快速获取关键指标。
  4. 可视化:用折线图展示月度日均客流趋势,直观呈现客流波动(如节假日高峰、淡季特征)。

四、运行结果说明

  • 控制台输出总客流、日均客流、极值日期及月度统计表格。
  • 生成月度客流趋势图,可快速识别泰山景区客流高峰月份(如 5 月、10 月)和淡季时段,为景区管理、运力调配提供数据支持。