Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何删除熊猫(.resample)计算的一些每周平均值?_Python_Pandas_Mean_Resampling - Fatal编程技术网

Python 如何删除熊猫(.resample)计算的一些每周平均值?

Python 如何删除熊猫(.resample)计算的一些每周平均值?,python,pandas,mean,resampling,Python,Pandas,Mean,Resampling,我有一个数据集,需要计算每日平均值和每周平均值。我知道这可以由熊猫来完成。以下是我到目前为止拥有的数据和代码 date T1 T2 T3 12/17/13 00:28:38 19 23.1 7.3 12/17/13 00:58:38 19 22.9 7.3 12/17/13 01:28:38 18.9 22.8 6.3 12/17/13 01:58:38 18.9 23.1

我有一个数据集,需要计算每日平均值和每周平均值。我知道这可以由熊猫来完成。以下是我到目前为止拥有的数据和代码

date                T1      T2      T3
12/17/13 00:28:38   19      23.1    7.3
12/17/13 00:58:38   19      22.9    7.3
12/17/13 01:28:38   18.9    22.8    6.3
12/17/13 01:58:38   18.9    23.1    6.3
12/17/13 02:28:38   18.8    23      6.3
12/17/13 02:58:38   18.8    22.9    6.3
.......
12/18/13 00:28:07   19.5    22.4    5.3
12/18/13 00:58:08   19.4    22.3    5.3
12/18/13 01:28:07   19.4    22.1    5.3
.......
3/22/14 16:55:18    17.7    20.6    10.1
3/22/14 17:08:31    17.7    20.6    10.1
3/22/14 17:26:04    17.6    20.5    8
3/22/14 17:56:04    17.7    20.5    7
到目前为止,我掌握的密码是

import pandas as pd
Temp=pd.read_csv("Book1.csv",parse_dates=['date'])  
Temp=Temp.set_index('date')
In [25]: Temp_plot.head()
Temp_plot=Temp.resample('W',how='mean')
Temp_plot.head()
Out[25]:
T1  T2  T3
date            
2013-12-22  18.740345   35.055517   7.532414
2013-12-29  14.501770   14.950442   6.497935
2014-01-05  13.135207   14.064793   7.795858
2014-01-12  17.296154   38.503550   7.827219
2014-01-19  18.217699   38.892625   6.952212
现在的问题是,我必须删除一些每周平均值,这些值是假日,不应包含在结果平均值中。我是否应该有一个列表,其中包含不应包含的日期,然后比较Temp_图中的值

编辑 我已经添加了一个列表
Wase=[“2013-12-22”,“2014-01-05”]
,如评论中所建议,并使用了
Temp\u plot1=Temp\u plot.drop(Wase)
,现在我得到了任何错误,即axis中不包含
ValueError:labels['2013-12-22''2014-01-05']。

知道如何删除这个错误吗?因为我必须删除列表中包含日期的行

您需要使用
dt.date(年、月、日)
创建假日日历。然后使用列表理解结构从索引中筛选假期,如下所示。最后,您可以使用
.ix
选择这些过滤后的日期,它根据索引值从数据框中选择数据

import datetime as dt

holidays = [dt.date(2015, 12, 25), ...] 
idx = [timestamp for timestamp in Temp.index if timestamp.date() not in holidays]
Temp_plot = Temp.ix[idx].resample('W', how='mean')

您需要使用
dt.date(年、月、日)
创建假日日历。然后使用列表理解结构从索引中筛选假期,如下所示。最后,您可以使用
.ix
选择这些过滤后的日期,它根据索引值从数据框中选择数据

import datetime as dt

holidays = [dt.date(2015, 12, 25), ...] 
idx = [timestamp for timestamp in Temp.index if timestamp.date() not in holidays]
Temp_plot = Temp.ix[idx].resample('W', how='mean')

如果您有一个要排除的日期容器(例如,
列表
),比如说,
不需要的日期
,您只需执行
Temp\u plot.drop(不需要的日期)
。注意:这将返回一个排除了所需日期的视图,实际上不会改变
Temp\u plot
。要永久删除它们,请执行
Temp\u plot=Temp\u plot.drop(不需要的日期)
Temp\u plot.drop(不需要的日期,inplace=True)
@JoeCondron我曾尝试过这样做,但给出了一个错误
ValueError:axis中不包含标签['2013-12-22''2014-01-05']。你知道为什么会发生这种情况吗?如果你的数据在假期中没有任何观察结果,那么它们无论如何都不包括在平均值中。如果您的数据中确实有假日,则应在重新采样之前将其删除。此外,您可以在读取csv文件时设置索引:
pd.read\u csv(“Book1.csv”,parse\u dates=['date'],index\u col='date')
@Alexander数据确实包含假日,应将假日从数据中删除。如果我必须在重新采样之前删除它,那么将有这么多行,这将很困难。我不能按照@JoeCondron的建议删除它们吗?如果您有一个容器(例如,
列表
),其中包含要排除的日期,比如说,
不需要的日期
,您可以执行
临时绘图。删除(不需要的日期)
。注意:这将返回一个排除了所需日期的视图,实际上不会改变
Temp\u plot
。要永久删除它们,请执行
Temp\u plot=Temp\u plot.drop(不需要的日期)
Temp\u plot.drop(不需要的日期,inplace=True)
@JoeCondron我曾尝试过这样做,但给出了一个错误
ValueError:axis中不包含标签['2013-12-22''2014-01-05']。你知道为什么会发生这种情况吗?如果你的数据在假期中没有任何观察结果,那么它们无论如何都不包括在平均值中。如果您的数据中确实有假日,则应在重新采样之前将其删除。此外,您可以在读取csv文件时设置索引:
pd.read\u csv(“Book1.csv”,parse\u dates=['date'],index\u col='date')
@Alexander数据确实包含假日,应将假日从数据中删除。如果我必须在重新采样之前删除它,那么将有这么多行,这将很困难。我不能按照@JoeCondron的建议把它们扔掉吗?谢谢你的时间,但它不起作用。我已经添加了
holidays=[dt.date(2013,12,17),(2013,12,18),(2013,12,19),(2013,12,20),(2013,12,21),(2013,12,22)]
Temp=Temp.set_index('date')
和您的
idx=…
Temp_plot=…
一样的行,但它给出的结果与之前相同,这意味着假期不会被删除。我也试着每天取样,然后每周取样,但这不会给我任何不同的结果。谢谢你的帮助。因为。。。?错误是什么。我猜是你约会的方式。什么是
类型(Temp.index.iat[0])
?文件中的日期格式为12/17/13 00:28:38 M/D/Y和HH:MM:YY。没有错误。我必须将其更改为2013-12-22吗?您需要为假期中的每个日期指定日期(…)。或者您可以这样做:
holidays=[dt.date(d[0],d[1],d[2]),用于[(2013,12,18),(2013,12,19),(2013,12,20),(2013,12,21),(2013,12,22)]
。另外,我使用您的示例数据尝试了代码,它对我有效。谢谢您的时间,但它不起作用。我已经添加了
holidays=[dt.date(2013,12,17),(2013,12,18),(2013,12,19),(2013,12,20),(2013,12,21),(2013,12,22)]
Temp=Temp.set_index('date')
和您的
idx=…
Temp_plot=…
一样的行,但它给出的结果与之前相同,这意味着假期不会被删除。我也试着每天取样,然后每周取样,但这不会给我任何不同的结果。谢谢你的帮助。因为。。。?错误是什么。我猜是你约会的方式。什么是
类型(Temp.index.iat[0])
?文件中的日期格式为12/17/13 00:28:38 M/D/Y和HH:MM:YY。没有错误。我必须将其更改为2013-12-22吗?您需要为假期中的每个日期指定日期(…)。或者您可以这样做:
holidays=[dt.date(d[0],d[1],d[2]),用于[(2013,12,18),(2013,12,19),(2013,12,20),(2013,12,21),(2013,12,22)]
。此外,我还尝试了u代码