【Pandas】中央値を求める median

今回は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

タイトルとURLをコピーしました