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_df
はdf
のランダムな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_df1
とsampled_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
関数の応用例です。この関数を使うことで、データのランダムな抽出やシャッフル、分割など、データ分析や機械学習のタスクにおける様々なシナリオを実現することが可能です。この記事が皆さんのデータ分析の一助となれば幸いです。