Pandas での体系的なサンプリング (例付き)


研究者は多くの場合、母集団からサンプルを採取し、そのサンプルのデータを使用して母集団全体についての結論を導き出します。

一般的に使用されるサンプリング方法は系統的サンプリングであり、これは単純な 2 段階のプロセスで実装されます。

1.母集団の各メンバーを特定の順序で配置します。

2.ランダムな開始点を選択し、サンプルの一部となるメンバーを n 人から1 人選択します。

このチュートリアルでは、Python で pandas DataFrame で体系的なサンプリングを実行する方法について説明します。

例: パンダ間の系統的なサンプリング

教師が、合計 500 人の生徒がいる学校から 100 人の生徒のサンプルを取得したいとします。彼女は、各生徒を姓に基づいてアルファベット順に配置し、開始点をランダムに選択し、サンプルに含める生徒を 5 人ごとに選択するという体系的なサンプリングを使用することを選択しました。

次のコードは、Python で使用する偽のデータ フレームを作成する方法を示しています。

 import pandas as pd
import numpy as np
import string
import random

#make this example reproducible
n.p. random . seeds (0)

#create simple function to generate random last names
def randomNames(size=6, chars=string. ascii_uppercase ):
    return ''. join (random. choice (chars) for _ in range(size))

#createDataFrame
df = pd.DataFrame({'last_name': [randomNames() for _ in range(500)],
                   'GPA': np. random . normal (loc=85, scale=3, size=500)})

#view first six rows of DataFrame
df. head ()

last_name GPA
0 PXGPIV 86.667888
1 JKRRQI 87.677422
2 TRIZTC 83.733056
3 YHUGIN 85.314142
4 ZVUNVK 85.684160

次のコードは、体系的なサンプリングを通じて 100 人の生徒のサンプルを取得する方法を示しています。

 #obtain systematic sample by selecting every 5th row
sys_sample_df = df. iloc [::5]

#view first six rows of DataFrame
sys_sample_df. head ()

   last_name gpa
3 ORJFW 88.78065
8 RWPSB 81.96988
13 RACZU 79.21433
18 ZOHKA 80.47246
23 QJETK 87.09991
28 JTHWB 83.87300

#view dimensions of data frame
sys_sample_df. shape

(100, 2)

サンプルに含まれる最初のメンバーは、元のデータ フレームの最初の行にあることに注意してください。サンプルの次の各メンバーは、前のメンバーの 5 行後に配置されます。

そして、 shape()を使用すると、取得した体系的なサンプルが 100 行 2 列のデータ フレームであることがわかります。

追加リソース

サンプリング方法の種類
pandas でのクラスター サンプリング
パンダでの層別サンプリング

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です