PythonがRのsample()
関数と同等であるかどうかを知りたいです。
sample() 関数は、置換の有無にかかわらず、xの要素から指定されたサイズのサンプルを取得します。
構文は次のとおりです。
sample(x, size, replace = FALSE, prob = NULL)
(詳細情報 ここ )
numpy.random.choice(a, size=None, replace=True, p=None)
があなたが探しているものかもしれないと思います。
p
引数は、sample()
functionのprob
引数に対応します。
pandas (PythonのRに最も近いアナログ)には、 _DataFrame.sample
_ および _Series.sample
_ メソッドがあり、どちらも導入されましたバージョン0.16.1で。
例えば:
_>>> df = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'b': [6, 7, 8, 9, 0]})
>>> df
a b
0 1 6
1 2 7
2 3 8
3 4 9
4 5 0
_
置換なしで3行をサンプリング:
_>>> df.sample(3)
a b
4 5 0
1 2 7
3 4 9
_
選択肢に対応する重みとして列 'b'を使用して、列 'a'から4行を置換してサンプリングします。
_>>> df['a'].sample(4, replace=True, weights=df['b'])
3 4
0 1
0 1
2 3
_
これらのメソッドはR関数とほぼ同じであり、置換の有無にかかわらず、DataFrame/Seriesから特定の数の値(または値の一部)をサンプリングできます。 Rのsample()
のprob
引数は、pandasメソッドのweights
に対応することに注意してください。
random
パッケージは機能すると思います。具体的にはrandom.sample()。