【Python】pandasのilocでDataFrameのAge・Salary列の2〜4行目を抽出し、平均値と積を計算する方法
はじめに
pandasのDataFrameから特定の行と列を抽出して統計量を計算する処理は、データ分析において非常によく使われる操作です。本記事では、Age(年齢)列とSalary(給与)列の2行目・3行目・4行目を入力として受け取り、その平均値と積を求めるPython関数の実装方法をわかりやすく解説します。
入力データ
以下のようなサンプルDataFrameを想定します。
Id Age salary 0 1 27 40000 1 2 22 25000 2 3 25 40000 3 4 23 35000 4 5 24 30000 5 6 32 30000 6 7 30 50000 7 8 28 20000 8 9 29 32000 9 10 27 23000
出力結果
指定した範囲の行に対して平均値と積を計算した結果は、以下のようになります。
mean is Age 23.333333 salary 33333.333333 product is Age 12650 salary 35000000000000
解決手順
この問題は、以下の手順で解くことができます。
DataFrameを定義する
関数を作成し、
ilocを使ってAge列とSalary列の2行目〜4行目をスライスし、結果を別のDataFrameに格納する
df.iloc[1:4,1:]
結果のDataFrameから平均値と積を計算する
iloc[1:4, 1:] の意味を補足しておきます。最初の 1:4 は行の指定で、インデックス1〜3(つまり2行目〜4行目)を表します。次の 1: は列の指定で、インデックス1以降(つまりAge列とSalary列)を意味します。ilocは位置ベースのインデックス参照であるため、ラベル名ではなく0始まりの番号で指定する点に注意しましょう。
コード例
実際の実装例を見てみましょう。
import pandas as pd
def find_mean_prod():
data = [[1,27,40000],[2,22,25000],[3,25,40000],[4,23,35000],[5,24,30000],
[6,32,30000],[7,30,50000],[8,28,20000],[9,29,32000],[10,27,23000]]
df = pd.DataFrame(data, columns=('Id','Age','salary'))
print(df)
print("slicing second, third and fourth rows of age and salary columns\n")
result = df.iloc[1:4,1:]
print("mean is\n", result.mean())
print("product is\n", result.prod())
find_mean_prod()
実行結果
Id Age salary 0 1 27 40000 1 2 22 25000 2 3 25 40000 3 4 23 35000 4 5 24 30000 5 6 32 30000 6 7 30 50000 7 8 28 20000 8 9 29 32000 9 10 27 23000 slicing second, third and fourth rows of age and salary columns mean is Age 23.333333 salary 33333.333333 product is Age 12650 salary 35000000000000
まとめ
pandasのilocメソッドを使えば、行番号と列番号を指定して柔軟にデータを抽出できます。さらに、抽出した部分DataFrameにはmean()やprod()といった集計メソッドを直接適用できるため、特定範囲の統計量をシンプルなコードで算出可能です。なお、積の計算では値が掛け合わせごとに急激に大きくなるため、大きな数値を扱う際は桁あふれ(オーバーフロー)に注意してください。
-
【Pandas入門】Pythonでデータフレームの数値列の平均値を取得する方法
データ分析を行う際、特定の列の平均値や、数値を含むすべての列の平均値を取得したいケースはよくあります。そんなときに活躍するのが mean() 関数です。「平均(mean)」とは、データセット内のすべての値を合計し、その値の総数で割ることで求められる統計量です。Pandasではこの操作をわずか1行で実行できます。それでは、実際のコード例を見ていきましょう。コード例import pandas as pd my_data = {Name:pd.Series([Tom,Jane,Vin,Eve,Will]), Age:pd.Series([45, 67, 89, 12, 23]), value:pd.
-
PythonのLambda式とreduce関数で奇数回出現する数値を見つける方法
はじめに 本記事では、ユーザーが入力した正の整数の配列(リスト)の中から、奇数回出現する数値を見つける方法を解説します。PythonのLambda式とfunctools.reduce関数、そしてXOR演算を組み合わせることで、この問題を非常にシンプルなコードで解決できます。 実行例 入力 : A = [2, 4, 7, 7, 4, 2, 2] 出力 : 2 この例では、2 だけが3回(奇数回)出現しているため、結果として 2 が出力されます。 アルゴリズムの仕組み この手法の鍵となるのは、XOR(排他的論理和 ^)演算が持つ以下の性質です。 同じ数同士のXORは 0 になる(例:4 ^ 4