Pandas DataFrameの最大要素を取得する方法
DataFrameは、複数の
Series` オブジェクトの上に構築された、特別な種類の二次元配列を表すデータ構造です。
これは、Pythonのデータ解析フレームワークであるPandasの中心的なデータ構造です。
ということです。
データフレームについてまだよく知らない場合は、データフレームについてのガイドをご覧ください。
DataFrameは行や列に名前を付けることができ、ある意味、テーブルを表現することができます。
Pandasをインポートして、辞書からDataFrame
を作成してみましょう。
import pandas as pd
df_data = {
"column1": [24, 9, 20, 24],
"column2": [17, 16, 201, 16]
}
df = pd.DataFrame(df_data)
print(df)
PandasはPythonと非常によく統合されており、辞書から簡単にDataFrameを作成することができます。
今作成した df
には、カラムとそれぞれの値が含まれています。
column1 column2
0 24 17
1 9 16
2 20 201
3 24 16
各カラムは要素のリストを持っており、各カラム、各行、または DataFrame
全体の最大要素を検索することができます。
Pandas DataFrameのカラムの最大要素を探す
各カラムの最大要素を見つけるために、DataFrame
クラスの max()
メソッドを呼び出します。
このメソッドは、カラム名とその最大値の Series
を返します。
max_elements = df.max()
print(max_elements)
これは、予想通り、 df
の各カラムの最大値を返します。
column1 24
column2 201
dtype: int64
しかし、ある列の max()
要素を見つけるには、まずその列を分離して、特定の Series
に対して max()
メソッドを呼び出す必要があります。
max_element = df['column1'].max()
print(max_element)
24
Pandasのデータフレームの行の最大要素を探す
DataFrameの各行の最大要素を見つけるには、同様に max()
メソッドに依存しますが、ここでは axis
引数を 1
に設定します。
もし axis
が 0 の場合、 max()
メソッドは各カラムの最大要素を見つけます。
一方、 axis
が 1 の場合、 max()
は各行の最大値を求めます。
max_elements = df.max(axis=1)
print(max_elements)
これは、予想通り、 df
の各行の最大値を求めます。
0 24
1 16
2 201
3 24
dtype: int64
また、特定の行を検索したい場合は、 iloc[]
を使ってアクセスすることができます。
print(df)
for row in df.index:
print(f'Max element of row {row} is:', max(df.iloc[row]))
結果を確認しやすくするために、参考までに df
を出力し、各行の max()
要素を iloc[]
から取得しました。
column1 column2
0 24 17
1 9 16
2 20 201
3 24 16
Max element of row 0 is: 24
Max element of row 1 is: 16
Max element of row 2 is: 201
Max element of row 3 is: 24
Pandasのデータフレーム全体の最大要素を探す
最後に、DataFrame 全体の最大要素を見つける方法について見てみましょう。
これまで見てきたことに基づけば、これはとても簡単なはずです。
組み込みの max()
メソッドを使用して、以前に作成した2つの最大要素のリスト(すべての行またはすべての列)のいずれかを渡すだけです。
これらは同じデータの2つの面なので、同じ結果が得られることが保証されています。
これにより、 df
全体の中で最も高い値を得ることができるはずです。
max_by_columns = df.max()
max_by_rows = df.max(axis=1)
df_max = max(max_by_columns)
print("Max element based on the list of columns: ", df_max)
df_max2 = max(max_by_rows)
print("Max element based on the list of rows: ", df_max2)
これは次のように出力されます。
Max element based on the list of columns: 201
Max element based on the list of rows: 201
これは予想通りであり、正しいです! 各行の最大要素のリストの最大要素は、各列の最大要素のリストの最大要素と同じであるべきで、両者はデータフレーム全体の最大要素と同じであるべきです。
結論
このチュートリアルでは、Pandas DataFrameの列、行、DataFrameインスタンス全体の最大要素を求める方法を見てきました。