Pandas 跨多列进行代表性采样

2024-02-01

我有一个代表人口的数据框,每一列表示该人的不同品质/特征。我怎样才能获得该数据框/人口的样本,它代表了整个人口的所有特征。

假设我有一个代表 650 人的员工队伍的数据框,如下所示:

import pandas as pd
import numpy as np
c = np.random.choice

colours = ['blue', 'yellow', 'green', 'green... no, blue']
knights = ['Bedevere', 'Galahad', 'Arthur', 'Robin', 'Lancelot']
qualities = ['wise', 'brave', 'pure', 'not quite so brave']

df = pd.DataFrame({'name_id':c(range(3000), 650, replace=False),
              'favourite_colour':c(colours, 650),
              'favourite_knight':c(knights, 650),
              'favourite_quality':c(qualities, 650)})

我可以获得上面的一个样本,反映单列的分布,如下所示:

# Find the distribution of a particular column using value_counts and normalize:
knight_weight = df['favourite_knight'].value_counts(normalize=True)

# Add this to my dataframe as a weights column:
df['knight_weight'] = df['favourite_knight'].apply(lambda x: knight_weight[x])

# Then sample my dataframe using the weights column I just added as the 'weights' argument:
df_sample = df.sample(140, weights=df['knight_weight'])

这将返回一个示例数据帧(df_sample),使得:

df_sample['favourite_knight'].value_counts(normalize=True)
is approximately equal to
df['favourite_knight'].value_counts(normalize=True)

我的问题是这样的: 如何生成示例数据帧(df_sample),以便上面的内容即:

df_sample[column].value_counts(normalize=True)
is approximately equal to
df[column].value_counts(normalize=True)

对于所有列(“name_id”除外)都适用,而不仅仅是其中一列?人口为 650 人,样本量为 140 人,大约是我正在处理的规模,因此性能并不是太大的问题。我很乐意接受需要几分钟才能运行的解决方案,因为这仍然比手动生成上述示例要快得多。感谢您的任何帮助。


您创建一个组合特征列,对其进行加权并用它作为权重进行绘制:

df["combined"] = list(zip(df["favourite_colour"],
                          df["favourite_knight"],
                          df["favourite_quality"]))

combined_weight = df['combined'].value_counts(normalize=True)

df['combined_weight'] = df['combined'].apply(lambda x: combined_weight[x])

df_sample = df.sample(140, weights=df['combined_weight'])

这将需要一个额外的步骤,即除以特定重量的计数,因此总和为 1 - 请参阅埃桑·法蒂 https://stackoverflow.com/a/72998710/7505395 post.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas 跨多列进行代表性采样 的相关文章

随机推荐

  • Java 缓冲图像 RescaleOp 透明度问题

    我似乎遇到了一个问题 我创建了一个具有如下透明像素的 BufferedImage BufferedImage buff new BufferedImage i getWidth null i getHeight null BufferedI
  • .NET Framework 项目上的 dotnet 恢复不起作用

    我有一个 NET 项目 其中包含以下内容 csproj
  • C# 中的自然排序顺序

    任何人都拥有良好的资源或提供 C 自然顺序排序的示例FileInfo大批 我正在实施IComparer我喜欢的界面 最简单的方法就是 P Invoke Windows 中的内置函数 并将其用作您的比较函数IComparer DllImpor
  • Vue路由器如何在页面加载时获取延迟加载模块的当前路由路径?

    我有一个 vue 应用程序 其路由器设置如下 import index from components index vue import http404 from components http404 vue module lazy loa
  • shell 脚本中的 grep 实用程序

    我正在尝试克服文件结构的限制 我想在已知位置 grep 一系列文件 如果我从命令行执行标准 grep grep i searchpattern known dir s sql 我收到以下错误 ksh usr bin grep 0403 02
  • 从 pandas DataFrame 创建术语密度矩阵的有效方法

    我正在尝试从 pandas 数据帧创建术语密度矩阵 因此我可以对数据框中出现的术语进行评分 我还希望能够保留数据的 空间 方面 请参阅帖子末尾的评论以获取我的意思的示例 我是 pandas 和 NLTK 的新手 所以我希望我的问题可以通过一
  • 子元素触发的鼠标悬停事件 - 如何停止?

    我想使用 scriptaculous 中的 Effect Move 来构建这个界面 当然 使用 Prototype 当顶div鼠标悬停时触发span标签是向左移动 50 像素 并在鼠标移开时重置而不移动到原始位置 问题是 任何时候div元素
  • 为什么我无法使用方法返回的列表引用添加元素[重复]

    这个问题在这里已经有答案了 当我使用方法返回的列表引用添加元素时出现错误 假人 java package firstPro import java util List public class Dummy private List
  • 阻止访问静态内容文件夹

    我想知道如何阻止访问我的网络应用程序中的静态内容文件夹 右边的文件夹位于 war 中的 web root 文件夹内 像这样 myapp css js swf WEB INF 我希望内容仅在用户处于会话中时从应用程序中可见 如果有人在他 她的
  • 如何在 JavaScript 中四舍五入为整数?

    我有以下代码来计算一定的百分比 var x 6 5 var total total x 15 100 Result 43 3333333333 我想要的结果是确切的数字43如果总数是43 5它应该四舍五入到44 有没有办法在 JavaScr
  • 检索 WMI Win32_Processor.Family 属性的描述性值而不是索引

    下面的简单 VBS 示例从 WMI 检索 CPU 标题 体系结构和系列 s For Each Item In GetObject winmgmts impersonationLevel impersonate Root CIMV2 Inst
  • SonarQube 4.3.2 Javascript 排除 [重复]

    这个问题在这里已经有答案了 我们在 Java 项目中使用 SonarQube 版本 4 3 2 我们想要排除当前正在分析的所有 javascript 文件 我们尝试在排除列表中使用 js 进行排除 但没有成功 请帮忙 In your son
  • [外设maximumWriteValueLengthForType:CBCharacteristicWriteWithResponse]返回什么?

    我正在运行以下代码 peripheral maximumWriteValueLengthForType CBCharacteristicWriteWithResponse 就我而言 iPhone 7 iOS 10 0 2 它返回 512 这
  • jPlayer - 通过页面重定向保存用户设置

    我已经关注这个问题好几天了 我无法让它发挥作用 希望有人可以帮助我并指出我正确的方向 使用 jPlayer http jplayer org http jplayer org 我需要将 cookie 设置为以下内容 以便当用户返回该网页时
  • iPhone 802.11 扫描

    我正在开发一个室内位置使用 wifi 的系统 但是我在使用苹果库时遇到了问题 曾经是私人的 现在是公共的 我在哪里使用代码 libHandle dlopen System Library SystemConfiguration IPConf
  • MacOS 上使用 clang-15 时 FindTerminfo 中的 CMake 错误

    我在我的项目中使用 llvm 并使用 cmake 找到它find package LLVM REQUIRED CONFIG 配置失败并显示消息 cmake CMake Error at Applications CMake app Cont
  • jestjs - 如何在 ci 中参数化 cli 的测试执行?

    我有4个环境 dev 开发者区 测试 测试区 preprod 预生产环境 生产 生产环境 这些环境需要不同的配置来执行测试 不同的 url 用户名 资产等 如何在持续集成中将它们的配置作为参数传递给 jest 正如你所读到的here htt
  • Java 线程转储总结工具

    我有时必须查看 Tomcat 服务器的线程转储 然而 这是一个非常慢的过程 因为我的应用程序使用具有数百个线程的线程池 我查看的大多数线程转储都包含许多线程的相同堆栈跟踪 因为它们处于空闲等待工作状态 是否有任何工具可以解析线程转储并仅向我
  • eXist-db 在 .xq 数据中包含 html 模板

    我有一个 index html 数据 我通过以下方式包含了模板 div 在索引 html 站点中 我包含了一个关键字搜索表单 其想法是当我单击搜索按钮时 它应该调用 xq 文件来请求搜索结果 div
  • Pandas 跨多列进行代表性采样

    我有一个代表人口的数据框 每一列表示该人的不同品质 特征 我怎样才能获得该数据框 人口的样本 它代表了整个人口的所有特征 假设我有一个代表 650 人的员工队伍的数据框 如下所示 import pandas as pd import num