ホームページ > バックエンド開発 > Python チュートリアル > 階層インデックスを使用してネストされたディクショナリから Pandas DataFrame を効率的に構築するにはどうすればよいですか?

階層インデックスを使用してネストされたディクショナリから Pandas DataFrame を効率的に構築するにはどうすればよいですか?

DDD
リリース: 2024-12-01 09:27:11
オリジナル
844 人が閲覧しました

How to Efficiently Construct a Pandas DataFrame from a Nested Dictionary with a Hierarchical Index?

ネストされた辞書から Pandas DataFrame を構築する

ネストされた辞書を使用する場合、データを pandas DataFrame に変換するのが難しい場合があります。目的の構造に合わせた方法。特に、辞書の最も深いレベルからデータを系列として抽出するのは面倒な場合があります。

次のような構造の辞書があるとします。

  • レベル 1: UserId (Long Integer)
  • レベル 2: カテゴリ (文字列)
  • レベル 3:各種属性 (float、int など)

目標は、ディクショナリの 3 番目のレベルのデータを使用して、階層インデックスを持つ DataFrame を構築することです。

MultiIndex の使用

pandas MultiIndex は、 DataFrame で階層データを表現する便利な方法。ネストされた辞書から MultiIndex を作成するには、キーをマルチインデックス値に対応するタプルに再形成します。

user_dict = {12: {'Category 1': {'att_1': 1, 'att_2': 'whatever'},
                  'Category 2': {'att_1': 23, 'att_2': 'another'}},
             15: {'Category 1': {'att_1': 10, 'att_2': 'foo'},
                  'Category 2': {'att_1': 30, 'att_2': 'bar'}}}

df = pd.DataFrame.from_dict({(i,j): user_dict[i][j] 
                           for i in user_dict.keys() 
                           for j in user_dict[i].keys()},
                       orient='index')
ログイン後にコピー

このアプローチでは、階層インデックスを持つ DataFrame が作成されます。最初のレベルには UserId と2 番目のレベルにはカテゴリが含まれます。第 3 レベルのデータは、UserId と Category の両方をインデックスとして使用してアクセス可能なシリーズに編成されるようになりました。

連結を使用した代替アプローチ

DataFrame を構築する別の方法は次のとおりです。コンポーネント データフレームを連結することによって。

user_ids = []
frames = []

for user_id, d in user_dict.iteritems():
    user_ids.append(user_id)
    frames.append(pd.DataFrame.from_dict(d, orient='index'))

df = pd.concat(frames, keys=user_ids)
ログイン後にコピー

このメソッドはディクショナリを反復処理し、 user_id とカテゴリの組み合わせごとのデータフレーム。結果のデータフレームは垂直方向に連結され、キーを階層インデックスとして使用して結合されます。

以上が階層インデックスを使用してネストされたディクショナリから Pandas DataFrame を効率的に構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート