如何计算Pandas Groupby对象中的唯一值
在这里,我们可以使用不同的方法计算Pandas groupby对象中的唯一值。本文描述了如何使用Pandas .NET检索数据框架中某些属性的唯一值。
方法1:使用nunique()计算唯一值
Pandas dataframe.nunique()函数返回一个带有指定轴的唯一观测值总数的系列。如果我们将轴的值设为0,就会发现索引轴上的唯一观测值总数。
# import pandas
import pandas as pd
# create dataframe
df = pd.DataFrame({'Col_1': ['a', 'b', 'c', 'b', 'a', 'd'],
'Col_2': [1, 2, 3, 3, 2, 1]})
# call groupby method.
df = df.groupby('Col_1')['Col_2'].nunique()
display(df)
输出:
Col_1
a 2
b 2
c 1
d 1
Name: Col_2, dtype: int64
方法2:使用agg()计算唯一值
使用到的函数:
- groupby()函数是用来根据一些标准将数据分成组。Pandas的对象可以在其任何一个轴上进行分割。
- agg()用于传递一个函数或函数列表,以应用于一个系列,甚至一个系列中的每个元素。在函数列表的情况下,多个结果由agg()方法返回。
- Pandas reset_index()是一个重置df的索引的方法。 reset-index()方法设置一个从0到数据长度的整数列表作为索引。
示例 1:
在输出中,你会发现col_1中存在的元素是该列中唯一存在的元素,也就是说,a出现了2次。
# import pandas
import pandas as pd
# create dataframe
df = pd.DataFrame({'Col_1': ['a', 'b', 'c', 'b', 'a', 'd'],
'Col_2': [1, 2, 3, 3, 2, 1]})
# print original dataframe
print("original dataframe:")
display(df)
# call groupby method.
df = df.groupby("Col_1")
# call agg method
df = df.agg({"Col_2": "nunique"}).reset_index()
# print dataframe
print("final dataframe:")
display(df)
输出:
示例 2:
在输出中,你会发现col_2中存在的元素是该列中唯一存在的元素,即3出现了2次。
# import pandas
import pandas as pd
# create dataframe
df = pd.DataFrame({'Col_1': ['a', 'b', 'c', 'b', 'a', 'd'],
'Col_2': [1, 2, 3, 3, 2, 1]})
# print original dataframe
print("original dataframe:")
display(df)
# call groupby method.
df = df.groupby("Col_2")
# call agg method
df = df.agg({"Col_1": "nunique"}).reset_index()
# print dataframe
print("final data frame:")
display(df)
输出: