我是靠谱客的博主 无私小熊猫,最近开发中收集的这篇文章主要介绍python按照某个字段,对目标按照给定的比例进行分层抽样,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 # data : 抽样数据框,
    # df_col_partition : 分层变量名,
    # df_col_mark : 目标标识字段,
    # multiply : 非目标用户与目标用户比例
    def stratifiedSampling(data,df_col_partition,df_col_mark,multiply):
       if (data[df_col_mark] == 0).sum() / (data[df_col_mark] == 1).sum() > multiply :
        select_0 = multiply * (data[df_col_mark] == 1).sum()
      else :
        select_0 = (df_col_mark == 0).sum()
      df_0 = data[data[df_col_mark] == 0]
      df_1 = data[data[df_col_mark] == 1]
      temp = df_0.groupby(by = df_col_partition)
      temp_df = pd.DataFrame(temp.size().reset_index(name = 'cnt'))
      temp_df['select_cnt'] = round((temp_df['cnt'] / temp_df['cnt'].sum()) * select_0)
    ######
      result_sample = pd.DataFrame(columns = df_0.columns.values.tolist())
      for partition in temp_df[df_col_partition]:
        temp_tb = df_0[df_0[df_col_partition] == partition]
        temp_sampling = temp_tb.sample(n = int(temp_df[temp_df[df_col_partition] == partition]['select_cnt'].values) ,replace = False,)
        result_sample = result_sample.append(temp_sampling)
      result_sample = result_sample.append(df_1)
      return result_sample

该方法返回的是目标字段按照给定比例的一个DataFrame类型的变量

最后

以上就是无私小熊猫为你收集整理的python按照某个字段,对目标按照给定的比例进行分层抽样的全部内容,希望文章能够帮你解决python按照某个字段,对目标按照给定的比例进行分层抽样所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部