今回はpandasのDataFrame、Seriesで中央値を求める方法を紹介します。
medianメソッドを用いれば求めることができます。
サンプルコード
さっそくサンプルコードを見てみます。
DataFrame
まず以下のようなDataFrameを用意します。
>>> import pandas as pd
>>> df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]],index=["R1", "R2", "R3"],columns=["C1","C2","C3"])
>>> df
C1 C2 C3
R1 1 2 3
R2 4 5 6
R3 7 8 9
行に対する中央値を求める場合にはdataframe.median(axis=0)とします。
>>> df.median(axis=0)
C1 4.0
C2 5.0
C3 6.0
dtype: float64
列に対する中央値を求める場合にはdataframe.median(axis=1)とします。
>>> df.median(axis=1)
R1 2.0
R2 5.0
R3 8.0
dtype: float64
Series
Seriesでも同様にmedian関数で中央値を求めることができます。
>>> ser = pd.Series([1,2,3],index=["A","B","C"])
>>> ser
A 1
B 2
C 3
dtype: int64
>>> ser.median()
2.0
その他(追記予定)
NaNやnullが入ってるDataFrameに対して
NaNやnullがDataFrameに入っている場合には、skipna引数で、NaNを含めるかどうかを設定できます。デフォルトは含めない設定になっています。
サンプルコードを以下に示します。
>>> df = pd.DataFrame([[1,2,3], [4,NaN,6], [7,8,9]],index=["R1", "R2", "R3"],columns=["C1","C2","C3"])
>>> df
C1 C2 C3
R1 1 2.0 3
R2 4 NaN 6
R3 7 8.0 9
>>> df.median(axis=0)
C1 4.0
C2 5.0
C3 6.0
dtype: float64
# NaNを除外しない場合
>>> df.median(axis=0, skipna=False)
C1 4.0
C2 NaN
C3 6.0
参考文献
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.median.html