Python

pandas.DataFrameでユニークな値を抽出する方法

pandasのデータフレームで行数じゃなくて重複してないデータの数ってどうやって取得するんだっけ?


pandas.DataFrame は表形式のデータを扱うのに便利である。

表形式データは内部的にはExcelのように行や列を持っているのだが、ときにはデータの中で一意な値がいくつあるか知りたい場合がある。

データの長さであれば len() で確認できるが、ユニークな値を抽出するにはどうしたらよいのか。

そこで今回はpandas.DataFrameでユニークな値を抽出する方法について紹介する。

この記事を書いている人


システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。

記事を読むメリット

pandas.DataFrameでユニークな値を抽出する方法がわかり、データフレームのデータ抽出が得意になる


データ準備

DataFrameにするデータをまず用意する。

以下の内容のCSVを pandas_unique_sample.csv として保存する。

CSV

id,age,score
a,12,100
b,12,105
c,12,90
d,13,


そしてpandas.DataFrameとして read_csv() で読み込む。

DATA

import pandas as pd

df1 = pd.read_csv("pandas_unique_sample.csv")
print(df1)

#   id  age  score
# 0  a   12  100.0
# 1  b   12  105.0
# 2  c   12   90.0
# 3  d   13    NaN


このデータを使って解説する。



pandas.DataFrameでユニークな値を抽出する方法

pandas.DataFrameでユニークな値を抽出するには unique() を利用する。

使い方は df.["カラム名"].unique()

対象カラムに対して重複値を除いた値の配列が返ってくる。

SAMPLE

print(df1["id"].unique())
print(type(df1["id"].unique()))

# ['a' 'b' 'c' 'd']
# <class 'numpy.ndarray'>

print(df1["age"].unique())
print(type(df1["age"].unique()))

# [12 13]
# <class 'numpy.ndarray'>

print(df1["score"].unique())
print(type(df1["score"].unique()))

# [100. 105.  90.  nan]
# <class 'numpy.ndarray'>


結果を見てわかるように、欠損値である nan もユニーク値のひとつとして扱われる。




似ているが異なるpandas.unique

似ているようで異なる pandas.unique() というメソッドもある。

こちらはインスタンスのメソッドではなく、クラスメソッドで引数に一意の値を取得したいリスト等を pd.unique(<一意な値を取得したいリスト>) のようにセットする。

SAMPLE

import numpy as np

print(pd.unique(["aaa","bbb","bbb","ccc"]))
# ['aaa' 'bbb' 'ccc']

print(pd.unique(np.array(["ddd","ddd","eee","eee"])))
# ['ddd' 'eee']

print(pd.unique(df1["age"]))
# [12 13]


サンプルコードの通り、pandas.unique() の引数はListでもndarrayでもいいし、pandas.Seriesでも良い。



まとめ

今回はpandas.DataFrameでユニークな値を抽出する方法について解説した。

pandas.DataFrameでユニークな値を抽出するには以下の方法が使える。

ココがポイント

  • unique() を、 df.["カラム名"].unique() のように使用する


わかりやすいメソッドだね


他にもpandas関連の記事もあるので、もし気になるものがあれば見てみて欲しい

ITipsと同じようなブログを作る方法

ブログに興味がありますか?

もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

ランキング参加中

にほんブログ村 IT技術ブログへ

他にもブログやSNSで紹介してくれると励みになります。

はてブのコメントで酷評されると泣きます(´;ω;`)

-Python
-

© 2023 ITips