テービーテックのデータサイエンス

未経験リケジョがゼロからデータサイエンティストを目指す姿を記す奮闘記です。2019/12/05文系出身者が共同で更新を開始

TAG index

▲本日の関数==unique()==

f:id:TBT_matsu:20200402152259p:plain

本日の関数:unique()

こんにちは。
テービーテックの村松です。

本日ご紹介する関数は「unique()」。
※※これまでご紹介した関数はこちら※※

どんな関数?

unique()は名前の通りユニークな要素の値を返します。
データフレームの中身を見るときに、どの項目にどんな種類の要素があるのか確認したいときとかに使うことが多いですね。

さて、今回はpandasの関数としてこのunique()をご紹介するんですが、pandasの中でも3種類あります。
・pandas.unique()
・pandas.Series.unique()
・pandas.Index.unique()
です。
正確には別の関数としてご紹介すべきなのでしょうが、今回はまとめさせていただきます。

なんかよくお世話になっていたのに、しっかり調べたの初めてでした。お恥ずかしい。
しかもNumPyもunique()って関数あるんですよね。
なんかちょっとずつ仕様が違うのやめて欲しい(涙目)ってなるのは私がPythonを使いこなせていないせいですね。精進します。

引数は?

今回は特にありません。

使ってみよう

input

今回はリストとデータフレームを用意

#リスト
lunch = ['ハンバーガー', 'おにぎり', 'そば', 'ラーメン', 'そば', 'おにぎり', 'パン']
#データフレーム
df

f:id:TBT_matsu:20200408112926p:plain

コード
#pandas.unique()の場合。
#引数には1次元配列のものを渡します。
pd.unique(lunch)
##結果
array(['ハンバーガー', 'おにぎり', 'そば', 'ラーメン', 'パン'], dtype=object)
#データフレームとかの列などでもOK。
pd.unique(df['Price'])
##結果
array(['560', '330', '620', '780', '420', '250', '280'], dtype=object)
#pandas.Series.unique()の場合。
df['Day'].unique()
##結果
array(['2020-04-01T00:00:00.000000000', '2020-04-02T00:00:00.000000000',
       '2020-04-03T00:00:00.000000000', '2020-04-04T00:00:00.000000000',
       '2020-04-05T00:00:00.000000000', '2020-04-06T00:00:00.000000000',
       '2020-04-07T00:00:00.000000000'], dtype='datetime64[ns]')
#Seriesオブジェクト用なのでリストで渡すと
lunch.unique()
##結果
AttributeError: 'list' object has no attribute 'unique'
エラーが出ます。
#pandas.Index.unique()の場合。
#字面の通りインデックスの要素を返してくれます
df.index.unique()
##結果
Index(['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dtype='object')

これらの戻り値は入っている順番通りの並びで出てきます。
要素が数字でも同じくですね。