転置とも呼ばれるピボットは、行と列が交換されるデータ変換の一般的な操作です。データをより適切な形式に再構成したり、複数のディメンションにわたってデータを要約するレポートを作成したりするタスクに役立ちます。 Python では、pandas は DataFrame をピボットするためのメソッドをいくつか提供していますが、それぞれに独自の長所と制限があります。
基本的なピボットには、次のメソッドを使用できます。
pandas.pivot_table: このメソッドは、データをピボットするための柔軟なインターフェイスを提供します。行、列、値として使用する列を指定します。平均、合計、カウントなどのさまざまな集計関数をサポートします。
pandas.DataFrame.groupby pandas.unstack: groupby を使用して目的の列ごとにデータをグループ化し、結果の MultiIndex を次を使用してアンスタックします。スタックを解除してピボットされた DataFrame を作成します。
より複雑なピボット操作には、次のメソッドを使用できます。
pandas.DataFrame.set_index pandas.unstack: groupby と似ていますが、次のメソッドを使用するとより効率的です。一意の行セットを中心にピボットし、 columns.
pandas.DataFrame.pivot: pivot_table のより簡潔なバージョンですが、機能が制限されています。
pandas。クロス集計: 分割表の作成に役立ちます(クロス集計)、2 つのカテゴリ変数にわたるデータを集計するピボットのタイプ。
pandas.factorize numpy.bincount: 特定の操作を高速化できる、より高度な手法。因数分解を使用してカテゴリ値を一意の整数に変換し、bincount を使用して出現回数をカウントします。
pandas.get_dummies pandas.DataFrame.dot: ダミー変数を使用してクロス集計を実行する独創的な方法.
ここにいくつかありますこれらのメソッドの使用例:
# Import pandas import pandas as pd # Create a sample DataFrame df = pd.DataFrame({ "key": ["a", "b", "c", "a", "b"], "row": [1, 2, 3, 4, 5], "col": ["col1", "col2", "col3", "col1", "col2"], "val": [10, 20, 30, 40, 50] }) # Pivot using pivot_table pivoted_df = pd.pivot_table( df, index="row", columns="col", values="val", aggfunc='mean', fill_value=0 ) # Pivot using groupby and unstack pivoted_df = df.groupby(['row', 'col'])['val'].mean().unstack(fill_value=0)
ピボットされた DataFrame のマルチインデックスをフラット化するには、列のタイプに応じてさまざまなアプローチを使用できます:
列が文字列:
pivoted_df.columns = pivoted_df.columns.map('|'.join)
列がタプルの場合:
pivoted_df.columns = pivoted_df.columns.map('{0[0]}|{0[1]}'.format)
以上がPandas で DataFrame を効率的にピボットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。