为什么在 pandas 中使用“==”return 系列而不是 bool?
Why does using "==" return a Series instead of bool in pandas?
我只是不明白第二行的“==”是什么意思:
- 这不是测试,没有 if 语句...
- 这不是变量声明...
我以前从没见过这个,问题是 data.ctage==cat
是 pandas 系列而不是测试...
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
它创建一个带有索引的布尔系列,其中 data.categ
等于 cat
,使用此布尔掩码,您可以过滤数据框,换句话说 subset
将包含所有记录其中 categ
是存储在 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
它正在测试 data.categ
的每个元素是否与 cat
相等。这会产生一个 True/False 值的向量。这作为索引器传递给 data[]
,其中 returns 来自 data
的行对应于向量中的真值。
总而言之,整个表达式 returns 来自 data
的行的子集,其中 data.categ
的值等于 cat
。
(似乎可以使用 data.groupBy('categ').apply(someFunc)
更优雅地完成整个操作。)
是的,它是一个测试。布尔表达式 不 限于 if
语句。
看起来好像data
是一个数据框(PANDAS)。用作数据帧索引的表达式是 PANDAS 表示 selector 或过滤器的方式。这表示 select 字段 categ
与变量 cat
(显然是预定义变量)匹配的每一行。此行集合成为一个新的数据框,subset
。
data.categ == cat
将 return 一个布尔值列表,该列表将用于通过仅保留布尔值等于 True
.
的值来过滤数据框
布尔值在许多情况下使用,不仅在 if
语句中。
此处您正在检查 data.categ
与元素迭代,cat
,在 data
的字典中。
如果它们相等,您将继续循环。
我只是不明白第二行的“==”是什么意思:
- 这不是测试,没有 if 语句...
- 这不是变量声明...
我以前从没见过这个,问题是 data.ctage==cat
是 pandas 系列而不是测试...
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
它创建一个带有索引的布尔系列,其中 data.categ
等于 cat
,使用此布尔掩码,您可以过滤数据框,换句话说 subset
将包含所有记录其中 categ
是存储在 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
它正在测试 data.categ
的每个元素是否与 cat
相等。这会产生一个 True/False 值的向量。这作为索引器传递给 data[]
,其中 returns 来自 data
的行对应于向量中的真值。
总而言之,整个表达式 returns 来自 data
的行的子集,其中 data.categ
的值等于 cat
。
(似乎可以使用 data.groupBy('categ').apply(someFunc)
更优雅地完成整个操作。)
是的,它是一个测试。布尔表达式 不 限于 if
语句。
看起来好像data
是一个数据框(PANDAS)。用作数据帧索引的表达式是 PANDAS 表示 selector 或过滤器的方式。这表示 select 字段 categ
与变量 cat
(显然是预定义变量)匹配的每一行。此行集合成为一个新的数据框,subset
。
data.categ == cat
将 return 一个布尔值列表,该列表将用于通过仅保留布尔值等于 True
.
布尔值在许多情况下使用,不仅在 if
语句中。
此处您正在检查 data.categ
与元素迭代,cat
,在 data
的字典中。
如果它们相等,您将继续循环。