Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python Pandas】複数の列から一意の値(ユニークな値)を抽出する方法

はじめに

PythonのPandasで複数の列から一意の値(ユニークな値)を取得したい場合は、unique()メソッドを使用します。例えば、従業員データを管理するDataFrameに「EmpName(氏名)」と「Zone(担当エリア)」という2つの列があるとしましょう。同じ名前の従業員が存在したり、1つのエリアに複数の従業員が所属したりすることはよくあります。このように値が重複しがちなデータの中から、重複を除いた一意の従業員名やエリア名だけを取り出したいときに、unique()が非常に便利です。

必要なライブラリのインポート

まず、Pandasをインポートします。ここでは慣例に従い、「pd」という別名(エイリアス)を付けています。

import pandas as pd

サンプル用のDataFrameを作成する

次に、動作確認用のDataFrameを作成します。今回は「EmpName」と「Zone」の2つの列を持つデータを用意しました。

dataFrame = pd.DataFrame(
    {
        "EmpName": ['John', 'Ted', 'Jacob', 'Scarlett', 'Ami', 'Ted', 'Scarlett'],
        "Zone": ['North', 'South', 'South', 'East', 'West', 'East', 'North']
    }
)

このDataFrameから「EmpName」と「Zone」の両方の列に含まれる一意の値を取得するには、pd.concat()で2つの列を縦方向に連結してから、その結果に対してunique()を適用します。

{pd.concat([dataFrame['EmpName'], dataFrame['Zone']]).unique()}

完全なコード例

以下は、ここまでの手順をまとめた完全なコードです。

import pandas as pd

# DataFrameを作成
dataFrame = pd.DataFrame(
    {
        "EmpName": ['John', 'Ted', 'Jacob', 'Scarlett', 'Ami', 'Ted', 'Scarlett'],
        "Zone": ['North', 'South', 'South', 'East', 'West', 'East', 'North']
    }
)

print("DataFrame ...\n", dataFrame)

# 複数の列から一意の値を取得
print(f"\nFetching unique Values from the two columns and concatenate them:\n \
{pd.concat([dataFrame['EmpName'], dataFrame['Zone']]).unique()}")

実行結果

上記のコードを実行すると、次のような出力が得られます。2つの列を連結したうえで重複が除去され、9つの一意の値が返されていることがわかります。

DataFrame ...
     EmpName   Zone
0       John  North
1        Ted  South
2      Jacob  South
3   Scarlett   East
4        Ami   West
5        Ted   East
6   Scarlett  North

Fetching unique Values from the two columns and concatenate them:
['John' 'Ted' 'Jacob' 'Scarlett' 'Ami' 'North' 'South' 'East' 'West']

補足:単一の列から一意の値を取得する場合

1つの列だけを対象にする場合は、pd.concat()を使う必要はなく、その列に対して直接unique()を呼び出すだけで済みます。

dataFrame['EmpName'].unique()

また、一意の値に加えてそれぞれの出現回数も確認したい場合は、value_counts()メソッドを使うと便利です。用途に応じてこれらのメソッドを使い分けることで、データの前処理や集計作業を効率化できます。

  1. Python・PandasのDataFrameから複数の列を選択する方法

    Pandasでは、CSVファイルから読み込んだDataFrameに対して、二重の角括弧 [[ ]] を使うことで、複数の列を簡単に選択できます。本記事では、具体的な手順とサンプルコードを交えて解説します。 前提:サンプルデータについて ここでは、Microsoft Excelで開いた以下のような内容のCSVファイル(SalesData.csv)を例にします。このデータには「Car(車名)」「Reg_Price(登録価格)」「Units(台数)」の3つの列が含まれています。 ステップ1:CSVファイルをPandas DataFrameに読み込む まず、read_csv() メソッドを使って、C

  2. Python PandasでDataFrameの複数のデータ列をプロットする方法

    PythonのPandasライブラリを使えば、DataFrameに含まれる複数のデータ列を簡単に可視化できます。本記事では、plot()メソッドを使用し、kindパラメータをbarに設定することで、複数の列を1つの棒グラフとして描画する方法を解説します。必要なライブラリのインポートまず、PandasとMatplotlibという2つの必須ライブラリをインポートします。Pandasはデータ操作を、Matplotlibはグラフの表示を担当します。import pandas as pd import matplotlib.pyplot as mpサンプルデータの準備ここでは、各チームのランキングポイン