我有一个数据框,如图所示,我想做的是沿着“试验”列取平均值。它对每一个subject
、condition
和sample
(当这三列都有值1时)沿列试验取数据的平均值(100行)
我在熊猫身上所做的如下
sub_erp_pd= pd.DataFrame()
for j in range(1,4):
sub_c=subp[subp['condition']==j]
for i in range(1,3073):
sub_erp_pd=sub_erp_pd.append(sub_c[sub_c['sample']==i].mean(),ignore_index=True)
但是这需要很多时间。。 所以我想用dask代替熊猫。 但在dask中,我在创建空数据帧方面遇到了问题。就像我们在pandas中创建一个空数据框并向其添加数据一样
根据@edesz的建议,我改变了我的方法
编辑
%%time
sub_erp=pd.DataFrame()
for subno in progressbar.progressbar(range(1,82)):
try:
sub=pd.read_csv('../input/data/{}.csv'.format(subno,subno),header=None)
except:
sub=pd.read_csv('../input/data/{}.csv'.format(subno,subno),header=None)
sub_erp=sub_erp.append(sub.groupby(['condition','sample'], as_index=False).mean())
使用pandas读取文件需要13.6秒,而使用dask读取文件需要61.3毫秒。但是在dask中,我在附加文件时遇到问题
注意-原始问题的标题是创建一个空的dask数据帧并向其添加值
如果我理解正确,你需要
subject
、condition
和sample
列进行分组.mean()
取平均值Generate一些虚拟数据
熊猫接近
聚合并获取
mean
Dask方法
第一步。进口
第二步。使用^{} 将熊猫
DataFrame
转换为DaskDataFrame
第三步。聚合并获取
mean
重要提示:本答案中的方法不使用创建空Dask数据帧并向其附加值的方法来计算受试者、条件和试验分组内的平均值。相反,这个答案提供了另一种方法(使用
GROUP BY
)来获得期望的最终结果(计算受试者、条件和试验组内的平均值)相关问题 更多 >
编程相关推荐