「==」を使用すると、パンダでブールではなくシリーズが返されるのはなぜですか?


8

2行目で「==」の意味がわかりません。-
テストではなく、ifステートメント
がありません...-変数宣言ではありません...

私はこれまでこれまで見たことがdata.ctage==catありません、問題はパンダシリーズであり、テストではありません...

for cat in data["categ"].unique():
    subset = data[data.categ == cat] # Création du sous-échantillon
    print("-"*20)
    print('Catégorie : ' + cat)
    print("moyenne:\n",subset['montant'].mean())
    print("mediane:\n",subset['montant'].median())
    print("mode:\n",subset['montant'].mode())
    print("VAR:\n",subset['montant'].var())
    print("EC:\n",subset['montant'].std())
    plt.figure(figsize=(5,5))
    subset["montant"].hist(bins=30) # Crée l'histogramme
    plt.show() # Affiche l'histogramme

1
たぶん彼らは2つの派手な配列の要素ごとの比較をしていて、結果のブール配列をデータのセレクターとして使用していますか?stackoverflow.com/questions/10580676/…パンダは奇妙です。
Neil

1
positive_X = X[X > 0]numpyのようなマスクです。
ギモウテ

回答:


10

の各要素がdata.categと等しいかどうかをテストしていcatます。これにより、True / False値のベクトルが生成されます。これはインデクサーと同じようにに渡され、ベクターのTrue値に対応するdata[]行が返されますdata

要約すると、式全体dataがの値がdata.categ等しい行のサブセットを返しますcat

(全体の操作はを使用してよりエレガントに行うことができるようdata.groupBy('categ').apply(someFunc)です。)


2

これは、data.categがに等しいインデックスを持つブールシリーズを作成します。catこのブールマスクを使用すると、データフレームをフィルターできます。つまりsubsetcategがに格納されている値であるすべてのレコードを持ちますcat

これは数値データを使用した例です

np.random.seed(0)
a = np.random.choice(np.arange(2), 5)
b = np.random.choice(np.arange(2), 5)
df = pd.DataFrame(dict(a = a, b = b))


df[df.a == 0].head()

#   a   b
# 0 0   0
# 2 0   0
# 4 0   1

df[df.a == df.b].head()

#   a   b
# 0 0   0
# 2 0   0
# 3 1   1

2

はい、それテストです。ブール式はステートメントに限定されませんif

dataデータフレーム(PANDAS)のように見えます。データフレームインデックスとして使用される式は、PANDASがセレクターまたはフィルターを示す方法です。これは、フィールドcategが変数cat(明らかに事前定義された変数)と一致するすべての行を選択することを意味します。この行のコレクションが新しいデータフレームになりsubsetます。


2

data.categ == catbooleanが等しい値のみを左に置くことによってデータフレームをフィルタリングするために使用されるbooleanリストを返しますTrue

ブール値は、ifステートメントだけでなく、多くの状況で使用されます。


2

ここでは、のディクショナリ内のdata.categ要素iteratingでチェックしています。 そして、それらが等しい場合は、ループを継続しています。catdata

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.