PandasにおけるDataFrameの列から一意の値を取得する

スポンサーリンク

PandasにおけるDataFrameの列から一意の値を取得してみます。

なお、一意とは「重複しない」という意味です。つまり”ユニーク(他に類を見ない)”であるとも言えます。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■DataFrameを作成する

DataFrameの列から一意の値を取得する前に、DataFrameを作成します。

■コード

import pandas as pd

data = {
    '名前':['田村','吉岡','佐々木','小島','上村'],
    '出身':['北海道','愛知','宮城','東京','大阪'],
    '年齢':[28,37,41,25,32]
}

df = pd.DataFrame(data)

print(df)

インポートでPandasモジュールを呼び出します。dataという変数を作成し、その中に「名前」、「出身」、「年齢」の3つの列を格納します。

格納後、dfという変数を作成し、pd.DataFrame()と記述し、DataFrameを作成。作成後、dfという変数に格納します。

■実行

このスクリプトを実行すると、作成したDataFrameが出力されます。

■DataFrameの列から一意の値を取得する

DataFrameの用意ができましたので、DataFrameの列から一意の値を取得するスクリプトを書いていきます。

■コード

import pandas as pd

data = {
    '名前':['田村','吉岡','佐々木','小島','上村'],
    '出身':['北海道','愛知','宮城','東京','大阪'],
    '年齢':[28,37,41,25,32]
}

df = pd.DataFrame(data)

print(df)
print(df.出身.unique())

DataFrameの列から一意の値を取得する場合は、、dfという変数を作成し、pd.DataFrame()と記述し、DataFrameを作成。その後にunique()を使用し、DataFrameの列を指定します。これで列から一意の値を取得することができます。

指定後、print関数で一意の値を出力してみます。

■実行

このスクリプトを「get_val_col_uniq_2.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、作成したDataFrameで、今回指定した列の値で一意のものを取得し出力できました。

■重複している場合

では、次にDataFrameの列の値が重複している場合はどうなるのかやってみます。

■コード

import pandas as pd

data = {
    '名前':['田村','吉岡','佐々木','小島','上村'],
    '出身':['北海道','北海道','北海道','北海道','北海道'],
    '年齢':[28,37,41,25,32]
}

df = pd.DataFrame(data)

print(df)
print(df.出身.unique())

今回は「出身」という列の値が全て重複しています。

■実行

このスクリプトを「df_headers_3.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、DataFrameの「出身」という列の値は全て重複していますので、重複せず出力されるものは、「北海道」のみになります。

■列内の一意の値の数を取得する

では、次にDataFrameの列内の一意の値の数を取得してみます。

■コード

import pandas as pd

data = {
    '名前':['田村','吉岡','佐々木','小島','上村'],
    '出身':['北海道','愛知','宮城','東京','大阪'],
    '年齢':[28,28,28,25,32]
}

df = pd.DataFrame(data)

print(df)
print(df.年齢.nunique(dropna = True))

DataFrameの列内の一意の値の数を取得する場合は、nunique()を使用することで一意の値の個数を取得できます。さらに括弧内で「dropna = True」と記述すると、NaN値を除外することができます。

■実行

このスクリプトを「get_val_col_uniq_4.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、DataFrameの列内の一意の値の数を取得し出力できました。

コメント

タイトルとURLをコピーしました