Python中的条件平均值

时间:2015-08-26 10:49:24

标签: python excel numpy xlrd

我在python中操作excel文件时遇到问题。 我有一个大的excel文件,其数据按日期/时间排列。 我希望能够在不同的日子里对一天中特定时间的数据进行平均分析;即。在1天内创建 gas_concentrations 的平均配置文件。

以下是我的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函数,就像这样 “当 decimal_of_day = x时,平均 gas_concentrations  但是我真的不知道该怎么做。目前我已经有了这个目标

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

修改 目前我通过将两个变量放入一个数组,然后使用我需要平均的变量来制作一个较小的数组来解决这个问题 - 效率有点但它有效!

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])

0 个答案:

没有答案