Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python PandasでDataFrameとしてピボットテーブルを作成する方法

ピボットテーブルとは

ピボットテーブルを作成するには、pandas.pivot_table() 関数を使用します。この関数を使うことで、スプレッドシート形式のピボットテーブルを DataFrame として簡単に生成できます。

pandas.pivot_table() は、データの集計やクロス集計に便利な強力な関数です。Excel のピボットテーブルと同様に、指定した列をインデックス(行ラベル)としてデータを再編成し、数値列に対しては自動的に平均値などの統計量を算出します。

準備:ライブラリのインポート

まず、必要なライブラリをインポートしましょう。

import pandas as pd

サンプルデータの作成

次に、チームの記録を含む DataFrame を作成します。

dataFrame = pd.DataFrame({
    'Team ID': {0: 5, 1: 9, 2: 6, 3: 11, 4: 2, 5: 7},
    'Team Name': {0: 'India', 1: 'Australia', 2: 'Bangladesh', 3: 'South Africa', 4: 'Sri Lanka', 5: 'England'},
    'Team Points': {0: 95, 1: 93, 2: 42, 3: 60, 4: 80, 5: 55},
    'Team Rank': {0: 'One', 1: 'Two', 2: 'Six', 3: 'Four', 4: 'Three', 5: 'Five'}
})

単一の列をインデックスにしたピボットテーブルの作成

1つの列をインデックスとして指定してピボットテーブルを作成するには、以下のように index パラメータに列名を渡します。

pd.pivot_table(dataFrame, index=["Team ID"])

サンプルコード全体

以下は、ここまでの手順をまとめた完全なコード例です。

import pandas as pd

# チームの記録を含む DataFrame を作成
dataFrame = pd.DataFrame({
    'Team ID': {0: 5, 1: 9, 2: 6, 3: 11, 4: 2, 5: 7},
    'Team Name': {0: 'India', 1: 'Australia', 2: 'Bangladesh', 3: 'South Africa', 4: 'Sri Lanka', 5: 'England'},
    'Team Points': {0: 95, 1: 93, 2: 42, 3: 60, 4: 80, 5: 55},
    'Team Rank': {0: 'One', 1: 'Two', 2: 'Six', 3: 'Four', 4: 'Three', 5: 'Five'}
})

print("DataFrame...\n", dataFrame)

print("\n... Pivot ...")
print(pd.pivot_table(dataFrame, index=["Team ID"]))

実行結果

上記のコードを実行すると、次のような出力が得られます。

DataFrame...
    Team ID     Team Name   Team Points   Team Rank
0         5         India             95         One
1         9      Australia             93         Two
2         6      Bangladesh            42         Six
3        11   South Africa            60        Four
4         2      Sri Lanka            80       Three
5         7        England            55        Five

... Pivot ...
          Team Points
Team ID
2                  80
5                  95
6                  42
7                  55
9                  93
11                 60

ポイントのまとめ

この例では、「Team ID」をインデックスに指定したため、出力結果では Team ID の値が昇順に並べ替えられ、数値列である「Team Points」の平均値が表示されています。文字列型の「Team Name」や「Team Rank」は集計対象外となるため、ピボットテーブルには含まれません。

複数の列をインデックスにしたい場合は、index=["列名1", "列名2"] のようにリストで指定できます。また、values パラメータで集計対象の列を絞ったり、aggfunc パラメータで合計(sum)やカウント(count)などの集計方法を変更したりすることも可能です。

  1. Python Pandasで横棒グラフを作成する方法

    Pandasで横棒グラフを描画するには、pandas.DataFrame.plot.barhを使用します。棒グラフは、離散的なカテゴリ同士を比較する際に非常に有効な可視化手法であり、特にカテゴリ名が長い場合には、縦棒グラフよりも横棒グラフの方が読みやすくなります。必要なライブラリのインポートまず、データ操作用のpandasと、グラフ描画用のmatplotlib.pyplotをインポートします。import pandas as pd import matplotlib.pyplot as pltDataFrameの作成次に、4つの列(車種、排気量、登録価格、販売台数)を持つPandas Data

  2. PythonでDataFrameを作成する方法を徹底解説【pandas入門】

    DataFrame(データフレーム)とは、行と列から構成される2次元のデータ構造です。ExcelのようなスプレッドシートやSQLのテーブルと同様に、データを表形式で直感的に扱うことができます。DataFrameは、Pythonのデータ分析ライブラリ「pandas」が提供する中心的なオブジェクトであり、データ分析の現場で最もよく使われるデータ形式です。 DataFrameを作成するには、まずpandasをインポートします。DataFrameはDataFrame()関数を使って生成でき、この関数は1〜2個の引数を受け取ります。第1引数にはテーブルに格納するデータを指定し、データは「辞書型のリスト