2016-09-22 11 views
0

いくつかのディレクトリにjsonのデータファイルがあり、私はPandasにインポートしていくつかのデータ分析をしたいと思っています。 jsonの形式は、ディレクトリ名で定義された型に依存します。例えば、正規化されたjsonデータを複数のファイルからpandasデータフレームにインポートする方法は?

dir1_typeA/ 
    file1 
    file2 
    ... 
dir1_typeB/ 
    file1 
    file2 
    ... 
dir2_typeB/ 
    file1 
    ... 
dir2_typeA/ 
    file1 
    file2 

fileはデータフレームの行になり、複雑なネストされたJSON文字列を含んでいます。私はTypeAとTypeBごとに2つのデータフレームを持っています。後で必要に応じて追加します。

だから、これまで私は、ディレクトリ内のファイルは若干異なるがありあり1つの追加された問題が、あります、私はos.walkに必要なすべてのファイル・パスを持っていると

import os 
    from glob import glob 

    PATH = 'dir/filepath' 
    files = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], 'file*'))] 

    for file in files: 
     with open(issuefile, 'r') as f: 
      data = f.read() 

     data_json = json_normalize(json.loads(data)) 
     type = ' '.join(issuefile.split('/')[3] 
     data_json['type'] = type 
     # append to data frame for typeA and typeB 
     if 'typeA' in type: 
      # append to typeA dataframe 
     else: 
      # append to typeB dataframe 

を通過しようとしていますフィールド。たとえば、file1には、file2dir1_typeAというフィールドがいくつか追加されている場合があります。だから、それぞれのタイプのデータフレームにもその動的性質を適応させる必要があります。

これらの2つのデータフレームを作成するにはどうすればよいですか?

答えて

1

私はあなたがパンダにそれらを読む前に、あなたが最初に一緒にファイルを連結する必要があり、ここに(あなたはPythonでそれをも行うことができます)あなたはbashでそれを行うだろうかだと思う:

cat `find *typeA` > typeA 
cat `find *typeB` > typeB 

次にあなたがすることができますio.json.json_normalizeを使用してそれをパンダにインポートする:

import json 
with open('typeA') as f: 
    data = [json.loads(l) for l in f.readlines()] 
    dfA = pd.io.json.json_normalize(data) 

dfA 

#   that this.first this.second 
# 0 otherthing  thing  thing 
# 1 otherthing  thing  thing 
# 2 otherthing  thing  thing 
関連する問題