Pandasのsample関数の基本

Pandasのsample関数は、データフレームやシリーズからランダムに行を抽出するための関数です。以下に基本的な使用方法を示します。

import pandas as pd

# データフレームの作成
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(10, 60, 10)
})

# sample関数でランダムに行を抽出
sampled_df = df.sample(n=3)

print(sampled_df)

このコードでは、5行のデータフレームdfからsample関数を使って3行をランダムに抽出しています。出力されるsampled_dfdfのランダムな3行を含む新しいデータフレームです。

sample関数の主なパラメータは以下の通りです:
n : 抽出する行の数を指定します。
frac : 抽出する行の割合を指定します。0から1の間の値を指定します。
replace : ブール値を指定します。Trueの場合、一度抽出した行を再度抽出することが可能になります(復元抽出)。デフォルトはFalseです。
random_state : 乱数生成器のシードを指定します。これにより、ランダム抽出の結果を再現することが可能になります。

以上がPandasのsample関数の基本的な使い方となります。次のセクションでは、このsample関数を使った複数回のサンプリングについて詳しく説明します。

複数回サンプリングの例

Pandasのsample関数を使って、同じデータフレームから複数回サンプリングすることも可能です。以下にその例を示します。

import pandas as pd

# データフレームの作成
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(10, 60, 10)
})

# sample関数でランダムに行を抽出(復元抽出)
sampled_df = df.sample(n=3, replace=True)

print(sampled_df)

このコードでは、sample関数のreplaceパラメータをTrueに設定しています。これにより、一度抽出した行を再度抽出することが可能になります(復元抽出)。その結果、同じ行が複数回抽出されることがあります。

また、random_stateパラメータを指定することで、ランダム抽出の結果を再現することが可能です。以下にその例を示します。

# sample関数でランダムに行を抽出(結果を再現)
sampled_df1 = df.sample(n=3, replace=True, random_state=0)
sampled_df2 = df.sample(n=3, replace=True, random_state=0)

print(sampled_df1)
print(sampled_df2)

このコードでは、random_stateパラメータに同じ値(この場合は0)を指定しています。その結果、sampled_df1sampled_df2は同じ行を含むことになります。

以上がPandasのsample関数を使った複数回のサンプリングの例です。次のセクションでは、このsample関数の応用例について詳しく説明します。

サンプリングの応用

Pandasのsample関数は、データ分析や機械学習のタスクにおいて非常に有用です。以下にその応用例をいくつか示します。

データのシャッフル

データフレーム全体をランダムにシャッフルするためにsample関数を使用することができます。以下にその例を示します。

# データフレームのシャッフル
shuffled_df = df.sample(frac=1)

print(shuffled_df)

このコードでは、fracパラメータに1を指定してデータフレーム全体をシャッフルしています。

データの分割

sample関数を使ってデータフレームをランダムに分割することも可能です。以下にその例を示します。

# データフレームの80%を訓練データとする
train_df = df.sample(frac=0.8, random_state=0)

# 残りの20%をテストデータとする
test_df = df.drop(train_df.index)

print(train_df)
print(test_df)

このコードでは、まずデータフレームの80%をランダムに抽出して訓練データとし、残りの20%をテストデータとしています。

以上がPandasのsample関数の応用例です。この関数を使うことで、データのランダムな抽出やシャッフル、分割など、データ分析や機械学習のタスクにおける様々なシナリオを実現することが可能です。この記事が皆さんのデータ分析の一助となれば幸いです。

投稿者 kitagawa

コメントを残す

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