Pandas で axis の意味

Suraj Joshi 2021年1月23日
Pandas で axis の意味

このチュートリアルでは、DataFrames や Series のような Pandas オブジェクトの様々なメソッドで使用される axis パラメータの意味を説明します。

import pandas as pd

empl_df = pd.DataFrame(
    {
        "Name": ["Jon", "Willy", "Mike", "Luna", "Sam", "Aliza"],
        "Age": [30, 33, 35, 30, 30, 31],
        "Weight(KG)": [75, 75, 80, 70, 73, 70],
        "Height(meters)": [1.7, 1.7, 1.85, 1.75, 1.8, 1.75],
        "Salary($)": [3300, 3500, 4000, 3050, 3500, 3700],
    }
)

print(empl_df)

出力:

    Name  Age  Weight(KG)  Height(meters)  Salary($)
0    Jon   30          75            1.70       3300
1  Willy   33          75            1.70       3500
2   Mike   35          80            1.85       4000
3   Luna   30          70            1.75       3050
4    Sam   30          73            1.80       3500
5  Aliza   31          70            1.75       3700

DataFrame empl_df を使用して、Pandas のメソッドで axis パラメータを使用する方法を説明します。

Pandas メソッドでの axis パラメータの使用法

axis パラメータは、特定のメソッドや関数が DataFrame に適用される方向を指定します。axis=0 は関数が列単位で適用されていることを表し、axis=1 は関数が DataFrame 上で行単位で適用されていることを意味します。

関数を列単位で適用した場合は 1 行の結果が得られ、関数を行単位で適用した場合は 1 列の DataFrame が得られます。

例:Pandas メソッドで axis=0 を使用する

import pandas as pd

empl_df = pd.DataFrame(
    {
        "Name": ["Jon", "Willy", "Mike", "Luna", "Sam", "Aliza"],
        "Age": [30, 33, 35, 30, 30, 31],
        "Weight(KG)": [75, 75, 80, 70, 73, 70],
        "Height(meters)": [1.7, 1.7, 1.85, 1.75, 1.8, 1.75],
        "Salary($)": [3300, 3500, 4000, 3050, 3500, 3700],
    }
)
print("The Employee DataFrame is:")
print(empl_df, "\n")

print("The DataFrame with mean values of each column is:")
print(empl_df.mean(axis=0))

出力:

The Employee DataFrame is:
    Name  Age  Weight(KG)  Height(meters)  Salary($)
0    Jon   30          75            1.70       3300
1  Willy   33          75            1.70       3500
2   Mike   35          80            1.85       4000
3   Luna   30          70            1.75       3050
4    Sam   30          73            1.80       3500
5  Aliza   31          70            1.75       3700

The DataFrame with mean values of each column is:
Age                 31.500000
Weight(KG)          73.833333
Height(meters)       1.758333
Salary($)         3508.333333
dtype: float64

これは、DataFrame empl_df の列ごとの平均を計算します。平均値は、数値を持つ列に対してのみ計算されます。

axis=0 とすると、各カラムの平均値を計算します。

例:Pandas メソッドで axis=1 を使用する

import pandas as pd

empl_df = pd.DataFrame(
    {
        "Name": ["Jon", "Willy", "Mike", "Luna", "Sam", "Aliza"],
        "Age": [30, 33, 35, 30, 30, 31],
        "Weight(KG)": [75, 75, 80, 70, 73, 70],
        "Height(meters)": [1.7, 1.7, 1.85, 1.75, 1.8, 1.75],
        "Salary($)": [3300, 3500, 4000, 3050, 3500, 3700],
    }
)
print("The Employee DataFrame is:")
print(empl_df, "\n")

print("The DataFrame with mean values of each row is:")
print(empl_df.mean(axis=1))

出力:

The Employee DataFrame is:
    Name  Age  Weight(KG)  Height(meters)  Salary($)
0    Jon   30          75            1.70       3300
1  Willy   33          75            1.70       3500
2   Mike   35          80            1.85       4000
3   Luna   30          70            1.75       3050
4    Sam   30          73            1.80       3500
5  Aliza   31          70            1.75       3700

The DataFrame with mean values of each row is:
0     851.6750
1     902.4250
2    1029.2125
3     787.9375
4     901.2000
5     950.6875
dtype: float64

これは DataFrame empl_df の行単位の平均値を計算します。言い換えれば、各行の数値型のカラムの値を平均することで、各行の平均値を計算します。最後に、各行の平均値を含む単一のカラムを取得します。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Pandas DataFrame Row

関連記事 - Pandas DataFrame Column