Python中的条件平均

Python中的条件平均,python,excel,numpy,xlrd,Python,Excel,Numpy,Xlrd,我在用python操作excel文件时遇到问题。 我有一个很大的excel文件,其中包含按日期/时间排列的数据。 我希望能够平均一天中特定时间的数据,在所有不同的日子;即,创建一天内气体浓度的平均分布图 以下是我的excel文件示例: Decimal Day of year Decimal of day Gas concentration 133.6285 0.6285 46.51230 133.6493

我在用python操作excel文件时遇到问题。 我有一个很大的excel文件,其中包含按日期/时间排列的数据。 我希望能够平均一天中特定时间的数据,在所有不同的日子;即,创建一天内气体浓度的平均分布图

以下是我的excel文件示例:

Decimal Day of year     Decimal of day      Gas concentration   
133.6285                    0.6285           46.51230   
133.6493                    0.6493           47.32553   
133.6701                    0.6701           49.88705   
133.691                     0.691            51.88382   
133.7118                    0.7118           49.524 
133.7326                    0.7326           50.37112   
基本上我需要一个函数,比如excel中的AVERAGEIF函数,它会说 “当天的小数=x时,平均气体浓度” 但是我真的不知道怎么做。目前我已经走到了这一步

import xlrd
import numpy as np

book= xlrd.open_workbook('TEST.xlsx')
level_1=book.sheet_by_index(0)

time_1=level_1.col_values(0, start_rowx=1, end_rowx=1088)
dectime_1=level_1.col_values(8, start_rowx=1, end_rowx=1088)
ozone_1=level_1.col_values(2, start_rowx=1, end_rowx=1088)
ozone_1 = [float(i) if i != 'NA' else 'NaN' for i in ozone_1]
编辑

我更新了脚本以包含以下内容

ozone=np.array(ozone_1, float)
time=np.array(dectime_1)
a=np.column_stack((ozone, time))
b=np.where((a[:,0]<0.0035))
print b
臭氧=np.阵列(臭氧_1,浮动) 时间=np.数组(dectime_1) a=np.柱状物组((臭氧,时间)) b=np。其中((a[:,0)]可以使用

将numpy导入为np
数据1=np.ma.arange(10)
data_1=np.ma.masked_其中(,data_1)
数据平均值=np.平均值(数据1)

希望这对您有所帮助

您的数据格式是什么?您是直接读取excel文件还是将其转换为csv格式?它在excel中-我不希望将其作为csv,因为我在文件中有5张其他相应的表格。在这种情况下,我相信最困难的部分是读取/写入excel文件,而不是计算平均值。我没有这方面的经验,但你可以像我已经在使用xlrd一样查看软件包,这很好-但我坚持使用条件平均值。你可以发布你已经拥有的代码:你是否设法获得单元格的内容?匹配同一行的单元格?提取所有你想要的单元格平均值?你可能应该在你的问题中加入你用xlrd取得的成绩。越来越近了,但我不确定如何实现我的条件。目前我输入:
data\u 1=np.ma.array(ozone\u 1,float)data\u 2=np.ma.array(dectime_1,float)data_1=np.ma.masked_其中(data_2)在我看来,该实现实际上相当正常。在应用该条件后,您是否检查了
data_1
中是否存在任何NaN?我想我通过应用nammean而不是正常平均数来消除NaN
ozone=np.array(ozone_1, float)
time=np.array(dectime_1)
a=np.column_stack((ozone, time))
b=a[a[:,1]<0.0036]
c=np.nanmean(b[:,0])
import numpy as np

data_1 = np.ma.arange(10)
data_1 = np.ma.masked_where(<your if statement>, data_1)

data_1_mean = np.mean(data1)