pandas将时间列,分组聚合成间隔两个小时或者随意时间的间隔,统计个数

        Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。重新取样时间序列数据。

        方便的时间序列的频率转换和重采样方法。对象必须具有类似datetime的索引(DatetimeIndex、PeriodIndex或TimedeltaIndex),或将类似datetime的值传递给on或level关键字。

 

有关resample()的用法可参考:

Pandas中resample方法详解_风雪云侠的博客-CSDN博客_pandas resample

# coding=utf-8
import time
from pprint import pprint
import pandas as pd
import time

data_list = [
    {'name': "测试1", '__time__': '1663744601'},
    {'name': "测试2", '__time__': '1663746401'},
    {'name': "测试3", '__time__': '1663746881'},
    {'name': "测试4", '__time__': '1663754081'},
    {'name': "测试5", '__time__': '1663754321'},
    {'name': "测试6", '__time__': '1663755821'},
    {'name': "测试7", '__time__': '1663757621'},
    {'name': "测试8", '__time__': '1663761341'},
    {'name': "测试9", '__time__': '1663763561'},
    {'name': "测试10", '__time__': '1663772081'},
    {'name': "测试11", '__time__': '1663773161'},
    {'name': "测试12", '__time__': '1663775981'},
]
df = pd.DataFrame(data_list)
# pandas将时间戳字符串转换为格式化时间类型
df['__time__'] = pd.to_datetime(df['__time__'].apply(lambda x: time.strftime('%Y-%m-%d %H:%M', time.localtime(int(x)))))
# 按照__time__的降序对dataframe进行排序
df = df.sort_values(by='__time__')
# 给df加一列,值都为1
df['temp_num'] = 1
# 时间重新采样,并进行统计,重新设置索引,并只取,'__time__', 'temp_num',这两列
# 注意,rule='2H'是间隔两小时
df = df.resample(rule='2H', on='__time__').sum().reset_index()[['__time__', 'temp_num']]
df['__time__'] = df['__time__'].apply(lambda x: str(x))     # 将时间格式 转化成时间格式字符串
dic_data = df.to_dict(orient='records')
pprint(dic_data)

你可能感兴趣的:(Python进阶,pandas,pandas,python,数据分析)