Python 在时间戳中查找丢失的数据

Python 在时间戳中查找丢失的数据,python,csv,Python,Csv,我试图查看CSV文件,但我想确保所有数据都在那里。CSV时间为15分钟,格式为yyyy mm dd hh:mm。我收集了数据并做了时间戳。 lst=列表() 如下所示,CSV只是一个长长的数据列表。我真的很想每15分钟检查一次所有的数据,但我不知道如何准确地编码 “2015.12.09.19:45 123.251”、“2015.12.09.20:00 123.188”, '2015.12.09.20: 15123.192', '2015.12.09.20:30 123.242', '2015

我试图查看CSV文件,但我想确保所有数据都在那里。CSV时间为15分钟,格式为yyyy mm dd hh:mm。我收集了数据并做了时间戳。 lst=列表()

如下所示,CSV只是一个长长的数据列表。我真的很想每15分钟检查一次所有的数据,但我不知道如何准确地编码

“2015.12.09.19:45 123.251”、“2015.12.09.20:00 123.188”, '2015.12.09.20: 15123.192', '2015.12.09.20:30 123.242', '2015.12.09.20: 45123.166', .. 等等


您可以使用一个名为datetime的Python包。如果您以名为prev的datetime对象跟踪以前的条目time,并创建一个名为delt的timedelta 15分钟,那么您可以轻松地检查文件中的下一次(作为名为new_dt的datetime)是否具有prev+delt==new_dt。如果他们都这样做了,你就不会错过任何时间

有关datetime软件包的更多信息,请单击此处:

您可以使用一个名为datetime的Python包。如果您以名为prev的datetime对象跟踪以前的条目time,并创建一个名为delt的timedelta 15分钟,那么您可以轻松地检查文件中的下一次(作为名为new_dt的datetime)是否具有prev+delt==new_dt。如果他们都这样做了,你就不会错过任何时间

有关datetime软件包的更多信息,请单击此处:

您可能没有注意到该数据列表中的项目格式不一致。例如,
2015.12.09.19:45 123.251
中的日期和其他数据之间存在空白,但在
2015.12.09.20:45123.166
中,差距的位置不同。我想你会处理好的

我首先创建一个格式一致的数据项列表,类似于您的列表。虽然大多数日期间隔为15分钟,但我还是特意留出了一些时间间隔

>>> from datetime import timedelta
>>> interval = timedelta(minutes=15)
>>> from datetime import datetime
>>> current_time = datetime(2015,12,9,19,30)
>>> data = []
>>> omits = [3,5,9,11,17]
>>> for i in range(20):
...     current_time += interval
...     if i in omits:
...         continue
...     data.append(current_time.strftime('%y.%m.%d.%H:%M')+' 123.456')
...     
>>> data
['15.12.09.19:45 123.456', '15.12.09.20:00 123.456', '15.12.09.20:15 123.456', '15.12.09.20:45 123.456', '15.12.09.21:15 123.456', '15.12.09.21:30 123.456', '15.12.09.21:45 123.456', '15.12.09.22:15 123.456', '15.12.09.22:45 123.456', '15.12.09.23:00 123.456', '15.12.09.23:15 123.456', '15.12.09.23:30 123.456', '15.12.09.23:45 123.456', '15.12.10.00:15 123.456', '15.12.10.00:30 123.456']
现在我通读了日期,从中减去每一个。我将第一个“前置日期”设置为
previous
now
,因为它肯定与其他日期不同

我将列表中的每个数据分成两部分,忽略第二部分。使用
strtime
我将字符串转换为日期。可以减去日期并比较差异

>>> previous = datetime.now().strftime('%y.%m.%d.%H:%M')
>>> first = True
>>> for d in data:
...     date_part, other = d.split(' ')
...     if datetime.strptime(date_part, '%y.%m.%d.%H:%M') - datetime.strptime(previous, '%y.%m.%d.%H:%M') != interval:
...         if not first:
...             'unacceptable gap prior to ', date_part
...         else:
...             first = False
...     previous = date_part
...     
('unacceptable gap prior to ', '15.12.09.20:45')
('unacceptable gap prior to ', '15.12.09.21:15')
('unacceptable gap prior to ', '15.12.09.22:15')
('unacceptable gap prior to ', '15.12.09.22:45')
('unacceptable gap prior to ', '15.12.10.00:15')

您可能没有注意到该数据列表中的项的格式不一致。例如,
2015.12.09.19:45 123.251
中的日期和其他数据之间存在空白,但在
2015.12.09.20:45123.166
中,差距的位置不同。我想你会处理好的

我首先创建一个格式一致的数据项列表,类似于您的列表。虽然大多数日期间隔为15分钟,但我还是特意留出了一些时间间隔

>>> from datetime import timedelta
>>> interval = timedelta(minutes=15)
>>> from datetime import datetime
>>> current_time = datetime(2015,12,9,19,30)
>>> data = []
>>> omits = [3,5,9,11,17]
>>> for i in range(20):
...     current_time += interval
...     if i in omits:
...         continue
...     data.append(current_time.strftime('%y.%m.%d.%H:%M')+' 123.456')
...     
>>> data
['15.12.09.19:45 123.456', '15.12.09.20:00 123.456', '15.12.09.20:15 123.456', '15.12.09.20:45 123.456', '15.12.09.21:15 123.456', '15.12.09.21:30 123.456', '15.12.09.21:45 123.456', '15.12.09.22:15 123.456', '15.12.09.22:45 123.456', '15.12.09.23:00 123.456', '15.12.09.23:15 123.456', '15.12.09.23:30 123.456', '15.12.09.23:45 123.456', '15.12.10.00:15 123.456', '15.12.10.00:30 123.456']
现在我通读了日期,从中减去每一个。我将第一个“前置日期”设置为
previous
now
,因为它肯定与其他日期不同

我将列表中的每个数据分成两部分,忽略第二部分。使用
strtime
我将字符串转换为日期。可以减去日期并比较差异

>>> previous = datetime.now().strftime('%y.%m.%d.%H:%M')
>>> first = True
>>> for d in data:
...     date_part, other = d.split(' ')
...     if datetime.strptime(date_part, '%y.%m.%d.%H:%M') - datetime.strptime(previous, '%y.%m.%d.%H:%M') != interval:
...         if not first:
...             'unacceptable gap prior to ', date_part
...         else:
...             first = False
...     previous = date_part
...     
('unacceptable gap prior to ', '15.12.09.20:45')
('unacceptable gap prior to ', '15.12.09.21:15')
('unacceptable gap prior to ', '15.12.09.22:15')
('unacceptable gap prior to ', '15.12.09.22:45')
('unacceptable gap prior to ', '15.12.10.00:15')

我认为这不是一个好的做法,你自己的问题,不到24小时后,第一次张贴。此外,在新帖子中包括对你第一篇帖子的完整回答。 对于新读者来说,这感觉很混乱,对于回答你第一个问题的人来说,这有点不尊重

也就是说,您的处理速度可能会更快

将熊猫作为pd导入
#以数据帧的形式读取数据
data=pd.read_csv(“your_file.csv”),指向文件的路径
parse_dates=True,#自动分析字符串中的日期
推断_datetime_format=True)#可以加快速度
#计算时间增量
数据['delta']=pd.NaT#创建没有值的新列
对于df.iterrows()中的i,r:#迭代行
如果不是,我:
继续#跳过第一行
delta=df.ix[i,'date']-df.ix[i-1,'date']#计算时间delta
df.ix[i,'delta']=delta#将delta值指定给表
#并显示任何异常值
pd.where(df.delta!=pd.Timedelta('15分钟')).dropna()

请注意,我不确定您的CSV文件的格式,这可能需要额外的操作才能加载为
pd.Dataframe

我认为在第一篇文章发表后不到24小时,对您自己的问题来说这不是一个好的做法。此外,在新帖子中包括对你第一篇帖子的完整回答。 对于新读者来说,这感觉很混乱,对于回答你第一个问题的人来说,这有点不尊重

也就是说,您的处理速度可能会更快

将熊猫作为pd导入
#以数据帧的形式读取数据
data=pd.read_csv(“your_file.csv”),指向文件的路径
parse_dates=True,#自动分析字符串中的日期
推断_datetime_format=True)#可以加快速度
#计算时间增量
数据['delta']=pd.NaT#创建没有值的新列
对于df.iterrows()中的i,r:#迭代行
如果不是,我:
继续#跳过第一行
delta=df.ix[i,'date']-df.ix[i-1,'date']#计算时间delta
df.ix[i,'delta']=delta#将delta值指定给表
#并显示任何异常值
pd.where(df.delta!=pd.Timedelta('15分钟')).dropna()

请注意,我不确定您的CSV文件的格式,这可能需要额外的操作才能加载为
pd.Dataframe

您能解释时间戳的格式吗?您能解释时间戳的格式吗?