パンダ: 一意の値を見つけて nan を無視する方法


次のカスタム関数を定義して、パンダで一意の値を検索し、NaN 値を無視することができます。

 def unique_no_nan(x):
    return x. dropna (). single ()

この関数は、NaN 値を除くすべての一意の値を含む pandas シリーズを返します。

次の例は、次の pandas DataFrame を使用したさまざまなシナリオでこの関数を使用する方法を示しています。

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' team ': ['Mavs', 'Mavs', 'Mavs', 'Celtics', 'Celtics', 'Celtics'],
                   ' points ': [95, 95, 100, 113, 100, np.nan]})

#view DataFrame
print (df)

      team points
0 Mavs 95.0
1 Mavs 95.0
2 Mavs 100.0
3 Celtics 113.0
4 Celtics 100.0
5 Celtics NaN

例 1: Pandas 列で一意の値を検索し、NaN 値を無視する

pandas unique()関数を使用して、DataFrame のポイント列にすべての一意の値を表示するとします。

 #display unique values in 'points' column
df[' points ']. single ()

array([ 95., 100., 113., no])

unique()関数の結果にはデフォルトでnanが含まれることに注意してください。

ただし、代わりにカスタムunique_no_nan()関数を使用して、ポイント列に一意の値を表示するとします。

 #display unique values in 'points' column and ignore NaN
unique_no_nan(df[' points '])

array([ 95., 100., 113.])

この関数は、NaN を除く、ポイント列内のすべての一意の値を返します。

例 2: Pandas Groupby で一意の値を検索し、NaN 値を無視する

pandas のgroupby() 関数agg()関数を使用して、チーム列ごとにグループ化されたポイント列のすべての一意の値を表示するとします。

 #display unique values in 'points' column grouped by team
df. groupby (' team ')[' points ']. agg ([' single '])

	unique
team	
Celtics [113.0, 100.0, nah]
Mavs [95.0, 100.0]

unique()関数の結果にはデフォルトでnanが含まれることに注意してください。

ただし、代わりにカスタムunique_no_nan()関数を使用して、チーム列ごとにグループ化されたポイント列の一意の値を表示するとします。

 #display unique values in 'points' column grouped by team and ignore NaN
df. groupby (' team ')[' points ']. apply ( lambda x: unique_no_nan(x))

team
Celtics [113.0, 100.0]
Mavs [95.0, 100.0]
Name: points, dtype: object

この関数は、NaN 値をカウントせずに、各チームポイント列のすべての一意の値を返します。

追加リソース

次のチュートリアルでは、パンダで他の一般的な機能を実行する方法を説明します。

パンダ: DataFrame で単一行を選択する方法
Pandas: インデックス列から一意の値を取得する方法
パンダ: 2 つの列の一意の組み合わせを数える方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です