【Python Pandas】unique()メソッドで単一の列から一意の値を抽出する方法
Pandas DataFrameの特定の列から重複を除いた一意の値を取得したい場合は、unique()メソッドを使います。例えば、従業員データを管理するDataFrameでは、同名の従業員が存在する可能性があるため、名前が重複することがあります。そのような場合に、unique()を使えば重複のない従業員名の一覧を簡単に抽出できます。
ライブラリのインポート
まず、必要なライブラリをインポートします。ここでは、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']
}
)一意の値を取得する
列「EmpName」から一意の従業員名を取得するには、以下のように記述します。
dataFrame['EmpName'].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"\nUnique Name of Employees = {dataFrame['EmpName'].unique()}")実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame ...
EmpName Zone
0 John North
1 Ted South
2 Jacob South
3 Scarlett East
4 Ami West
5 Ted East
6 Scarlett North
Unique Name of Employees = ['John' 'Ted' 'Jacob' 'Scarlett' 'Ami']補足:unique()とnunique()の違い
なお、一意の値そのものを配列として取得したい場合はunique()を使用しますが、一意の値の「個数」だけを知りたい場合はnunique()メソッドが便利です。
# 一意の値の個数を取得 count = dataFrame['EmpName'].nunique() print(count) # 出力: 5
また、出現回数を確認したい場合はvalue_counts()を使うことで、各値ごとの件数を集計できます。用途に応じてこれらのメソッドを使い分けると、データ分析の効率が大きく向上します。
-
【Python】Pandasデータフレームのマルチレベル列インデックスからレベルを削除する方法
マルチレベル列インデックスからレベルを削除する方法 Pandasのマルチレベル(階層型)列インデックスから特定のレベルを取り除くには、columns.droplevel()メソッドを使用します。引数に削除したいレベルの位置(0始まりの整数)やレベル名を渡すだけで、指定した階層を簡単に除去できます。なお、マルチインデックス自体はMultiIndex.from_tuples()を使うことで、タプルのリストから列方向に作成できます。 以下では、実際の手順に沿って、列インデックスのレベルを削除する流れを解説します。 ステップ1:列方向にマルチインデックスを作成する まず、MultiIndex.fro
-
Pythonでリストから一意の値(重複しない要素)を抽出する3つの方法
Pythonのリストは、[](角括弧)の中に複数の要素を格納できるデータ構造です。異なるデータ型を混在させることもでき、重複した値を含むこともあります。本記事では、リストから重複を除いた一意の値だけを取り出す方法を、代表的な3つのアプローチに分けて解説します。方法1:append() と not in を使う方法まず空の新しいリストを作成し、元のリストの要素を1つずつ確認しながら、まだ新しいリストに存在しない場合のみ追加していく方法です。forループと not in 条件を組み合わせることで、要素の存在チェックを行い、未登録の要素だけを追加できます。コード例def catch_unique(l