Pandas 列での一意の値を取得する
-
unique
メソッドで Pandas の DataFrame カラムの一意の値を取得する -
drop_duplicates
メソッドを使って Pandas DataFrame のカラムの一意な値を取得する - Pandas DataFrame で列を並べ替える
この記事では、Pandas の DataFrame の列の一意の値を取得する方法を紹介します。
例えば、個人とその職業で構成された DataFrame があり、その職業の総数を知りたいとします。この場合、多くの人が同じ仕事をしている可能性があるため、単純に行数の合計を使用して一意の職業の合計を決定することはできません。このような場合は、Pandas ライブラリが提供する unique()
や drop_duplicates()
関数を利用することができます。
また、DataFrame のソート方法を知っておくことも重要です。sorted()
と sort_values()
関数を利用することで、これを実現することができます。
このチュートリアルでは、以下の DataFrame をソートして削除します。
import pandas as pd
import numpy as np
df = pd.DataFrame({"A": [7, 1, 5, 4, 2, 1, 4, 4, 8], "B": [1, 2, 8, 5, 3, 4, 2, 6, 8]})
print(df)
出力:
A B
0 7 1
1 1 2
2 5 8
3 4 5
4 2 3
5 1 4
6 4 2
7 4 6
8 8 8
unique
メソッドで Pandas の DataFrame カラムの一意の値を取得する
Pandas Series の unique()
メソッドは、DataFrame の単一の列を扱うときに使用し、列のすべての一意な要素を返します。unique()
関数を使った最終的な出力は配列です。
例:
import pandas as pd
import numpy as np
df = pd.DataFrame({"A": [7, 1, 5, 4, 2, 1, 4, 4, 8], "B": [1, 2, 8, 5, 3, 4, 2, 6, 8]})
print(df["A"].unique())
print(type(df["A"].unique()))
出力:
[7 1 5 4 2 8]
numpy.ndarray
drop_duplicates
メソッドを使って Pandas DataFrame のカラムの一意な値を取得する
drop_duplicates()
は、DataFrame またはそのサブセットに適用することができ、DataFrame オブジェクトの型を保持します。また、巨大なデータセットを扱う際には、重複した値を削除するための高速なオプションと考えられています。
例
import pandas as pd
import numpy as np
df = pd.DataFrame({"A": [7, 1, 5, 4, 2, 1, 4, 4, 8], "B": [1, 2, 8, 5, 3, 4, 2, 6, 8]})
print(df.drop_duplicates(subset="A"))
print(type(df.drop_duplicates(subset="A")))
出力:
A B
0 7 1
1 1 2
2 5 8
3 4 5
4 2 3
8 8 8
pandas.core.frame.DataFrame
Pandas DataFrame で列を並べ替える
sorted()
メソッドを用いてカラムをソートすることもできますが、最終的な結果はリスト型のオブジェクトに変換されます。reversed
パラメータに True
を指定することで、列値を降順にソートすることもできます。
以下の例では、カラムを昇順にソートし、重複した値を削除しています。
import pandas as pd
import numpy as np
df = pd.DataFrame({"A": [7, 1, 5, 4, 2, 1, 4, 4, 8], "B": [1, 2, 8, 5, 3, 4, 2, 6, 8]})
df_new = df.drop_duplicates(subset="A")
print(sorted(df_new["A"]))
print(type(sorted(df_new["A"])))
出力:
[1, 2, 4, 5, 7, 8]
list
sort_values()
は、DataFrame をソートするためのもう一つの柔軟なオプションです。ここでは、by
パラメータを使ってソートする列を指定し、ascending
パラメータを使って昇順か降順かを指定します。これにより、オブジェクトの型は Pandas DataFrame として保持されます。
次の例では、カラムを降順にソートし、重複した値を削除します。
import pandas as pd
import numpy as np
df = pd.DataFrame({"A": [7, 1, 5, 4, 2, 1, 4, 4, 8], "B": [1, 2, 8, 5, 3, 4, 2, 6, 8]})
df_new = df.drop_duplicates(subset="A")
print(df_new.sort_values(by="A", ascending=False))
type(df_new.sort_values(by="A"))
出力:
A B
8 8 8
0 7 1
2 5 8
3 4 5
4 2 3
1 1 2
pandas.core.frame.DataFrame
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn