按16:00-次日15:59自定义日周期排序推特时间数据的技术请求
调整推特数据统计周期适配纽交所交易时段的解决方案
我来帮你搞定这个统计周期调整的问题,适配纽交所16:00 UTC至次日15:59 UTC的时段其实很简单,核心思路是给时间戳做个偏移,让目标周期对齐到自然日的分组逻辑上。下面用Python的pandas工具来实现,步骤清晰易懂:
步骤1:加载数据并标准化时间格式
首先把你的CSV数据读入pandas,并确保Datetime_UTC字段被正确解析为datetime类型:
import pandas as pd # 读取数据(假设数据存在CSV文件中) df = pd.read_csv('your_twitter_data.csv', parse_dates=['Datetime_UTC'], infer_datetime_format=True)
步骤2:创建适配纽交所周期的分组日期
我们需要把每个UTC时间减去16小时,这样原时段16:00 UTC就会变成当天的00:00,原时段次日15:59 UTC会变成当天的23:59,刚好对应自然日的分组边界。生成一个新的Trade_Date字段来作为分组依据:
# 减去16小时,提取日期部分作为分组键 df['Trade_Date'] = (df['Datetime_UTC'] - pd.Timedelta(hours=16)).dt.date
举个例子验证:
- 原时间
2013-06-01 16:00:00+00:00减去16小时 →2013-06-01 00:00:00,Trade_Date为2013-06-01 - 原时间
2013-06-02 05:00:00+00:00减去16小时 →2013-06-01 13:00:00,Trade_Date仍为2013-06-01 - 原时间
2013-06-02 16:00:00+00:00减去16小时 →2013-06-02 00:00:00,Trade_Date变为2013-06-02
这样就完美把2013-06-01 16:00到2013-06-02 15:59的所有数据归到Trade_Date=2013-06-01的组里了。
步骤3:按企业和交易日期聚合统计
最后按照Company和Trade_Date分组,对Negative、Neutral、Positive、Volume做求和统计(如果需要其他统计方式,比如计数,替换成count()即可):
# 分组聚合 daily_stats = df.groupby(['Company', 'Trade_Date']).agg( Negative=('Negative', 'sum'), Neutral=('Neutral', 'sum'), Positive=('Positive', 'sum'), Volume=('Volume', 'sum') ).reset_index() # 查看结果 print(daily_stats.head())
这样得到的daily_stats就是你想要的、按纽交所交易时段统计的每日数据啦!
内容的提问来源于stack exchange,提问作者hacker1337ninja
相关产品推荐
相关产品推荐

