使用熊猫怎么根据日期做分组运算

  介绍

这篇文章将为大家详细讲解有关使用熊猫怎么根据日期做分组运算,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

原始数据

TS  PERIOD  REQUEST  STEPPED  VALUE  STATUS 秒   20-DEC-16  00:00:00.0  600, 1, 0,, 2.018, 0, 1482163200   20-DEC-16  00:01:00.0  600, 1, 0,, 2.019, 0, 1482163260   20-DEC-16  00:02:00.0  600, 1, 0,, 2.019, 0, 1482163320   20-DEC-16  00:03:00.0  600, 1, 0,, 2.019, 0, 1482163380   20-DEC-16  00:04:00.0  600, 1, 0,, 2.019, 0, 1482163440   20-DEC-16  00:05:00.0  600, 1, 0,, 2.020, 0, 1482163500   20-DEC-16  00:06:00.0  600, 1, 0,, 2.020, 0, 1482163560

我们的目标是把TS列从

20-DEC-16  00:00:00.0

转变为

 20-DEC-16 

的格式,然后按天取均值。

导入包

import  numpy  as  np   得到pandas  import  DataFrame系列   import  pandas  as  pd   得到datetime  import  datetime

读入文件

df =, pd.read_csv(& # 39;数据/用法# 39;,9=& # 39;\ t # 39;)

这里没有解决中文路径名和绝对路径的问题。

转化为数据框

df =, DataFrame (df)

转化为时间格式

将TS列转化为时间格式,并保存为新的一列日期,之后,只留下日期和价值两列,其他统统不要。

df(& # 39;日期# 39;],=,pd.to_datetime (df (& # 39; TS # 39;])   df =, df[[& # 39;日期# 39;& # 39;价值# 39;]]

关键一步

把形如“2017-9-4就是# 39;转化”为2017-9-4 & # 39;

df(& # 39;日期# 39;],=,(datetime.strftime (x, & # 39; Y - % - % d % # 39;), for  x 拷贝df(& # 39;日期# 39;]]

strftime有若干参数,其中Y表示四位数的年,米表示两位数的月。

旋转数据框

df =df.pivot_table(指数=& # 39;日期# 39;,aggfunc=& # 39;意味着# 39;)

<强>补充:利用熊猫和Numpy按时间戳将数据以Groupby方式分组

首先说一下需求,我需要将数据以分钟为单位进行分组,然后每一分钟内的数据作为一行输出,因为不同时间的数据量不一样,所以所有数据按照最长的那组数据为准,不足的数据以各自的最后一个数据进行补足。

之后要介绍一下我的数据,源之前没用的数据列已经去除,我只留下要用到的数据数据列和时间时间戳列,时间戳是以秒计的,可以看到一共是407454行。

,, data ,,时间   0,6522.50,1.530668 e + 09年   1,6522.66,1.530668 e + 09年   2,6523.79,1.530668 e + 09年   3,6523.79,1.530668 e + 09年   4,6524.82,1.530668 e + 09年   5,6524.35,1.530668 e + 09年   6,6523.66,1.530668 e + 09年   7,6522.64,1.530668 e + 09年   8,6523.25,1.530668 e + 09年   9日,6523.88,1.530668 e + 09年   10,6525.30,1.530668 e + 09年   11日,6525.70,1.530668 e + 09年   ,,,,,,,,…   407443,6310.69,1.531302 e + 09年   407444,6310.55,1.531302 e + 09年   407445,6310.42,1.531302 e + 09年   407446,6310.40,1.531302 e + 09年   407447,6314.03,1.531302 e + 09年   407448,6314.04,1.531302 e + 09年   407449,6312.84,1.531302 e + 09年   407450,6312.57,1.531302 e + 09年   407451,6312.56,1.531302 e + 09年   407452,6314.04,1.531302 e + 09年   407453,6314.04,1.531302 e + 09年   ,   (407454,rows  x  2,列)

开始进行数据处理,定义一个函数、输入为一个DataFrame和时间列的命名。

def  getdata_time (DataFrame、名称):   ,dataframe[名字],=,dataframe[名字]/60,#将时间转换为分钟   ,dataframe[名字],=,dataframe[名字].astype (& # 39; int64& # 39;),=,,datalen  dataframe.groupby(名字).count () .max(),, #获取数据最大长度,=,,timeframe  dataframe.groupby(名字).count () .reset_index() #为了获取时间将分组后时间转换为DataFrame=,timeseries 拖延时间(& # 39;时间# 39;),=,array [],, #建立一个空数组以便存值      ,for 时间,group 拷贝dataframe.groupby(名称):,=,,tmparray  numpy.array(集团[& # 39;数据# 39;]),#将系列转换为数组并添加到总数组中   ,array.append (tmparray),=,,notimedata  pandas.DataFrame(数组)=,,notimedata  notimedata.fillna(方法=& # 39;ffill& # 39;, axis =, 1,限制=datalen[0]), #将缺失值补全   ,notimedata [datalen [0] + 1],=, timeseries  #把时间添加到最后一列,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用熊猫怎么根据日期做分组运算