Pandasのunique()関数:データの中の「ひとつだけ」を見つけ出す魔法
データ分析の世界でよく使うPythonライブラリ、Pandas。その中に、まるで魔法のようにデータの中のユニークな値を抽出してくれる便利な関数があります。それがunique()
関数です。この記事では、unique()
関数の基本的な使い方から、少し応用的な使い方まで、初心者の方にもわかりやすく解説します。
unique()
関数って何?
unique()
関数は、PandasのSeries(1次元のデータ構造)に対して使うことができます。Seriesの中にある値の中で、重複しているものを取り除き、ユニーク(唯一無二)な値を抽出してくれます。例えば、性別、地域、商品カテゴリなど、同じ値が何度も登場するようなデータに対して効果を発揮します。
基本的な使い方
まずは簡単な例を見てみましょう。
import pandas as pd
data = pd.Series(['りんご', 'みかん', 'りんご', 'ぶどう', 'みかん'])
unique_values = data.unique()
print(unique_values)
このコードを実行すると、以下の結果が出力されます。
['りんご' 'みかん' 'ぶどう']
data
というSeriesの中に、'りんご'と'みかん'が重複して含まれていましたが、unique()
関数を使うことで、重複が取り除かれ、ユニークな値だけがNumPy配列として返されました。
返り値について
unique()
関数の返り値はNumPy配列です。 NumPy配列は、リストと似たようなものですが、数値計算に特化しており、Pandasとも相性が良いデータ構造です。 返り値がNumPy配列であるため、NumPyの関数やメソッドを使ってさらに加工することも可能です。
NaN (欠損値) の扱い
データ分析をしていると、データの中に欠損値(値がない状態)が含まれていることがよくあります。 Pandasでは、欠損値は NaN
(Not a Number) という特別な値で表されます。 unique()
関数は、この NaN
もユニークな値として扱います。
import pandas as pd
import numpy as np
data = pd.Series(['りんご', 'みかん', np.nan, 'ぶどう', np.nan])
unique_values = data.unique()
print(unique_values)
このコードを実行すると、以下の結果が出力されます。
['りんご' 'みかん' nan 'ぶどう']
NaN
がきちんとユニークな値として含まれていることがわかります。 もし、 NaN
を除外したい場合は、後述するdropna()
関数などを組み合わせて処理する必要があります。
応用的な使い方:value_counts()
との組み合わせ
unique()
関数とよく組み合わせて使われるのが、value_counts()
関数です。 value_counts()
関数は、各値が何回登場するかをカウントしてくれます。 これら2つの関数を組み合わせることで、データの全体像を把握しやすくなります。
import pandas as pd
data = pd.Series(['りんご', 'みかん', 'りんご', 'ぶどう', 'みかん', 'りんご'])
value_counts = data.value_counts()
print(value_counts)
このコードを実行すると、以下の結果が出力されます。
りんご 3
みかん 2
ぶどう 1
dtype: int64
'りんご'が3回、'みかん'が2回、'ぶどう'が1回登場することがわかります。 value_counts()
の結果から、ユニークな値の種類とその出現回数を把握することができます。
欠損値(NaN)の処理
先述の通り、unique()
関数は欠損値 (NaN
) をユニークな値として扱います。もし、欠損値を除外したい場合は、dropna()
関数を使って欠損値を取り除いてからunique()
関数を適用します。
import pandas as pd
import numpy as np
data = pd.Series(['りんご', 'みかん', np.nan, 'ぶどう', np.nan])
data_without_nan = data.dropna()
unique_values = data_without_nan.unique()
print(unique_values)
このコードを実行すると、以下の結果が出力されます。
['りんご' 'みかん' 'ぶどう']
dropna()
関数によって NaN
が取り除かれ、'りんご', 'みかん', 'ぶどう' のみがユニークな値として抽出されました。
まとめ
unique()
関数は、データの中のユニークな値を簡単に抽出できる便利な関数です。基本的な使い方から、value_counts()
関数との組み合わせ、欠損値の処理まで、幅広く活用できます。ぜひ、unique()
関数を使いこなして、データ分析のスキルアップを目指してください。