Python中的条件平均
我在用python操作excel文件时遇到问题。 我有一个很大的excel文件,其中包含按日期/时间排列的数据。 我希望能够平均一天中特定时间的数据,在所有不同的日子;即,创建一天内气体浓度的平均分布图 以下是我的excel文件示例: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
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)