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