一、研究猜想提出 基于社交媒体用户行为特征与发布时间的关联性,提出以下两个核心猜想: 1. **猜想1**:社交媒体用户活跃度在晚间时段(18:00-23:00)显著高于日间时段(08:00-17:00),晚间时段的平均发布量/互动量是日间的1.5倍以上; 2. 猜想2:工作日与周末的用户活跃度峰值时段存在差异——工作日峰值集中在20:00-22:00,周末峰值提前至15:00-19:00。 二、数据集来源与说明 选用公开可获取的社交媒体用户行为数据集(Kaggle平台): - 数据集链接:https://www.kaggle.com/datasets/gauravduttakiit/social-media-user-activity - 核心字段:`post_time`(发布时间,格式:YYYY-MM-DD HH:MM:SS)、`user_id`(用户ID)、`interactions`(互动量,含点赞/评论/转发)。 三、Python代码实现分析与验证 步骤1:环境配置与数据加载 ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt from datetime import datetime # 设置中文字体(避免图表中文乱码) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 加载数据集(需先下载至本地,替换为实际文件路径) df = pd.read_csv('social_media_activity.csv') # 数据预处理:转换时间格式,提取关键时间特征 df['post_time'] = pd.to_datetime(df['post_time']) df['hour'] = df['post_time'].dt.hour # 提取小时 df['day_of_week'] = df['post_time'].dt.dayofweek # 提取星期(0=周一,6=周日) # 标记工作日/周末:0-4为工作日,5-6为周末 df['is_weekend'] = df['day_of_week'].apply(lambda x: 1 if x >= 5 else 0) # 标记日间/晚间:08:00-17:00为日间,18:00-23:00为晚间,其余时段剔除 df['time_period'] = df['hour'].apply( lambda x: '日间' if 8 <= x <= 17 else ('晚间' if 18 <= x <= 23 else '其他') ) # 剔除非核心时段数据 df = df[df['time_period'].isin(['日间', '晚间'])] # 查看数据基本信息 print("数据预处理后基本信息:") print(df.info()) print("\n数据前5行:") print(df.head()) ``` #### 步骤2:验证猜想1(晚间vs日间活跃度对比) ```python # 计算日间/晚间的核心活跃度指标:平均发布量(按小时)、平均互动量 # 1. 按时段分组统计发布量(每条记录为1条发布) period_post_count = df.groupby('time_period')['user_id'].count() # 按时段分组统计平均互动量 period_interaction_mean = df.groupby('time_period')['interactions'].mean() # 计算晚间/日间发布量倍数、互动量倍数 post_multiple = period_post_count['晚间'] / period_post_count['日间'] interaction_multiple = period_interaction_mean['晚间'] / period_interaction_mean['日间'] # 输出统计结果 print("\n=== 猜想1验证结果 ===") print(f"日间发布量:{period_post_count['日间']},晚间发布量:{period_post_count['晚间']}") print(f"晚间发布量是日间的 {post_multiple:.2f} 倍") print(f"\n日间平均互动量:{period_interaction_mean['日间']:.2f},晚间平均互动量:{period_interaction_mean['晚间']:.2f}") print(f"晚间平均互动量是日间的 {interaction_multiple:.2f} 倍") # 可视化:日间vs晚间活跃度对比 fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5)) # 发布量对比 period_post_count.plot(kind='bar', ax=ax1, color=['#4287f5', '#f5a642']) ax1.set_title('日间vs晚间发布量对比') ax1.set_xlabel('时段') ax1.set_ylabel('发布总量') ax1.grid(axis='y', alpha=0.3) # 平均互动量对比 period_interaction_mean.plot(kind='bar', ax=ax2, color=['#4287f5', '#f5a642']) ax2.set_title('日间vs晚间平均互动量对比') ax2.set_xlabel('时段') ax2.set_ylabel('平均互动量') ax2.grid(axis='y', alpha=0.3) plt.tight_layout() plt.savefig('猜想1验证.png', dpi=300) plt.show() # 猜想1结论判断 if post_multiple >= 1.5 and interaction_multiple >= 1.5: print("\n猜想1验证结论:成立(晚间活跃度显著高于日间,倍数≥1.5)") else: print(f"\n猜想1验证结论:不成立(晚间发布量倍数为{post_multiple:.2f},互动量倍数为{interaction_multiple:.2f})") ``` #### 步骤3:验证猜想2(工作日vs周末峰值时段对比) ```python # 按「是否周末+小时」分组,统计发布量(核心活跃度指标) weekend_hour_post = df.groupby(['is_weekend', 'hour'])['user_id'].count().reset_index() # 拆分工作日/周末数据 workday_data = weekend_hour_post[weekend_hour_post['is_weekend'] == 0] weekend_data = weekend_hour_post[weekend_hour_post['is_weekend'] == 1] # 找到工作日/周末发布量峰值小时 workday_peak_hour = workday_data.loc[workday_data['user_id'].idxmax(), 'hour'] weekend_peak_hour = weekend_data.loc[weekend_data['user_id'].idxmax(), 'hour'] # 输出峰值时段结果 print("\n=== 猜想2验证结果 ===") print(f"工作日发布量峰值小时:{workday_peak_hour}点") print(f"周末发布量峰值小时:{weekend_peak_hour}点") # 可视化:工作日vs周末各小时发布量趋势 plt.figure(figsize=(10, 6)) # 绘制工作日趋势 plt.plot(workday_data['hour'], workday_data['user_id'], marker='o', label='工作日', color='#4287f5', linewidth=2) # 绘制周末趋势 plt.plot(weekend_data['hour'], weekend_data['user_id'], marker='s', label='周末', color='#f54287', linewidth=2) # 标注峰值点 plt.scatter(workday_peak_hour, workday_data[workday_data['hour']==workday_peak_hour]['user_id'].values[0], color='#4287f5', s=100, label=f'工作日峰值:{workday_peak_hour}点') plt.scatter(weekend_peak_hour, weekend_data[weekend_data['hour']==weekend_peak_hour]['user_id'].values[0], color='#f54287', s=100, label=f'周末峰值:{weekend_peak_hour}点') # 图表样式设置 plt.title('工作日vs周末各小时发布量趋势') plt.xlabel('小时') plt.ylabel('发布量') plt.xticks(range(8, 24)) # 仅显示核心时段(8-23点) plt.grid(alpha=0.3) plt.legend() plt.tight_layout() plt.savefig('猜想2验证.png', dpi=300) plt.show() # 猜想2结论判断 workday_peak_range = 20 <= workday_peak_hour <= 22 # 工作日峰值是否在20-22点 weekend_peak_range = 15 <= weekend_peak_hour <= 19 # 周末峰值是否在15-19点 if workday_peak_range and weekend_peak_range: print("\n猜想2验证结论:成立(工作日峰值在20-22点,周末峰值在15-19点)") else: print(f"\n猜想2验证结论:不成立(工作日峰值为{workday_peak_hour}点,周末峰值为{weekend_peak_hour}点)") ``` ### 四、结果解读与拓展说明 1. **数据适配性**:若下载的数据集字段名称/格式不同,需调整代码中`post_time`/`interactions`等字段名;若数据量过小(<1000条),可补充Kaggle其他社交媒体行为数据集(如https://www.kaggle.com/datasets/mashlyn/instagram-reach-data)。 2. **统计优化**:可增加「显著性检验」(如t检验)验证时段差异是否具有统计学意义,代码可补充: ```python from scipy import stats # 验证日间/晚间互动量差异是否显著 day_interaction = df[df['time_period']=='日间']['interactions'] night_interaction = df[df['time_period']=='晚间']['interactions'] t_stat, p_value = stats.ttest_ind(night_interaction, day_interaction) print(f"\n日间/晚间互动量t检验结果:t={t_stat:.2f},p值={p_value:.4f}") print("差异显著" if p_value < 0.05 else "差异不显著") ``` 3. **业务价值**:验证结果可指导社交媒体内容运营——如工作日20-22点、周末15-19点发布核心内容,提升曝光与互动效率。 五、预期输出 1. 文本输出:两个猜想的「成立/不成立」结论、关键倍数/峰值时段数值; 2. 可视化输出:2张图表(日间vs晚间对比、工作日vs周末小时趋势); 3. 统计补充:可选t检验结果,验证差异的显著性。
社交媒体用户行为特征与发布时间的关联性
张小明
前端开发工程师
GifCam 不只能录 GIF!教你导出 AVI 再转 MP4 的完整流程
GifCam 是一款轻量、免费且无需安装的屏幕录制小工具,最初以录制 GIF 动画而闻名。但很多人不知道的是,它其实也能用来录制视频(如 AVI 格式),再通过格式转换生成 MP4 文件,非常适合制作简短的操作演示或软…
React-chartjs-2 数据集管理:3个关键问题与解决方案
React-chartjs-2 数据集管理:3个关键问题与解决方案 【免费下载链接】react-chartjs-2 React components for Chart.js, the most popular charting library 项目地址: https://gitcode.com/gh_mirrors/re/react-chartjs-2 React-chartjs-2 是Chart.js最流行…
从零开始掌握Quartus II八位移位寄存器设计与仿真
从零开始掌握Quartus II八位移位寄存器设计与仿真 【免费下载链接】QuartusII八位移位寄存器仿真文件 本资源文件包含了一个在Quartus II软件中制作的八位移位寄存器电路设计。该电路设计使用了74ls74触发器,并通过Quartus II的电路仿真功能进行了仿真。通过波形仿真…
微信小程序任务管理终极指南:3分钟打造你的专属待办清单
微信小程序任务管理终极指南:3分钟打造你的专属待办清单 【免费下载链接】weapp-todos 一个简单的任务清单小程序, awesome weapp demo, todos, todolist 项目地址: https://gitcode.com/gh_mirrors/we/weapp-todos 还在为繁杂的日常任务感到焦虑吗ÿ…
Python LangChain 开发问题:TypeError: “Could not resolve authentication method. Expected either api_key
from langchain.agents import create_agentdef get_weather(city: str) -> str:"""获取指定城市的天气"""return f"{city} 天气总是晴朗!"agent create_agent(model"anthropic:claude-sonnet-4-5",tools[ge…
KeyCastr终极指南:快速掌握macOS按键可视化技巧
KeyCastr终极指南:快速掌握macOS按键可视化技巧 【免费下载链接】keycastr KeyCastr, an open-source keystroke visualizer 项目地址: https://gitcode.com/gh_mirrors/ke/keycastr 在屏幕录制、技术演示或在线教学场景中,你是否曾苦恼观众无法看…