我的数据集:
时间戳温度
9/1/2016 0:00:08 53.8
9/1/2016 0:00:38 53.8
9/1/2016 0:01:08 53.8
9/1/2016 0:01:38 53.8
9/1/2016 0:02:08 53.8
9/1/2016 0:02:38 54.1
9/1/2016 0:03:08 54.1
9/1/2016 0:03:38 54.1
9/1/2016 0:04:38 54
9/1/2016 0:05:38 54
9/1/2016 0:06:08 54
9/1/2016 0:06:38 54
9/1/2016 0:07:08 54
9/1/2016 0:07:38 54
9/1/2016 0:08:08 54.1
9/1/2016 0:08:38 54.1
9/1/2016 0:09:38 54.1
9/1/2016 0:10:32 54
9/1/2016 0:11:02 54
9/1/2016 0:11:32 54
9/1/2016 0:00:08 54
9/2/2016 0:00:20 32
9/2/2016 0:00:50 32
2016年9月2日0:01:20 32
2016年9月2日0:01:50 32
2016年9月2日0:02:20 32
2016年9月2日0:02:50 32
2016年9月2日0:03:20 32
9/2/2016 0:03:50 32
2016年9月2日0:04:20 32
2016年9月2日0:04:50 32
2016年9月2日0:05:20 32
9/2/2016 0:05:50 32
2016年9月2日0:06:20 32
2016年9月2日0:06:50 32
from datetime import datetime
import pandas as pd
def same_day(date_string):
return datetime.strptime(date_string, "%m/%d/%Y %H:%M:%S").strftime('%m-%d')
df = pd.read_csv('dataset.csv', index_col=[0],parse_dates=[0], usecols=[0,1,2])
********calculate per day
print (df.index.strftime('%d%m%H'))
print (df.groupby([df.index.strftime('%d%m%H')]).mean())
这里,如何导出json数组Formate?
#****** exporting in CSV format
df.reset_index().to_csv('dataset.csv')
现在我想手动给DATE并且每天检查5小时和10分钟的平均值。就像那样......我们可以手动给出日期和时间吗?请帮帮忙?
表示例如: - 日期01-09-2016 10分钟平均线是36.08 日期02-09-2016 10分钟平均值为39.05
日期01-09-2016 5小时平均值是45.2 日期01-09-2016 5小时平均值是44.3
就像每个日期那样,不管我给出的日期和我给的任何时间......
使用以下代码,我可以找到不到2分钟的温度: -
import pandas as pd
df = pd.read_csv('dataset.csv', parse_dates=['Timestamp'])
#print (df)
mask = df.Timestamp.dt.minute < 2
df1 = df[mask]
df2 = df1.Timestamp.dt.date == pd.to_datetime('9/1/2016').date()
print (df2)
用于计算Mean(): -
df3 = df2.set_index('Timestamp', drop=False).resample('D').mean()
print (df3)
错误即将来临: -
AttributeError: 'Series' object has no attribute 'set_index'
答案 0 :(得分:0)
我根据您的示例数据创建了一个DataFrame(我将文件制表符分隔开来):
df = pd.read_csv('foo.csv',sep = '\t', header = 0,
parse_dates = [0], infer_datetime_format = True)
>>> df.head()
Timestamp Temperature
0 2016-09-01 00:00:08 53.8
1 2016-09-01 00:00:38 53.8
2 2016-09-01 00:01:08 53.8
3 2016-09-01 00:01:38 53.8
4 2016-09-01 00:02:08 53.8
>>>
然后我开始阅读Time Series/Date Functionality section of the docs,如果DataFrame索引是DateTime系列似乎更容易 - 我也注意到数据中有一些非连续的日期时间,所以我在设置索引后排序(有关于无序日期时间的文档中的警告:
df1 = df.set_index('Timestamp')
df1 = df1.sort_index()
>>> df1.head()
Temperature
Timestamp
2016-09-01 00:00:08 53.8
2016-09-01 00:00:08 54.0
2016-09-01 00:00:38 53.8
2016-09-01 00:01:08 53.8
2016-09-01 00:01:38 53.8
>>>
我没有太深入文档(在我阅读时练习示例),直到我偶然发现了一种过滤日期时间范围的方法:
>>> df1['2016-09-01 00:01:30' : '2016-09-01 00:03:15']
Temperature
Timestamp
2016-09-01 00:01:38 53.8
2016-09-01 00:02:08 53.8
2016-09-01 00:02:38 54.1
2016-09-01 00:03:08 54.1
>>>
这让它变得非常简单。您可以将结果分配给名称然后获得均值或立即得到均值:
>>> z = df1['2016-09-01 00:01:30' : '2016-09-01 00:03:15']
>>> z.mean()
Temperature 53.95
dtype: float64
>>> df1['2016-09-01 00:01:30' : '2016-09-01 00:03:15'].mean()
Temperature 53.95
dtype: float64
>>>
我停止阅读那里的文档,因为在手动输入日期/时间
的开始,结束或周围的任何时间段构建日期时间字符串应该非常容易公平地说,几个星期前,我厌倦了只是试图让熊猫做我想做的事情,所以我在pandas Talks page上观看了'Pardas From the Ground Up'的Pycon演讲。我甚至不看全部事情,但我所吸收的东西极大地提高了我的生产力。