Pandas Tutorials

Pandas DataFrameで一意な値を効率的に抽出・ソートする

Spread the love

Pandasは、データ操作と分析のための強力なPythonライブラリです。一般的なタスクには、DataFrameの列から一意の値を抽出してソートすることが含まれます。この記事では、これを実現するための2つの効率的な方法について説明します。

目次

unique()メソッドによる一意の値の抽出

unique()メソッドは、Pandas Series(単一の列)から一意の値を取得するための簡潔な方法を提供します。元の順序を維持したまま、一意の要素のみを含むNumPy配列を返します。


import pandas as pd

data = {'col1': ['A', 'B', 'A', 'C', 'B', 'D'],
        'col2': [1, 2, 1, 3, 2, 4]}
df = pd.DataFrame(data)

unique_values = df['col1'].unique()
print(unique_values)  # 出力: ['A' 'B' 'C' 'D']

このコードはサンプルのDataFrameを作成し、’col1’列に対してunique()を使用します。出力は、最初に現れた順序で一意の値を示すNumPy配列です。

drop_duplicates()メソッドによる一意の値の抽出

drop_duplicates()メソッドは、特に複数の列を扱う場合に、より柔軟性を提供します。主に重複行を削除するために使用されますが、単一の列から一意の値を効率的に抽出することもできます。


import pandas as pd

data = {'col1': ['A', 'B', 'A', 'C', 'B', 'D'],
        'col2': [1, 2, 1, 3, 2, 4]}
df = pd.DataFrame(data)

unique_values = df['col1'].drop_duplicates().values
print(unique_values)  # 出力: ['A' 'B' 'C' 'D']

この例では、’col1′ Seriesにdrop_duplicates()を直接適用します。.values属性は結果をNumPy配列に変換します。一意の値の順序は、DataFrameでの最初の出現順序を反映しています。

一意の値のソート

上記の両方のメソッドは一意の値を返しますが、必ずしもソートされた順序ではありません。ソートするには、NumPyのsort()関数またはPandasのsort_values()メソッドを使用します。


import pandas as pd
import numpy as np

data = {'col1': ['A', 'B', 'A', 'C', 'B', 'D'],
        'col2': [1, 2, 1, 3, 2, 4]}
df = pd.DataFrame(data)

# unique()とsort()を使用
unique_values = np.sort(df['col1'].unique())
print(unique_values)  # 出力: ['A' 'B' 'C' 'D']

# drop_duplicates()とsort_values()を使用
unique_values = df['col1'].drop_duplicates().sort_values().values
print(unique_values)  # 出力: ['A' 'B' 'C' 'D']

これは、両方の方法を使用したソートを示しています。np.sort()unique()からのNumPy配列で動作し、sort_values()drop_duplicates()からのPandas Seriesで使用されます。どちらもソートされた配列を生成します。sort_values()で降順にするには、ascending=Falseを使用します。

要約すると、unique()drop_duplicates()の両方で、一意の値を効率的に抽出できます。最適な選択肢は、具体的なニーズと、単一列または複数列を扱っているかによって異なります。目的の順序に合わせて適切な方法を使用して結果をソートすることを忘れないでください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です