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

【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()といった集計メソッドを直接適用できるため、特定範囲の統計量をシンプルなコードで算出可能です。なお、積の計算では値が掛け合わせごとに急激に大きくなるため、大きな数値を扱う際は桁あふれ(オーバーフロー)に注意してください。

  1. 【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.

  2. 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