我有许多文件(〜2,000,000)由另一个需要从中提取数据的程序生成。这些文件共同指标对不同的方法,不同的价值,我不知道如何词组这个舒服,所以这里是一个三维的例子:使用大熊猫从许多文件创建大型数据库
[x1,y1,z1,method1]
[x1,y1,z1,method2]
[x2,y2,z2,method1]
[x2,y2,z2,method2]
最后,我想有什么是熊猫数据帧,看起来像这样:
x y z method1 method2 ... methodn
0 x1 y1 z1 data data data
1 x2 y2 z2 data data data
2 x3 y3 z3 NaN data data
3 x4 y4 z4 data NaN data
...
n xn yn zn data NaN NaN
该方法会有一些漏洞,并且数据未对齐。
下面显示的伪代码:
file_list=glob.glob('/scratch/project/*')
method1_list=[]
method2_list=[]
...
methodn_list=[]
#Obtain data in the correct list
for outfile in file_list:
indices=(#function that obtains indices)
data=(#function that obtains primary data)
if method1: method1_list.append([indices,data])
elif method2: method2_list.append([indices,data])
...
else methodn: methodn_list.append([indices,data])
#Convert list to dataframe
method1_pd=pd.DataFrame(method1_list,columns[indices,method1])
method2_pd=pd.DataFrame(method2_list,columns[indices,method1])
...
methodn_pd=pd.DataFrame(methodn_list,columns[indices,method1])
#Apply multi index
method1=method1.set_index(indices)
method2=method2.set_index(indices)
...
methodn=methodn.set_index(indices)
#Combine data
out=method1.combine_first(method2)
out=out.combine_first(method3)
...
out=out.combine_first(methodn)
这个作品真的很好,然而由于这些方法的数量在不断增长,这正成为相当繁琐的编写和似乎相当unpythonic。所以,我有以下问题:
- 有没有更好的方式来创建这样一个数据帧? for循环之后的所有东西都已经包装在一个定义中,但它在这里没有帮助可读性。我仍然必须说明每种方法三次。
- 如果我想更新数据集,是否有一种简单的方法可以省略已读取的文件?
- 有没有更好的方式来对齐熊猫这样的数据?
几个问题:大约有多少方法[R有独特的,做你知道他们的先验,多少行总共是U期待,是U附加(如建筑物,然后添加数据明天再说),结局是什么这个框架的目标(例如查找表,计算)? – Jeff 2013-03-28 00:20:52
我知道先验的方法(总共20-30),总共会有大约200,000行,最终目标是运行统计数据,生成数据集,并提供查找表。 – Daniel 2013-03-28 12:49:43