You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python统计并绘制CSV中推文的5分钟时间间隔频率图

解决CSV时间序列推文统计与可视化问题

嗨,我来帮你搞定这个每5分钟推文数量统计和绘图的需求!咱们一步步来拆解实现:

1. 先把时间列转成带时区的datetime类型

首先读入CSV后,得把Time列从字符串转换成pandas能识别的带UTC时区的datetime对象——这是后续所有时间操作准确的基础:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读入CSV数据
tweets_df = pd.read_csv('valid_tweets.csv')

# 转换Time列为带UTC时区的datetime格式
tweets_df['Time'] = pd.to_datetime(tweets_df['Time'], utc=True)

2. 筛选你关注的两小时时间范围

假设你要分析的是2016-10-20 01:55:00+00:00到2016-10-20 03:55:00+00:00这个时间段,先把范围内的数据筛选出来,避免统计无关内容:

# 定义目标时间范围(注意要带UTC时区)
start_time = pd.to_datetime('2016-10-20 01:55:00', utc=True)
end_time = pd.to_datetime('2016-10-20 03:55:00', utc=True)

# 筛选出该时间范围内的推文
filtered_tweets = tweets_df[(tweets_df['Time'] >= start_time) & (tweets_df['Time'] <= end_time)]

3. 按5分钟间隔统计推文数量

这里提供两种适配你需求的方法,你可以根据习惯选择:

方法一:用resample(推荐,更贴合时间序列场景)

先把Time列设为索引,然后用resample按5分钟分组统计数量,代码更简洁:

# 按5分钟间隔统计推文数,'5T'等价于'5min',代表5分钟
tweet_counts = filtered_tweets.resample('5T', on='Time').size()

不用把Time设为索引的话,直接用on='Time'参数指定时间列即可,非常方便

方法二:结合你写的pd.date_range实现

如果你想直接用你之前定义的时间间隔序列,可以用pd.cut把时间分到对应的区间里:

# 生成你需要的5分钟时间间隔 bins
time_bins = pd.date_range(start='2016-10-20 01:55:00', end='2016-10-20 03:55:00', freq='5min', tz='UTC')

# 把每条推文的时间映射到对应的时间区间
filtered_tweets['Time_Bin'] = pd.cut(filtered_tweets['Time'], bins=time_bins)

# 统计每个区间的推文数,并按时间顺序排序
tweet_counts = filtered_tweets['Time_Bin'].value_counts().sort_index()

4. 绘制可视化图表

统计完成后,咱们把结果绘制成直观的图表,柱状图适合展示每个区间的数量对比,折线图更能体现时间趋势:

plt.figure(figsize=(12,6))
# 绘制柱状图
tweet_counts.plot(kind='bar', color='#1f77b4')
# 如果你更倾向折线图,替换成下面这行:
# tweet_counts.plot(kind='line', marker='o', color='#1f77b4')

plt.title('每5分钟推文数量统计(2小时时间范围)')
plt.xlabel('时间间隔')
plt.ylabel('推文条数')
plt.xticks(rotation=45, ha='right')  # 旋转x轴标签,避免重叠
plt.tight_layout()  # 自动调整布局,防止标签被截断
plt.show()

小提示

  • 一定要确保时间列的时区统一为UTC,避免时区转换导致的统计误差
  • 如果你的CSV数据量很大(18万行),resample方法的效率会比cut更高一些

内容的提问来源于stack exchange,提问作者Mona Jalal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:46:53