使用 Pandas 计算组中的唯一值
在处理包含分组到类别中的多个变量的数据集时,通常有必要确定数量与每个组相关的唯一值。 Pandas 是一种广泛使用的用于数据操作的 Python 库,它提供了多种方法来计算组内的唯一值。
一个常见的需求是计算每个域内唯一标识符的数量。给定一个包含 ID 和域列的数据框,我们寻求获得显示每个域的唯一 ID 计数的结果。
具体而言,考虑数据:
ID domain 0 123 vk.com 1 123 vk.com 2 123 twitter.com 3 456 vk.com 4 456 facebook.com 5 456 vk.com 6 456 google.com 7 789 twitter.com 8 789 vk.com
我们目标是实现以下输出:
domain count vk.com 3 twitter.com 2 facebook.com 1 google.com 1
为了实现这一点,我们可以在 Pandas groupby 操作中使用 nunique() 函数。通过按域列对数据框进行分组,然后将 nunique() 函数应用于 ID 列,我们可以获得每个域的唯一值的计数。生成的数据框将包含所需的结果:
df = df.groupby(['domain', 'ID']).nunique() print(df)
但是,在某些情况下,数据可能包含域名中的单引号等字符。为了处理这种情况,我们可以利用 str.strip("'") 函数在分组和计数之前删除单引号。这可以实现为:
df = df.ID.groupby([df.domain.str.strip("'")]).nunique() print(df)
或者,我们可以通过在 groupby 操作中链接 str.strip("'") 函数来简化代码:
df.groupby(df.domain.str.strip("'"))['ID'].nunique()
保留结果数据框中的域列,我们可以使用带有 as_index=False 参数的 agg() 函数:
df = df.groupby(by='domain', as_index=False).agg({'ID': pd.Series.nunique}) print(df)
此方法将返回一个包含域和计数列的数据框,其中 count表示与每个域关联的唯一 ID 的数量。
以上是如何计算熊猫群体中的唯一值?的详细内容。更多信息请关注PHP中文网其他相关文章!