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)
任何建议都非常感谢。提前致谢。
答案 0 :(得分:0)
这是您可以做的事,您每次都需要一个函数来做。
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
希望这会有所帮助!反馈非常感谢:)