コメントはまだありません概要カテゴリカル変数と連続変数の関係の分析に特に有効で、Excelでもよく使うピボットテーブルの機能ですが、Pythonのpandasでもpivot_tableというメソッドを使うことが出来ます。本記事ではこのpivot_tableの全引数の効果を検証しました。pandasのバージョンは0.23.4を使っています。引数一覧pandasのpivot_tableには以下の7引数があります。以降、それぞれについて説明していきます。valuesindexcolumnsaggfuncfill_valuedropnamargins_nameまた、データとしてはirisを使用しました。index_col=0)df.head()データ分析の定番データセットですね。passed!)が出るため、indexにNameを指定しておくことにします。values集計するカラムを指定するパラメータ。カラム名を指定するとその列のデータが集計されます。aggfuncの項で説明しますが、デフォルトではmeanが計算されます。1変数を対象に計算する場合1列を対象とする場合は、カラム名を直接渡すかリスト形式で渡す。SepalLengthを対象に集計する場合。values='SepalLength')Nameに含まれるカテゴリごとにSepalLengthの平均値が計算された。6.588リストで指定することも可能。values=['SepalLength'])同様の計算結果が得られた。6.5882変数以上を対象に計算する場合2列以上を対象とする場合は、対象のカラム名のリスト形式で渡す。SepalLengthとSepalWidthを対象に集計する場合。'SepalWidth'])Nameに含まれるカテゴリごとにSepalLengthとSepalWidthの平均値が計算された。2.974与えるカラム名の順番を変えても出力の並びが変わらないことには注意。'SepalLength'])SepalWidthを先にしても、出力はSepalLengthが先のまま。2.974全変数を対象に計算する場合カラム名を指定するのが面倒な場合など、全変数を対象にしたい場合はNone(デフォルト値)を与えればよい。values=None)Nameに含まれるカテゴリごとに、集計可能な全変数の平均値が計算された。2.974indexグルーピングする変数(行方向)を指定する引数。指定した変数の中のユニーク値で集約されるため、カテゴリ変数を指定するのが基本といえます。デフォルトはNone(なし)ですが、最低でもindexかcolumnsのどちらか一方を指定しないと前述したエラーが出ます。valueと同様にカラム名やリストが指定できるほか、時系列を対象とした場合にはGrouperで月集約等を指定することができます。上記までで実施していますので省略します。2変数以上を対象にグルーピングする場合リストで渡すことで、2変数以上の組み合わせでグルーピングすることができます。SepalLength_cutというカテゴリ変数を作っておき、本変数とNameで集約してみます。#SepalLength_cutというカテゴリ変数を作っておく。values="PetalLength")NameとSepalLength_cutの組み合わせでグルーピングされた。6.336364NameとSepalLength_cutの順番を入れ替えて実行。values="PetalLength")SepalLength_cut、Nameの順番でグルーピングされた。(valuesと異なり順番が反映される。本データは時系列ではないので、仮の時系列データを追加して試してみました。Tablesを参考にしています。#Timeという時系列データを作っておく。key='Time'))仮で作成したデータの月ごとに集約されました。resampleを使う手間を省くことができるかもしれませんね。6.606667columnsグルーピングする変数(列方向)を指定する引数。indexと同様に、指定した変数の中のユニーク値で集約されるため、カテゴリ変数を指定するのが基本といえます。デフォルトはNone(なし)ですが、最低でもindexかcolumnsのどちらか一方を指定しないと前述したエラーが出ます。1変数を対象にグルーピングする場合indexと同様ですが、indexとcolumnsを両方指定した場合を実施しておきます。columns='Name')SepalLengthで行方向を、Nameで列方向にグルーピングしました。ピボットテーブルという使い方ですね。7.5090912変数以上を対象にグルーピングする場合indexと同様のため省略。Grouperを指定する場合indexと同様のため省略。aggfunc集計する関数を指定するパラメータ。デフォルトはmean(平均値)。指定の方法により、単独の関数をしていたり、複数の関数を指定したり、変数ごとに関数を指定したり、といったことができます。関数はデータ以外の引数を取るものはそのまま使うことはできませんが、自作の関数でラッピングすることで使うことが可能です。関数を直接、又はリストで与えることで動作します。標準偏差を計算する場合、関数にnp.std又は[np.std]を指定します。aggfunc=np.std)各説明変数の標準偏差が計算できました。関数をリストで与えることで動作します。len]を指定します。len])各説明変数の中央値とデータ個数が計算できました。変数名と関数を辞書の形で渡すことで動作します。PetalLengthは平均値、PetalWidthは中央値と標準偏差という場合は、以下のように指定します。np.std]})それぞれの変数ごとに関数が適用されました。データの加工方法が決まっている時には使える方法かもしれないですね。0.274650引数を取る関数を指定する場合np.quantileのような、データ以外に引数を取る関数を使う場合、そのまま指定してもエラーが出てしまいます。aggfunc=np.quantile)q(何パーセントの値を取るのか)が指定されていないというエラー。'q'苦し紛れに変数を渡すこともできません。aggfunc=np.quantile(q=0.1))エラーが出てしまいます。'a'このような場合は関数を自作してやる必要があります。10パーセント値を計算する関数にラッピングする。aggfunc=quantile_10p)エラーが出ずに計算できた。2.59fill_value集計結果に欠損がある場合に埋める値を指定するパラメータ。デフォルトはNone(埋めない)。pivot_tableの処理後にfillna(x)をするのと同様です。columnsの項で検討した例で、fill_valueに1を指定してみます。fill_value=1)NaNになっていた部分が1で埋められました。7.509091marginsグルーピング変数での集計結果の他に全体の集計結果を追加したいときに使うパラメータ。デフォルトはFalse(全体の集計はしない)。Trueを指定すると全体の集計をしてくれます。地味に知らないと不便な引数ですね。margins=True)Allという列が追加され、全体の平均が計算されている。5.843333dropna全ての値がNaNのカラムがある場合に、計算対象から外すかを指定するパラメータ。デフォルトはTrue(計算しない)。用途はなさそうですが一応検証します。#SepalLengthを全てNaNにする。dropna=False)全てがNaNのSepalLengthも計算された。2.974margins_namemarginがTrueの場合の集計要素の名称を指定するパラメータ。