別の列の集計に基づいて、1つの列にNULL値を入力する

MushyMush

私はいくつかの基本的なデータサイエンスを学んでおり、タイタニックデータセットに取り組んでいます。「Age」列にnull値があり、「Pclass」や「Sex」などの別の列の平均を入力したいと思います。

「Pclass」は乗客クラスを指し、乗客が1等、2等、または3等のチケットを持っているかどうかに基づいて3つの値(1、2、3)があります。

'Age'と集計に使用する列の2つの列名を受け取る関数を記述して、このプロセスを一般化しようとしています。これを完全に一般化する方法が思いつかないので、今のところ、Pclassに基づいて集計するとします。

私は次のようにPclassに基づいて平均年齢を取得しました:

# Figure out the mean age for each class
mean_age = round(df_train.groupby('Pclass').mean()['Age'])
mean_age

次のように関数を定義しようとしました(38、30、25)はmean_ageからのものです:

def fill_age(data, col1, col2):
    if data[col1].isnull():
        if data[col2] == 1:
            return 38
        elif data[col2] == 2:
            return 30
        else:
            return 25
    else:
        return data[col1]

そして.apply()を使おうとしました:

df_train['Age'] = df_train.apply(fill_age(df_train,'Age','Pclass'), axis = 1)

私はここで何が間違っているのですか、そしてそれを修正してさらに一般化するためにこれをどのように考えますか?

編集:次の行は機能しているようですが、データフレーム自体に変更を適用するために必要であり、.apply()で「inplace」を使用することはできません

df_train.groupby('Pclass')['Age'].apply(lambda x: x.fillna(round(x.mean())))
cs95

内部apply関数を呼び出すのではなく、関数と引数をargs=()またはキーワード引数を介して渡します。

df['Age'] = df.apply(fill_age, col1='Age', col2='Pclass', axis=1)

しかし、ベクトル化を介してこれを行うためのより良い方法があります:

df['Age'] = df['Age'].fillna(df.groupby('Pclass')['Age'].transform('mean'))

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

別の列に基づいて1つの列の合計を計算する

分類Dev

別の列の値に基づいて1つの列を合計します

分類Dev

1つの列の異なる値に基づいて複数の列にデータを入力する方法

分類Dev

対応する列値の集計に基づいて条件付きでNAを入力します

分類Dev

別の列に基づいて1つの列の値を減算する

分類Dev

パンダ:別の列の値に基づいて列を集計します

分類Dev

別の列の1つの列に基づいて行の値を見つけ、計算を行います

分類Dev

別のパンダに基づいて1つの列を集約する

分類Dev

配列の別の列に基づいて、1つの列の最小最大値を集約します-Python

分類Dev

TSQL他の列に基づいて値を集計する

分類Dev

2つの集計列に基づいてRの別の列から1つの列を減算するにはどうすればよいですか?

分類Dev

パンダの別の列の値の範囲に基づいて列の内容を集計する

分類Dev

別の列の値に基づいて行のみを集計します

分類Dev

別の列に基づいてnan値を入力するPython関数

分類Dev

別の列への数値入力に基づいて、1つの列にテキストを入力します

分類Dev

列の個別の値に基づいて列の値を計算するApacheSpark

分類Dev

列を作成し、個別の列の値に基づいて新しい値を入力する方法

分類Dev

列の値に基づいて列に入力する

分類Dev

別の列に基づいて列の最初の行にNA値を入力する方法

分類Dev

Python(pandas、jupyter)の別の列の値に基づいて1つの列の値の平均を取得する方法

分類Dev

パンダの別の列のフロア値に基づいて、1つの列の値を合計するにはどうすればよいですか?

分類Dev

別の列に基づいて条件付きで列を集計する方法

分類Dev

1つの列に基づいてグループ化し、別の列の合計値を取得します

分類Dev

PySpark:別の列の値の1つの最後の出現に基づいて列にデータを入力します

分類Dev

Rの別の列の最小値に基づいて1つの列の対応する値を取得します

分類Dev

forループを使用して、別の列の値に基づいて1つの列の値を取得する

分類Dev

MySQLを使用して、別の列の個別の値に基づいて1つの列を集約しながら、重複する行を除外します

分類Dev

別の列の値に基づいて列にデータを入力する(SQL)

分類Dev

各行の別の列の値に基づいて1つの列に値を挿入するにはどうすればよいですか?

Related 関連記事

  1. 1

    別の列に基づいて1つの列の合計を計算する

  2. 2

    別の列の値に基づいて1つの列を合計します

  3. 3

    1つの列の異なる値に基づいて複数の列にデータを入力する方法

  4. 4

    対応する列値の集計に基づいて条件付きでNAを入力します

  5. 5

    別の列に基づいて1つの列の値を減算する

  6. 6

    パンダ:別の列の値に基づいて列を集計します

  7. 7

    別の列の1つの列に基づいて行の値を見つけ、計算を行います

  8. 8

    別のパンダに基づいて1つの列を集約する

  9. 9

    配列の別の列に基づいて、1つの列の最小最大値を集約します-Python

  10. 10

    TSQL他の列に基づいて値を集計する

  11. 11

    2つの集計列に基づいてRの別の列から1つの列を減算するにはどうすればよいですか?

  12. 12

    パンダの別の列の値の範囲に基づいて列の内容を集計する

  13. 13

    別の列の値に基づいて行のみを集計します

  14. 14

    別の列に基づいてnan値を入力するPython関数

  15. 15

    別の列への数値入力に基づいて、1つの列にテキストを入力します

  16. 16

    列の個別の値に基づいて列の値を計算するApacheSpark

  17. 17

    列を作成し、個別の列の値に基づいて新しい値を入力する方法

  18. 18

    列の値に基づいて列に入力する

  19. 19

    別の列に基づいて列の最初の行にNA値を入力する方法

  20. 20

    Python(pandas、jupyter)の別の列の値に基づいて1つの列の値の平均を取得する方法

  21. 21

    パンダの別の列のフロア値に基づいて、1つの列の値を合計するにはどうすればよいですか?

  22. 22

    別の列に基づいて条件付きで列を集計する方法

  23. 23

    1つの列に基づいてグループ化し、別の列の合計値を取得します

  24. 24

    PySpark:別の列の値の1つの最後の出現に基づいて列にデータを入力します

  25. 25

    Rの別の列の最小値に基づいて1つの列の対応する値を取得します

  26. 26

    forループを使用して、別の列の値に基づいて1つの列の値を取得する

  27. 27

    MySQLを使用して、別の列の個別の値に基づいて1つの列を集約しながら、重複する行を除外します

  28. 28

    別の列の値に基づいて列にデータを入力する(SQL)

  29. 29

    各行の別の列の値に基づいて1つの列に値を挿入するにはどうすればよいですか?

ホットタグ

アーカイブ