python - python - 如何从python中的数据框中选择一些记录?
问题描述
我需要从我的数据框中选择一些记录进行分析,比如说我需要从有 100 条记录的数据框中选择 33% 的记录(例如)。我需要从我的数据框中随机选择 33 条记录。我尝试了“random.randint”,但这并没有给出 33% 的记录,它只给出了大约 33% 的记录。下面是我的代码:
DF_1['ran'] = [random.randint(0,99) for k in DF_1.index]
DF_2=DF_1[DF_1['ran']<33]
我们是否有任何其他功能可以从数据框中获取准确的记录百分比?先感谢您。亚历克斯
解决方案
randint
在列表理解中不能保证均匀分布,也不能保证没有重复。
使用该random
模块,您可以使用,它提供了一个无需替换random.sample
的示例:
from random import sample
num = int(len(Mission_3_0A.index) * 0.33) # e.g. for 33%
indices = sample(Mission_3_0A.index, k=num)
DF_2 = DF_1.loc[indices].copy()
使用 NumPy,您可以使用np.random.choice
,指定replace=False
:
indices = np.random.choice(Mission_3_0A.index, size=num, replace=False)
DF_2 = DF_1.loc[indices].copy()
最惯用的是使用pd.DataFrame.sample
:
DF_2 = DF_1.sample(n=num) # absolute number
DF_2 = DF_1.sample(frac=1/3) # give fraction (floored if not whole)