Python Pandas入門:各列に存在する一意(ユニーク)な値を表示する方法
PandasのDataFrameで各列に存在する一意(ユニーク)な値を確認したい場面は多くあります。例えば、データの重複チェックやカテゴリの把握などです。そんなときに便利なのが unique() メソッドです。このメソッドの引数に対象となる列を指定することで、その列に含まれる重複のない値を取得できます。
ライブラリのインポート
まず、必要なライブラリをインポートします。
import pandas as pd
DataFrameの作成
次に、「Student(学生名)」と「Result(合否結果)」の2つの列を持つDataFrameを作成します。意図的に重複したレコードを含めています。
dataFrame = pd.DataFrame(
{
"Student": ['Jack', 'Robin', 'Ted', 'Robin', 'Scarlett', 'Kat', 'Ted'],
"Result": ['Pass', 'Fail', 'Pass', 'Fail', 'Pass', 'Pass', 'Pass']
}
)このデータでは、学生名「Robin」と「Ted」が複数回登場しており、結果も「Pass」「Fail」の2種類のみとなっています。
unique()メソッドで一意な値を取得する
各列を pd.unique() メソッドに渡すことで、それぞれの一意な値を抽出できます。
resStudent = pd.unique(dataFrame.Student) resResult = pd.unique(dataFrame.Result)
完全なサンプルコード
以下に実行可能なコード全体を示します。
import pandas as pd
# DataFrameを作成
dataFrame = pd.DataFrame(
{
"Student": ['Jack', 'Robin', 'Ted', 'Robin', 'Scarlett', 'Kat', 'Ted'],
"Result": ['Pass', 'Fail', 'Pass', 'Fail', 'Pass', 'Pass', 'Pass']
}
)
print("DataFrame ...\n", dataFrame)
# 一意な値を取得
resStudent = pd.unique(dataFrame.Student)
resResult = pd.unique(dataFrame.Result)
print("\nStudent列の一意な値:", resStudent)
print("\nResult列の一意な値:", resResult)実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame ...
Result Student
0 Pass Jack
1 Fail Robin
2 Pass Ted
3 Fail Robin
4 Pass Scarlett
5 Pass Kat
6 Pass Ted
Student列の一意な値: ['Jack' 'Robin' 'Ted' 'Scarlett' 'Kat']
Result列の一意な値: ['Pass' 'Fail']補足:nunique()との違い
一意な値そのものが必要な場合は unique() を使用しますが、一意な値の「個数」だけを知りたい場合は nunique() メソッドが便利です。また、DataFrame全体に対して dataFrame['列名'].unique() のようにSeriesオブジェクトから直接呼び出す方法も一般的なので、用途に応じて使い分けるとよいでしょう。
-
Python Pandas入門 – インデックスから一意の値を取得する方法(index.unique)
Pandasでインデックス(Index)に含まれる一意の値(重複を除いた値)を取得するには、index.unique()メソッドを使用します。このメソッドは、値を出現順にそのまま返すのが特徴で、自動的に並べ替え(ソート)は行われません。 まず、必要なライブラリをインポートしましょう。 import pandas as pd Pandasインデックスの作成 サンプルとして、重複した値を含む整数のインデックスを作成します。 index = pd.Index([10, 50, 70, 10, 90, 50, 10, 30]) インデックスの内容を確認する print()関数を使って、作成したイン
-
Python Pandasでnull以外の値を前方へ転送する方法(ffillの使い方)
Pandasのfillna()で欠損値(NaN)を前方向きに埋める Pandasでは、fillna()メソッドのmethodパラメータを使うことで、null以外の値を前方(上の行から下の行へ)に転送できます。前方補完(forward fill)を行うには、値としてffillを指定します。 fillna(method=ffill) なお、Pandas 2.1以降ではmethod引数は非推奨となっているため、専用メソッドのffill()を使うことが推奨されています。どちらも同じ結果が得られます。 サンプルデータの準備 ここでは、一部のセルにNaN(欠損値)を含むCSVファイル「SalesData.