pandasで要素のユニークカウント

pandasのDataframeやSeriesの要素を重複を排除してカウントとする関数の紹介です。
nuniqueというのを使います。

pandas.DataFrame.nunique
pandas.Series.nunique

分析の中で、ユニークカウントする機会はよくあると思うのですが、この関数の知名度が低いようで、
少し回りくどい方法を取っている人をよく見かけます。

使い方は簡単です。 試しに、4種類の値からなる要素10個の配列でやってみましょう。


import pandas as pd
data = pd.Series(['c', 'b', 'c', 'a', 'a', 'a', 'c', 'a', 'c', 'd'])
print(data.nunique())  # 4

簡単でした。

参考ですが、この関数を使わない方法も色々あります。


# value_counts を使って、その長さを取る。
print(len(data.value_counts()))  # 4

# ユニークな値のリストを取得してその長さを取る。
print(len(data.unique()))  # 4

# 集合に変換してその要素数を取る
print(len(set(data)))  # 4

nunique の知名度を考えると、これらの書き方の方が適切な場面もあるかもしれません。

for文で実装してるような人も見たことがありますが流石にこういうのは避けた方がいいと思います。


# 悪い例
cnt = 0
tmp_set = set()
for d in data:
    if d not in tmp_set:
        cnt += 1
        tmp_set.add(d)
print(cnt)  # 4

コメントを残す

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