pandas.Series.min メソッドの詳細解説
pandas.Series.min メソッドの詳細解説
pandas.Series.min
メソッドは、Series オブジェクト内の最小値を取得するために使用されます。オプションで、軸方向および欠損値の処理方法を指定することもできます。
構文
Series.min(axis=None, skipna=True, numeric_only=False, **kwargs)
引数
axis
(None, 'index', 'columns'): 集計対象の軸を指定します。デフォルトはNone
で、全軸に対して最小値を計算します。skipna
(bool): 欠損値 (NaN
) を無視して計算するかどうかを指定します。デフォルトはTrue
です。numeric_only
(bool): 数値データ型のみを対象に計算するかどうかを指定します。デフォルトはFalse
です。
戻り値
- 最小値: Series オブジェクトの場合、各列の最小値を含む新しい Series オブジェクトが返されます。スカラー値の場合、単一の最小値が返されます。
例
Series オブジェクトの最小値を取得
import pandas as pd
# Series オブジェクトの作成
s = pd.Series([1, 2, 3, 4, 5])
# 最小値の取得
min_value = s.min()
print(min_value) # 出力: 1
# 欠損値を含む Series オブジェクトの作成
s = pd.Series([1, 2, np.nan, 4, 5])
# 欠損値を無視して最小値を取得
min_value = s.min(skipna=True)
print(min_value) # 出力: 1
特定の軸方向の最小値を取得
# 複数列を持つ Series オブジェクトの作成
s = pd.Series([[1, 2, 3], [4, 5, 6], [7, 8, 9]], index=['a', 'b', 'c'], columns=['X', 'Y', 'Z'])
# 各列の最小値を取得
min_values = s.min(axis=1)
print(min_values) # 出力: Series([1, 4, 7], index=['a', 'b', 'c'])
数値データ型のみの列の最小値を取得
# 文字列を含む Series オブジェクトの作成
s = pd.Series(['apple', 1, 2, 'banana', 3])
# 数値データ型のみの列の最小値を取得
min_value = s.min(numeric_only=True)
print(min_value) # 出力: 1
pandas.Series.idxmin
メソッドは、最小値のインデックスを取得するために使用できます。pandas.DataFrame.min
メソッドは、DataFrame オブジェクトの各列の最小値を取得するために使用できます。
この例では、欠損値 (NaN
) を含む Series オブジェクトから、2 種類の方法で最小値を取得する方法を示します。
import pandas as pd
import numpy as np
# 欠損値を含む Series オブジェクトの作成
s = pd.Series([1, 2, np.nan, 4, 5])
# 方法 1:欠損値を無視して最小値を取得
min_value_1 = s.min(skipna=True)
print("方法 1:", min_value_1) # 出力: 方法 1: 1
# 方法 2:欠損値を含む場合の最小値を設定
min_value_2 = s.min(fill_value=-10) # 欠損値に -10 を設定
print("方法 2:", min_value_2) # 出力: 方法 2: -10
例2:DataFrame オブジェクトの最小値取得
この例では、DataFrame オブジェクトの各列の最小値を取得する方法を示します。
import pandas as pd
# DataFrame オブジェクトの作成
data = {'X': [1, 4, 7], 'Y': [2, 5, 8], 'Z': [3, 6, 9]}
df = pd.DataFrame(data)
# 各列の最小値を取得
min_values = df.min(axis=1)
print(min_values) # 出力: Series(X=1, Y=2, Z=3)
例3:MultiIndex を持つ Series オブジェクトの最小値取得
この例では、MultiIndex を持つ Series オブジェクトから、階層レベルごとに最小値を取得する方法を示します。
import pandas as pd
# MultiIndex を持つ Series オブジェクトの作成
index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1), ('B', 2)],
names=('Group', 'Number'))
s = pd.Series([1, 2, 3, 4], index=index)
# 各階層レベルの最小値を取得
min_values = s.min(level=1)
print(min_values) # 出力: Series(A=1, B=3)
これらの例は、pandas.Series.min
メソッドの様々な使用方法を理解するのに役立つはずです。
- 上記の例は、基本的な使い方のみを示しています。より複雑なデータ分析には、オプション引数や他の pandas 関数と組み合わせて使用することができます。
min_value = s[s == s.min()]
利点:
- シンプルで分かりやすい構文
- コードが簡潔になる
欠点:
- 計算速度が遅い場合がある
- 欠損値 (
NaN
) の処理が煩雑
np.min() 関数
min_value = np.min(s.values)
pandas.Series.min
メソッドよりも高速な場合がある- NumPy 配列を直接操作できる
- pandas 固有の機能 (例如:
skipna
オプション) を利用できない - Series の属性やインデックスにアクセスできない
idxmin() メソッド
min_index = s.idxmin()
min_value = s[min_index]
- 最小値だけでなく、そのインデックスも取得できる
- 2 ステップで処理が必要
自作関数
def custom_min(s):
for i in s.index:
if not pd.isna(s.iloc[i]):
min_value = s.iloc[i]
break
return min_value
- 完全な制御と柔軟性
- 特殊な要件に合わせた処理が可能
最適な代替方法の選択
どの代替方法が最適かは、状況によって異なります。
- シンプルさとわかりやすさ を重視する場合は、比較演算子と
min()
関数 がおすすめです。 - 処理速度 が重要な場合は、np.min()` 関数 を検討しましょう。
- 最小値だけでなくインデックスも必要 な場合は、
idxmin()
メソッド を使用します。 - 特殊な要件 に合わせた処理が必要な場合は、自作関数 を作成しましょう。
- データ量が多い場合は、np.min()` 関数 や 自作関数 の方が高速に動作する可能性があります。
- 欠損値の処理方法によっては、比較演算子と
min()
関数 やidxmin()
メソッド で特別な処理が必要になる場合があります。