2016-10-21 8 views
1

ファイル内に複数のディレクトリがあり(index)、各ディレクトリに状態があります。 ディレクトリからすべてのファイルをループし、2Dヒストグラムをforeachで作成し、すべてのオブジェクトを1つのオブジェクトにまとめ、状態に基づいて行を選択できるようにします。データのインポート(reshape、numpy、pandas)

例えば

(3x3の2D-ヒストグラム付き):

"Filename" , "State", "X_1", "X_2", "X_3", "X_4", "X_5", "X_6", "X_7", "X_8","X_9" 

"File_1.csv", "FOO",0,0,1,2,3,0,0,0,0 
"File_2.csv", "FOO",0,0,1,2,3,1,1,0,0 
"File_3.csv", "FOO",0,0,4,5,3,0,0,0,0 
"File_4.csv", "BAr",0,0,1,2,3,0,0,0,0 
"File_5.csv", "BAR",0,0,1,2,3,1,1,0,0 
"File_6.csv", "BAR",0,0,4,5,3,0,0,0,0 

私がやった:

def read(path, b, State): 
     HistList = [] 
     HistName = [] 
     files = os.listdir(path) 

     for i in range(0, len(files)): 
      .... 
      hist,xe,ye = np.histogram2d(X, Y, bins=b, normed=True) 
      HistList.append(hist.flatten()) 
      NameList.append(files[i]) 

    return DataFrame(???) 
+0

たぶん私は質問を理解していなかったが、(単にループの最後の行の後) 'Mat.append(h)は'これに対処していないのですか?最終的なマトリックスの形は何ですか? – Yugi

答えて

0

辞書を使用していないのはなぜ?

Final_Dict{}を作成すると、それを引数として関数に渡すことができ、関数はすべてのフォルダとそのファイルに対してその辞書を少しずつ完成させます。この辞書では、メインキーはフォルダ(Final_Dict[folder_name])を表します。そのメインキーのサブキーはその特定のフォルダのファイル名(Final_Dict[folder_name][file_name])であり、最後にそのサブキーの値はヒストグラムです。

だけ明確にすることが、次の行がパスからフォルダ名を抽出します。

current_folder = os.path.basename(os.path.normpath(path)) 

コード(テストしていません):その後

def read(Final_Dict, path, b, para): 
     current_folder = os.path.basename(os.path.normpath(path)) 
     Final_Dict[current_folder] = {} 

     files = os.listdir(path) 
     for i in range(0, len(files)): 
      .... 
      hist,xe,ye = np.histogram2d(X, Y, bins=b, normed=True) 
      Final_Dict[current_folder][files[i]] = hist.flatten() 

    return Final_Dict 

Final_Dict = {} 
b = ... 
para = ... 
for folder_path in folder_path_list: 
     Final_Dict = read(Final_Dict, folder_path, b, para) 

あなたがデータにFinal_Dictを変換することができますフレーム:変換の

Final_Dataframe = pd.DataFrame.from_dict(Final_Dict, orient='index', dtype=None) 

簡単な例:

import numpy as np 
import pandas as pd 

Final_Dict= {} 
Final_Dict['state1'] = {} 
Final_Dict['state2'] = {} 

Final_Dict['state1']['file1'] = [1,2,3] 
Final_Dict['state1']['file2'] = [9,9,9] 
Final_Dict['state2']['file1'] = [3,3,3] 
Final_Dict['state2']['file2'] = [7,6,5] 

FInal_Dataframe = pd.DataFrame.from_dict(Final_Dict, orient='index', dtype=None) 

print "whole dataframe:" 
print FInal_Dataframe 

print "\n\n\nSelecting folder 2: " 
print FInal_Dataframe.loc['state2'] 

結果:

whole dataframe: 
      file2  file1 
state1 [9, 9, 9] [1, 2, 3] 
state2 [7, 6, 5] [3, 3, 3] 



Selecting folder 2: 
file2 [7, 6, 5] 
file1 [3, 3, 3] 
Name: state2, dtype: object 
+0

私のケースでは、[1,2,3]は形状の数が少ない配列(56,10,10)です - 名前として 'X_i'という各項目を列として持ち込む方法はありますか? – Roby

+0

私は分かりません。列はファイル名です。あなたはそれらを必要としませんか?もっと明確に説明してください – Yugi

+0

私の質問を参照してください – Roby

関連する問題