Pandas.DataFrame.minの使い方:サンプルコード付き

2024-04-02

pandas.DataFrame.min() は、DataFrameの最小値を取得するための関数です。

使い方

  • 基本的な使い方
df.min()

このコードは、DataFrameの全ての列の最小値を含むSeriesを返します。

  • 列指定
df['col1'].min()

このコードは、列col1の最小値のみを返します。

  • 軸指定
df.min(axis=1)  # 各行の最小値
df.min(axis=0)  # 各列の最小値

axis=1を指定すると、各行の最小値を含むSeriesを返します。axis=0を指定すると、デフォルトと同じく各列の最小値を含むSeriesを返します。

  • オプション

min()関数には、以下のオプションがあります。

  • skipna=True: 欠損値を無視する
  • numeric_only=True: 数値型のみを対象とする
df.min(skipna=True)  # 欠損値を無視
df.min(numeric_only=True)  # 数値型のみを対象

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, np.nan], 'C': ['a', 'b', 'c']})

# 全ての列の最小値
print(df.min())

# 列 'B' の最小値
print(df['B'].min())

# 各行の最小値
print(df.min(axis=1))

# 各列の最小値 (欠損値を無視)
print(df.min(axis=0, skipna=True))

出力

A    1
B    4
C    a
dtype: object
4
0    1
1    4
2    a
dtype: object
4
B    4
C    a
dtype: object


pandas.DataFrame.min のサンプルコード

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})

# 全ての列の最小値
print(df.min())

# 出力
# A    1
# B    4
# C    7
# dtype: int64

列指定

# 列 'B' の最小値
print(df['B'].min())

# 出力
# 4

軸指定

# 各行の最小値
print(df.min(axis=1))

# 出力
# 0    1
# 1    4
# 2    7
# dtype: int64

# 各列の最小値
print(df.min(axis=0))

# 出力
# A    1
# B    4
# C    7
# dtype: int64

オプション

# 欠損値を含む列の最小値 (欠損値は無視)
df['D'] = [1, np.nan, 3]

print(df.min(skipna=True))

# 出力
# A    1.000000
# B    4.000000
# C    7.000000
# D    1.000000
# dtype: float64

# 数値型のみの列の最小値
print(df.min(numeric_only=True))

# 出力
# A    1
# B    4
# D    1
# dtype: int64

グループごとの最小値

# グループ 'G' ごとの各列の最小値
print(df.groupby('G').min())

# 出力
#        A  B  C
# G
# 1  1.000000  4  7
# 2  2.000000  5  8
# 3  3.000000  6  9

条件付きの最小値

# 'A' 列が 2 より大きい行の 'B' 列の最小値
print(df[df['A'] > 2].min()['B'])

# 出力
# 5

時系列データの最小値

# 時系列データの過去 3 日間の最小値
df = pd.DataFrame({'Date': pd.to_datetime(['2023-03-08', '2023-03-09', '2023-03-10', '2023-03-11']), 'Value': [10, 9, 8, 7]})

print(df.set_index('Date')['Value'].rolling(3).min())

# 出力
# Date
# 2023-03-08    10
# 2023-03-09     9
# 2023-03-10     8
# 2023-03-11     7
# Name: Value, dtype: int64

これらのサンプルコードは、pandas.DataFrame.min の使い方を理解するのに役立ちます。



pandas.DataFrame.min 以外の方法

比較演算子

# 全ての列の最小値
min_value = df.values.min()

# 列 'B' の最小値
min_value = df['B'].min()

# 各行の最小値
min_values = df.min(axis=1)

# 各列の最小値
min_values = df.min(axis=0)

NumPy の min 関数

# 全ての列の最小値
min_value = np.min(df.values)

# 列 'B' の最小値
min_value = np.min(df['B'])

# 各行の最小値
min_values = np.min(df, axis=1)

# 各列の最小値
min_values = np.min(df, axis=0)

最小値を保持する列を追加

df['min_value'] = df.min(axis=1)

# 出力
#   A  B  C  min_value
# 0  1  4  7         1
# 1  2  5  8         2
# 2  3  6  9         3

これらの方法は、pandas.DataFrame.min よりも高速に動作する場合があります。ただし、コードの可読性が低下する場合もあります。

特殊なケース

  • グループごとの最小値: groupby().min()
  • 条件付きの最小値: loc[]query() を使用
  • 時系列データの最小値: rolling().min()

これらの特殊なケースには、専用の関数やメソッドを使用する方が効率的です。




時系列データ分析に役立つ YearEnd.is_anchored 属性: Pandas Data Offsets の活用

pandas. tseries. offsets. YearEnd. is_anchored は、pandas ライブラリの Data Offsets 機能で使用される関数です。この関数は、YearEnd オフセットがアンカーされているかどうかを返します。



BQuarterBegin.nanosを使いこなして、ナノ秒単位で四半期オフセットを調整

pandas. tseries. offsets. BQuarterBegin. nanos は、Pandas の "Data Offsets" 機能において、四半期の開始を表すオフセットを表します。これは、ビジネスデーの基準に基づいて四半期の開始日を特定し、さらにナノ秒単位の精度で調整することができます。


Pandasで月末から2週間後の最初の月曜日を判定:SemiMonthBegin.onOffset徹底解説

pandas. tseries. offsets. SemiMonthBegin は、pandasライブラリで提供される日付オフセットの一つです。これは、月末から2週間後に発生する最初の月曜日を基準とするオフセットです。SemiMonthBegin


Pandas.tseries.offsets.CustomBusinessMonthBeginを使いこなす

pandas. tseries. offsets. CustomBusinessMonthBegin. rollback は、Pandasの「Data offsets」機能で、カスタムビジネス月始のオフセットを指定された日付から過去方向にロールバックするために使用されます。


Pandas Data Offsets と LastWeekOfMonth.onOffset を使う

Pandas の Data Offsets は、時間系列データの分析に役立つ便利な機能です。特定の日付や時間間隔を表すオブジェクトを作成し、日付操作や分析を効率的に行うことができます。このチュートリアルでは、pandas. tseries



Pandas Index.drop_duplicates メソッド:重複行を効率的に削除

pandas. Index. drop_duplicates メソッドは、以下の引数を受け取ります。subset: 重複行を特定するために使用する列のリスト。デフォルトでは、インデックス全体が使用されます。keep: 重複行をどのように処理するかを指定します。 'first': 最初に出現した行のみを保持します。 'False': 重複行をすべて削除します。


pandas.tseries.offsets.BYearEnd.month 以外の方法

pandas. tseries. offsets. BYearEnd. month は、pandas ライブラリで提供される "DateOffset" という日付オフセットオブジェクトの属性の一つです。この属性は、年末のビジネスデーの月 を表します。


Pandas Timestamp 型の freqstr 属性を使いこなすための 5 つのサンプルコード

freqstr属性は、Timestamp型のオブジェクトの頻度を表す文字列を取得するために使用されます。頻度とは、データがどのくらいの頻度で収集されたかを示すものです。freqstr属性を使用するには、以下の手順に従います。Pandasライブラリをインポートします。


Pandas CategoricalIndex を理解し、順序なしのカテゴリリストに変換する方法

このメソッドは、カテゴリカルインデックスの順序を無視して、カテゴリのリストを取得したい場合に使用されます。出力:引数なし返値順序なしのカテゴリのリスト注意事項このメソッドは、カテゴリカルインデックスの順序を無視するため、元の順序を保持したい場合は使用しないことをお勧めします。


Pandas Extensions の ExtensionArray.isin メソッドの代替方法

pandas. api. extensions. ExtensionArray. isin メソッドは、拡張型配列内の値が指定されたリストまたは配列に含まれているかどうかを判断するために使用されます。これは、データのフィルター処理や重複の検出など、さまざまなタスクで役立ちます。