我有許多文件(〜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