mei_13のPython講座 ロゴ

【Pythonコラム】Pandasのunique()関数:データの中の「ひとつだけ」を見つけ出す魔法




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()関数を使いこなして、データ分析のスキルアップを目指してください。



< 複数の戻り値
コラム一覧に戻る
Pillow >

レッスン概要

◯月額4,000円で質問し放題!!
◯完全オンライン
◯翌日までには必ず返信
◯挫折しない独自の学習メソッド
◯圧倒的高評価!!
◯テキストベースで時間を選ばない
◯高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!