我想生成随机浮点数,包括数据框中的NaN
np.random.randn
您可以生成随机浮点数数组,然后使用 p
创建带有np.choice
的掩码,以允许您为要包含的NaN
数设置权重。
像这样:
import numpy as np
a = np.random.randn(20)
mask = np.random.choice([1, 0], a.shape, p=[.1, .9]).astype(bool)
a[mask] = np.nan
结果:
array([ 1.2769248 , 0.5949608 , -1.38006737, 0.3582266 , -1.852884 ,
0.81121663, -1.45830948, 0.03117856, 0.54509948, 1.22019729,
1.71643753, nan, -0.32470862, -0.77604474, 0.76698089,
-0.47863251, nan, -0.33308071, -0.32026717, 1.8493752 ])
如果您正在处理数据帧,则可以使用 apply
.
import numpy as np
import pandas as np
df = pd.DataFrame()
df['a'] = np.zeros(10) # or get data from somewhere else
p = 2/7
df.a.apply(lambda x: np.nan if np.random.rand() < p else np.random.rand())