我正在编写一个用于数据分析的程序。为了对结果进行分组,我编写了以下功能:
def prepare_data(sample_list, group_option):
if group_option == None:
group_parameter = None
elif group_option == 'sample':
group_parameter = sample_parameters.sample
elif group_option == 'parameter':
group_parameter = (sample_parameters.speed, sample_parameters.gap, sample_parameters.temperature, sample_parameters.volume)
此功能确定如何对我的不同样本进行分组以供以后计算。这应该是输入有关分组的唯一位置。
def group_data(sample_list, group_parameter):
query = session.query(sample_measurements_raw.data, group_parameter).filter(sample_parameters.idsample_parameters == sample_measurements_raw.sample_id).filter(sample_parameters.useless == 0).filter(sample_parameters.sample.in_(sample_list)).group_by(group_parameter)
data_table = pandas.DataFrame()
for row in query:
data_table = pandas.concat([data_table, (calculate_data(sample_list, row.keys))[-1:-2]], axis = 'columns', join = 'outer')
return data_table
此函数获取示例列表和组参数(由orm.attributes组成)。它在该列表中搜索具有相同参数的样本并将其分组。然后,它将遍历传递给另一个函数的所有唯一参数集:
def calculate_data(sample_list, parameter):
query = session.query(sample_measurements_raw.data).filter(sample_parameters.idsample_parameters == sample_measurements_raw.sample_id).filter(sample_parameters.useless == 0).filter(sample_parameters.sample.in_(sample_list)).filter(parameter)
data_table = pandas.DataFrame()
for row in query:
data_table = pandas.concat([data_table, pandas.read_json(row.data, orient = 'split').set_index('nm').rename(columns = {" %T": parameter})], axis = 'columns', join = 'outer')
data_table[parameter + '_mean'] = data_table.mean(axis = 1)
data_table[parameter + '_std'] = data_table[data_table.columns[0:-1]].std(axis = 1)
return data_table
问题开始了。该函数应获取唯一组的参数,并执行过滤器以获取与该组的确切参数匹配的所有数据。请记住,提供的参数数量可以更改。
问题:
如何过滤从group_data
获得的那些参数?
我希望我的问题是可以理解的,并感谢您的帮助!
编辑:
一个具体的例子是:
开头的列表如下所示: table
表仍在扩展,因此我想在第一个函数中编辑group_parameter
。其他一切都应从中得出。
group_parameter
分组数据并创建列表。该列表由带有成员语句的row
对象组成(例如row.speed
,row.gap
)。语句的编号和名称取决于group_parameters
。 .filter(sample_parameters.speed == row.speed, sample_parameters.gap == row.gap)
问题:
如何从该列表中获取任意参数集(例如sample_parameters.speed
,sample_parameters.gap
...),并在下一个查询中按它们进行过滤?
答案 0 :(得分:0)
如果我正确理解了您的问题,则说明您提供的功能不是问题,但第二功能的输入格式需要进行预处理。因此,概括一下您的问题:如何动态查询返回的数据表中的更改唯一值?
我可以-快速地-考虑使用df.Series.unique()解决您的问题。
#iterates through a list of unique df.Seriesvalues
for row in group_data.Parameters.unique:
# do something
但是,应该在性能方面进行优化。有关更多信息,即df.Series.unique()的参数, 参见documentation