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