Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで1〜100の乱数30個からデータフレームを作成し、各行の「最大値÷最小値」を計算する方法

この記事では、Pythonを使って1から100までの範囲でランダムに生成した30個の要素からなる配列を作成し、それをデータフレームに変換した上で、各行における「最大値 ÷ 最小値」の比率を計算する方法を解説します。

まず、実行結果の例を見てみましょう。各行の最大値を最小値で割った結果は以下のようになります。

0    43.000000
1    1.911111
2    2.405405
3    20.000000
4    7.727273
5    6.333333

解決手順

この問題を解くためには、以下の手順に従います。

  • まず、NumPyのnp.random.randint(1, 100, 30)を使って、1以上100未満の整数からなる30個の乱数を生成します。次に、reshape(6, 5)で配列の形状を変更し、6行5列の2次元配列に変換します。これをPandasのDataFrameに渡してデータフレームを作成します。

df = pd.DataFrame(np.random.randint(1,100,30).reshape(6,5))
  • 続いて、df.apply()関数の中でラムダ式(lambda)を使用し、各行(axis=1)ごとにnp.max(x) / np.min(x)、つまり行内の最大値を最小値で割った値を計算します。その結果をmax_of_minという変数に保存します。

max_of_min = df.apply(lambda x: np.max(x)/np.min(x), axis=1)
  • 最後に、計算結果であるmax_of_minを出力して確認します。

サンプルコード

理解を深めるために、以下のコード全体を確認してみましょう。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(1,100,30).reshape(6,5))
print("Dataframe is:\n",df)
max_of_min = df.apply(lambda x: np.max(x)/np.min(x), axis=1)
print("maximum by minimum of each row:\n",max_of_min)

出力結果

Dataframe is:
   0  1  2  3  4
0  2 13  4 15 86
1 60 53 86 75 45
2 37 85 40 89 88
3 67 33 80  4 74
4 85 71 11 67 81
5 56 85 95 15 94
maximum by minimum of each row:
0    43.000000
1    1.911111
2    2.405405
3    20.000000
4    7.727273
5    6.333333
dtype: float64

なお、乱数は実行するたびに異なる値が生成されるため、出力されるデータフレームや計算結果も毎回変わります。この手法は、データのばらつき具合を行単位で把握したい場合などに役立ちます。apply()とラムダ式を組み合わせることで、行方向・列方向の柔軟な集計処理を簡潔に記述できるのがポイントです。

  1. Pythonで2つのリストの要素間の最小差を求めるプログラム

    2つのリスト間の最小差とは2つのリスト L1 と L2 が与えられたとき、L1 のある要素と L2 のある要素を組み合わせたときに生じる「差」の中で、最も小さいもの(絶対値が最小となる差)を求める問題です。例えば、入力が L1 = [2, 7, 4]、L2 = [16, 10, 11] の場合、出力は 3 になります。これは、10 − 7 = 3 という差が最も小さいためです。解法のアプローチ:ソート+双方向ポインタこの問題は、両方のリストをソートしてから、2つのポインタを使って効率的に比較していくことで解けます。手順は以下の通りです。リスト L1 をソートし、リスト L2 もソートするans

  2. Pythonでリスト内の最大値・最小値の位置を見つける方法

    Pythonでは、リスト内の最大値や最小値を求めるのが非常に簡単で、それらの位置(インデックス)も簡単に取得できます。Pythonには便利な組み込み関数が用意されており、min()はリスト内の最小値を求め、max()はリスト内の最大値を求めます。さらに、index()を使えば特定の要素のインデックス(位置)を調べることができます。 アルゴリズム maxminposition(A, n) /* Aはユーザーが入力したリスト、nはリストのサイズ */ ステップ1:組み込み関数を使って最小要素の位置を求める A.index(min(A)) ステップ2:組み込み関数を使って最