Pandas DataFrame DataFrame.sample()関数

Minahil Noor 2023年1月30日
  1. pandas.DataFrame.sample() の構文
  2. コード例:DataFrame.sample()
  3. コード例:列を抽出するための DataFrame.sample()
  4. コード例:データの一部を生成する DataFrame.sample()
  5. コード例:DataFrame をオーバーサンプリングする DataFrame.sample()
  6. コード例:weights を指定する DataFrame.sample()
Pandas DataFrame DataFrame.sample()関数

Python Pandas DataFrame.sample() 関数は、DataFrame からランダムな行または列のサンプルを生成します。サンプルには、複数の行または列を含めることができます。

pandas.DataFrame.sample() の構文

DataFrame.sample(
    n=None, frac=None, replace=False, weights=None, random_state=None, axis=None
)

パラメーター

n これは整数値です。これは、DataFrame から選択される行または列の乱数を表します。
frac これは float 値です。DataFrame から抽出されるランダムな行または列の割合を指定します。たとえば、frac=0.45 は、選択されたランダムな行または列が元のデータの 45%になることを意味します。
replace これはブール値です。True に設定されている場合、データを置き換えてサンプルを返します。
weights これは文字列または N 次元の配列のような構造です。DataFrame で呼び出された場合、軸が 0 のときに列の名前を受け入れます。重み列の値が大きい行は、サンプルデータとして返される可能性が高くなります。
random_state これは整数または numpy.random.RandomState 関数です。整数の場合、すべての反復で同じ数の行または列を返します。それ以外の場合は、numpy.random.RandomState オブジェクトを返します。
axis 整数または文字列です。行または列のいずれかでターゲット軸について通知します。0 または index、1 または columns を指定できます。

戻り値

Series または DataFrame を返します。返される Series または DataFrame は、元の DataFrame からランダムに選択された n 個のアイテムを含む呼び出し元です。

コード例:DataFrame.sample()

デフォルトでは、関数は行を含むサンプル、つまり axis = 1 を返します。

import pandas as pd

dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 75, 4: 95},
                    'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
                    'Obtained Marks': {0: 56, 1: 75, 2: 82, 3: 64, 4: 67}})
print(dataframe)

DataFrame は次のようになります

   Attendance    Name  Obtained Marks
0          60  Olivia              56
1         100    John              75
2          80   Laura              82
3          75     Ben              64
4          95   Kevin              67

この関数のすべてのパラメーターはオプションです。パラメータを渡さずにこの関数を実行すると、ランダムな単一の行が出力として返されます。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)
dataframe1 = dataframe.sample()
print(dataframe1)

出力 1:

   Attendance Name  Obtained Marks
3          75  Ben              64

出力 2:

   Attendance   Name  Obtained Marks
4          95  Kevin              67

出力 1 と出力 2 は、同じプログラムの 2 回の実行を示しています。この関数は、指定された DataFrame から行のランダムなサンプルを生成するたびに。

コード例:列を抽出するための DataFrame.sample()

サンプルの列を生成するには、軸を 1 に変更するだけです。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)
dataframe1 = dataframe.sample(n=1, axis=1)
print(dataframe1)

出力:

     Name
0  Olivia
1    John
2   Laura
3     Ben
4   Kevin

関数は、出力として単一の列のサンプルを生成しました。列の数はパラメータ n = 1 によって設定されます。

コード例:データの一部を生成する DataFrame.sample()

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)
dataframe1 = dataframe.sample(frac=0.5)
print(dataframe1)

出力:

   Attendance   Name  Obtained Marks
3          75    Ben              64
4          95  Kevin              67
1         100   John              75

返されるサンプルは元のデータの 50%です。

コード例:DataFrame をオーバーサンプリングする DataFrame.sample()

frac> 1 の場合、同じ行を複数回サンプリングできるようにするには、パラメータ replaceTrue にする必要があります。それ以外の場合は、ValueError を発生させます。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)
dataframe1 = dataframe.sample(frac=1.5, replace=True)
print(dataframe1)

出力:

   Attendance   Name  Obtained Marks
3          75     Ben              64
0          60  Olivia              56
1         100    John              75
2          80   Laura              82
1         100    John              75
2          80   Laura              82
0          60  Olivia              56
4          95   Kevin              67

replaceFalse に設定されている間、frac が 1 より大きい場合、ValueError が発生します。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)
dataframe1 = dataframe.sample(frac=1.5, replace=False)
print(dataframe1)

出力:

Traceback (most recent call last):
  File "..\test.py", line 6, in <module>
    dataframe1 = dataframe.sample(frac=1.5, replace=False)
  File "..\lib\site-packages\pandas\core\generic.py", line 5044, in sample
    raise ValueError(
ValueError: Replace has to be set to `True` when upsampling the population `frac` > 1.

コード例:weights を指定する DataFrame.sample()

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)
dataframe1 = dataframe.sample(n=2, weights="Attendance")
print(dataframe1)

出力:

   Attendance   Name  Obtained Marks
1         100   John              75
4          95  Kevin              67

ここでは、Attendance 列の値が大きい行が返されたサンプルで選択されています。

関連記事 - Pandas DataFrame