pandas - 在 Python 中随机选择不同百分比的数据
问题描述
Python初学者,在这里。我有一个包含 101 行的数据集,我使用 Pandas 将其导入 Python(作为 csv 文件)。我基本上想随机生成一个介于 0 和 1 之间的数字,并根据结果从数据集中随机选择当量百分比。因此,例如,随机生成的数字 0.89 将需要选择 89% 的数据。
我还想指定不同的百分比,例如,一次随机选择 89%、8% 和 3% 的数据。这样我就可以根据已选择的 X% 的数据做出不同的假设(例如,对于 3% 的行选择 print('A') 等)。我终于想多次模拟整个事情并存储结果。
我一直在尝试不同类型的代码,例如 df.sample(frac=0.89) 等,但我不确定如何扩展它以同时选择不同的百分比。
我目前的代码是:
import random
import pandas import pandas as pd
df = pd.read_csv(r'R_100.csv', encoding='cp1252')
df_1 = df['R_MD'].sample(frac=0.8889)
Total = df['PR_MD'].sum()
print(df_1, 'Total=', Total)
非常感谢任何建议。提前致谢。
解决方案
这是您可以做的事情,您每次都需要一个函数来执行此操作。
import pandas as pd
df = pd.read_csv(r'R_100.csv', encoding='cp1252')
读取数据框后
def frac(dataframe, fraction, other_info=None):
"""Returns fraction of data"""
return dataframe.sample(frac=fraction)
这里 other_info 可以是特定的列名,然后根据需要多次调用该函数
df_1 = frac(df, 0.3)
它将返回一个新的数据框,您可以将其用于您想要的任何内容,您可以使用类似这样的东西,因为我从您的示例中推断您正在获取一列的总和
import random
def random_gen():
"""generates random number"""
return random.randint(0,1)
def print_sum(column_name):
"""Prints sum"""
# call the random_gen() to give out a number
rand_num = random_gen()
# pass the number as fraction parameter to frac()
df_tmp = frac(df, rand_num)
print(df_tmp[str(column_name)].sum())
或者如果你想
但我不确定如何扩展它以同时选择不同的百分比。
然后只需更改print_sum
如下
def print_sum(column_name):
"""returns result for 10 iterations"""
# list to store all the result
results = []
# selecting different percentage fraction
# for 10 different random fraction or you can have a list of all the fractions you want
# and then for loop over that list
for i in range(1,10):
# generate random number
fracr = random_gen()
# pass the number as fraction parameter to frac()
df_tmp = frac(df, fracr)
result.append(df_tmp[str(column_name)].sum())
return result
希望这可以帮助!非常感谢您的反馈:)
推荐阅读
- bash - 使文件看起来没有混乱
- c++ - Microsoft Visual Studio Professional 2013,变量在哪里定义和编辑?
- python - 用填充的数据框和不同的列名填充空数据框
- pentaho - Pentaho - 数据格式
- php - PHP 7.2 中计数数组位置的问题
- firebase - Firebase user.sendEmailVerification() 到我自己的地址
- javascript - 仅返回数组中对象属性最流行的拼写以及降序排列的所有拼写的总和
- selenium - 在 IntellIJ 的浏览器中记录步骤
- azure-active-directory - 没有 HTTPS 的 MSAL 重定向 URI
- r - 如何根据另一个数据框中的值对数据框进行子集化