如何制作良好的可重现的 pandas 示例

2023-11-22

花了相当多的时间观看了这两部作品r and pandasSO 上的标签,我得到的印象是pandas问题不太可能包含可重复的数据。这是 R 社区非常鼓励的事情,并且感谢像这样的指南this,新手可以在整理这些示例时获得一些帮助。能够阅读这些指南并返回可重复数据的人通常会更幸运地获得问题的答案。

我们如何才能创建良好的可重复示例pandas问题?可以将简单的数据框放在一起,例如:

import pandas as pd
df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice'], 
                   'income': [40000, 50000, 42000]})

但许多示例数据集需要更复杂的结构,例如:

  • datetime指数或数据
  • 多个分类变量(是否有相当于 R 的expand.grid()函数,它产生一些给定变量的所有可能的组合?)
  • 多索引数据

对于难以使用几行代码模拟的数据集,是否有与 R 等效的数据集dput()允许您生成可复制粘贴的代码来重新生成数据结构?


注意:这里的大多数想法对于 Stack Overflow 来说都是非常通用的,实际上是一般问题。看最小的、可重复的示例 or 简短、独立、正确的示例.

免责声明:写一个好问题是hard.

好处:

  • 请包含一个小示例 DataFrame,或者作为可运行代码:

    In [1]: df = pd.DataFrame([[1, 2], [1, 3], [4, 6]], columns=['A', 'B'])
    

    或使其“可复制并粘贴”使用pd.read_clipboard(sep='\s\s+')。自己测试一下。

    In [2]: df
    Out[2]:
       A  B
    0  1  2
    1  1  3
    2  4  6
    
    • You can format the text for Stack Overflow by highlighting and using Ctrl+K (or prepend four spaces to each line), or place three backticks (```) above and below your code with your code unindented.

    • I really do mean small. The vast majority of example DataFrames could be fewer than 6 rows,[citation needed] and I bet I can do it in 5. Can you reproduce the error with df = df.head()? If not, fiddle around to see if you can make up a small DataFrame which exhibits the issue you are facing.

      但每条规则都有一个例外,最明显的一个是性能问题(在这种情况下肯定使用%timeit并且可能%prun来分析您的代码),您应该在其中生成:

      df = pd.DataFrame(np.random.randn(100000000, 10))
      

      考虑使用np.random.seed所以我们有完全相同的框架。话虽如此,“让这段代码对我来说更快”并不是该网站严格的主题。

    • 为了获得可运行的代码,df.to_dict通常很有用,不同的orient不同情况的选择。在上面的示例中,我可以从以下位置获取数据和列df.to_dict('split').

  • 写下你想要的结果(与上面类似)

    In [3]: iwantthis
    Out[3]:
       A  B
    0  1  5
    1  4  6
    

    解释一下这些数字的来源:

    5 是 A 为 1 的行的 B 列之和。

  • Do show the code你已经尝试过:

    In [4]: df.groupby('A').sum()
    Out[4]:
       B
    A
    1  5
    4  6
    

    但说一下不正确的地方:

    A 列位于索引中而不是列中。

  • 一定要表明你已经做了一些研究(搜索文档, 搜索堆栈溢出),并给出总结:

    sum 的文档字符串简单地说明了“计算组值的总和”

    The 分组依据文档没有给出任何例子。

    旁白:这里的答案是使用df.groupby('A', as_index=False).sum().

  • 如果您有时间戳列相关,例如你正在重新采样或其他什么,然后明确并应用pd.to_datetime对他们来说是一个很好的衡量标准。

    df['date'] = pd.to_datetime(df['date']) # this column ought to be date.
    

    有时这就是问题本身:它们是字符串。

The Bad:

  • 不包括多重索引,这我们无法复制和粘贴(往上看)。这对 Pandas 的默认显示有点不满,但仍然很烦人:

    In [11]: df
    Out[11]:
         C
    A B
    1 2  3
      2  6
    

    正确的方法是包含一个普通的 DataFrame 和set_index call:

    In [12]: df = pd.DataFrame([[1, 2, 3], [1, 2, 6]], columns=['A', 'B', 'C'])
    
    In [13]: df = df.set_index(['A', 'B'])
    
    In [14]: df
    Out[14]:
         C
    A B
    1 2  3
      2  6
    
  • 在给出您想要的结果时,请务必深入了解它是什么:

       B
    A
    1  1
    5  0
    

    具体说明您如何获得这些数字(它们是什么)...仔细检查它们是否正确。

  • 如果你的代码抛出错误,包含整个堆栈跟踪。如果噪音太大,可以稍后编辑掉。显示行号以及它所针对的代码的相应行。

  • 熊猫2引入了许多changes,因此如果您得到意外的输出,请包含以下版本:

    pd.__version__
    

    在这一点上,您可能还想包括 Python 的版本、您的操作系统和任何其他库。你可以使用pd.show_versions() or the session_info包(显示加载的库和 Jupyter/IPython 环境)。

丑陋的:

  • 不要链接到我们无权访问的 CSV 文件(最好根本不要链接到外部源)。

    df = pd.read_csv('my_secret_file.csv') # ideally with lots of parsing options
    

    大多数数据都是专有的,我们明白了。制作类似的数据,看看是否可以重现该问题(一些小问题)。

  • 不要用语言含糊地解释这种情况,就像你有一个“大”的 DataFrame 一样,顺便提及一些列名(确保不要提及它们的数据类型)。尝试在没有看到实际背景的情况下深入探讨一些完全没有意义的事情的细节。想必没有人会读到本段的结尾。

    论文很糟糕;通过小例子就更容易了。

  • 在解决实际问题之前,不要包含 10+ (100+??) 行数据整理。

    拜托,我们在日常工作中看到的已经够多了。我们想提供帮助,但是不是这样的...。 剪掉介绍,只在给您带来麻烦的步骤中显示相关的 DataFrame(或其小版本)。

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

如何制作良好的可重现的 pandas 示例 的相关文章

  • Python 中的六边形自组织映射

    我在寻找六边形 自组织映射 http en wikipedia org wiki Self organizing map在Python上 准备好模块 如果存在的话 绘制六边形单元格的方法 将六边形单元作为数组或其他方式使用的算法 About
  • 类属性在功能上依赖于其他类属性

    我正在尝试使用静态类属性来定义另一个静态类属性 我认为可以通过以下代码来实现 f lambda s s 1 class A foo foo bar f A foo 然而 这导致NameError name A is not defined
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • 使用正则表达式解析 Snort 警报文件

    我正在尝试使用 Python 中的正则表达式从 snort 警报文件中解析出源 目标 IP 和端口 和时间戳 示例如下 03 09 14 10 43 323717 1 2008015 9 ET MALWARE User Agent Win9
  • 在 python-docx 中搜索和替换

    我有一个包含以下字符串的文档 模板 你好 我的名字是鲍勃 鲍勃是一个很好的名字 我想使用 python docx 打开此文档并使用 查找和替换 方法 如果存在 来更改每个字符串 Bob gt Mark 最后 我想生成一个新文档 其中包含字符
  • VSCode pytest 测试发现失败

    Pytest 测试发现失败 用户界面指出 Test discovery error please check the configuration settings for the tests 输出窗口显示 Test Discovery fa
  • 如何为多组精灵创建随机位置?

    我尝试使用 blit 和 draw 方法进行 for 循环 并为 PlayerSprite 和 Treegroup 使用不同的变量 for PlayerSprite in Treegroup surface blit PlayerSprit
  • Python While 循环,and (&) 运算符不起作用

    我正在努力寻找最大公因数 我写了一个糟糕的 运算密集型 算法 它将较低的值减一 使用 检查它是否均匀地划分了分子和分母 如果是 则退出程序 但是 我的 while 循环没有使用 and 运算符 因此一旦分子可整除 它就会停止 即使它不是正确
  • 在wxpython中使用wx.TextCtrl并在按钮单击后显示数据的简单示例 - wx新手

    我正在学习 python 并尝试使用 wxpython 进行 UI 开发 也没有 UI exp 我已经能够创建一个带有面板 按钮和文本输入框的框架 我希望能够在文本框中输入文本 并让程序在单击按钮后对输入框中的文本执行操作 我可以获得一些关
  • 我可以使用 dask 创建 multivariate_normal 矩阵吗?

    有点相关这个帖子 https stackoverflow com questions 52337612 random multivariate normal on a dask array 我正在尝试复制multivariate norma
  • 使用 python 将文本发送到带有逗号分隔符的列

    如何使用分隔符 在 Excel 中将一列分成两列 并使用 python 命名标题 这是我的代码 import openpyxl w openpyxl load workbook DDdata xlsx active w active a a
  • urllib2.urlopen() 是否实际获取页面?

    当我使用 urllib2 urlopen 时 我在考虑它只是为了读取标题还是实际上带回整个网页 IE 是否真的通过 urlopen 调用或 read 调用获取 HTML 页面 handle urllib2 urlopen url html
  • 如何逐像素绘制正方形(Python,PIL)

    在空白画布上 我想使用 Pillow 逐像素绘制一个正方形 我尝试使用 img putpixel 30 60 155 155 55 绘制一个像素 但它没有执行任何操作 from PIL import Image def newImg img
  • FastText - 由于 C++ 扩展未能分配内存,无法加载 model.bin

    我正在尝试使用 FastText Python APIhttps pypi python org pypi fasttext https pypi python org pypi fasttext虽然 据我所知 此 API 无法加载较新的
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • Python Flask 是否定义了路由顺序?

    在我看来 我的设置类似于以下内容 app route test def test app route
  • WindowsError:[错误 5] 访问被拒绝

    我一直在尝试终止一个进程 但我的所有选项都给出了 Windows 访问被拒绝错误 我通过以下方式打开进程 一个python脚本 test subprocess Popen sys executable testsc py 我想杀死那个进程
  • Python模块单元测试的最佳文件结构组织?

    遗憾的是 我发现有太多方法可以在 Python 中保存单元测试 而且它们通常没有很好的文档记录 我正在寻找一种 终极 结构 它可以满足以下大部分要求 be discoverable by test frameworks including
  • Pandas 在特定列将数据帧拆分为两个数据帧

    I have pandas我组成的 DataFrameconcat 一行由 96 个值组成 我想将 DataFrame 从值 72 中分离出来 这样 一行的前 72 个值存储在 Dataframe1 中 接下来的 24 个值存储在 Data
  • 具有指定置信区间的 Seaborn 条形图

    我想在 Seaborn 条形图上绘制置信区间 但我已经计算出置信区间 如何让 Seaborn 绘制我的置信区间而不是尝试自行计算它们 例如 假设我有以下 pandas DataFrame x pd DataFrame Group 1 0 5

随机推荐

  • JButton 扩展以占据整个框架/容器

    嘿大家 我正在尝试制作一个带有按钮和标签的 Swing GUI 我使用边框布局 标签 在北场 显示良好 但按钮占据了框架的其余部分 它位于中心场 知道如何解决这个问题吗 您必须将按钮添加到另一个面板 然后将该面板添加到框架 事实证明 Bor
  • Javascript:从数组中随机配对项目而不重复

    我正在尝试制作一个非常基本的 秘密圣诞老人 生成器 作为我的第一个 Javascript 项目之一 我已经搜索了几个小时来寻找这个问题的解决方案 但到目前为止我还没有发现任何有效的方法 我有一系列需要相互配对的名称 我成功地将它们配对 但现
  • 如何在 Windows 7 x64 上使用 Visual C++ 6 进行调试?

    当然答案是 你不能 或 使用 XP 模式 但我想知道是否可能 我遇到的问题是 每当我调试某个应用程序并命中断点时 当我停止调试器时 被调试者仍然卡住 它无法被杀死 我无法附加另一个调试器 它说它已经被调试 在我关闭 Visual C 之前它
  • 使用 Apollo 客户端在第二个查询中使用第一个查询的结果?

    我正在使用 Apollo React 和 Graphcool 我有一个查询来获取登录用户 ID const LoginServerQuery gql query LoginServerQuery loggedInUser id 我需要在另一
  • Console.Writeline 对性能的影响

    我有一个应用程序有 4threads 每个线程实际上是一个Timer并在特定的时间间隔内执行单独的工作 这些线程通过使用显示其日志Console Writeline 性能在此应用中非常重要 我想知道是否删除Console Writeline
  • 事件发射器从引导模式到父模式

    我想将模态事件从模态组件传递到模态的父组件 但由于某种原因 我似乎无法让 EventEmitter 工作 如果有人有想法 将不胜感激 主要代码如下 从 ng bootstrap 演示分叉的 非工作 plunk 在这里 http plnkr
  • 错误:无法卸载“wrap”。安装tensorflow-gpu时~=1.14

    我正在尝试安装以下版本的 TensorFlow GPU 因为 gitrepo 的作者建议了它here jalal goku examples pip install tensorflow gpu 1 14 Collecting tensor
  • Go 1.6 中的供应

    我已经阅读了尽可能多的文档和 StackOverflow 文章 但我没能使用 Go 1 6 中的新供应商功能进行导入 这是我整理的一个示例项目Goji去测试 目录结构是这样的 src main go vendor github com ze
  • Android - 无法找到与目标“Android 1.6”错误兼容的 AVD

    我第一次尝试运行 Android 版 Hello World 应用程序 但我不断收到 Failed to find an AVD compatible with target Android 1 6 当我尝试创建 AVD 时出错 我已尝试以
  • 为什么 git push origin master 会画 ASCII 艺术? [复制]

    这个问题在这里已经有答案了 当我跑的时候git push origin master 我看到了一张非常不寻常的 ASCII 图片 我跑了git push几百次了 以前从未见过这种情况 有什么解释吗 git push origin maste
  • 换行符或“\n”不起作用。

    你能告诉我为什么换行符 n 不起作用吗 itemsToWriteToFile Number 1 12 nNumber 2 13 nNumber 3 13 nNumber 4 14 itemsToWriteToFile str itemsTo
  • 在 LESS css 中增加一个变量

    如何在 LESS css 中增加变量 这是例子 counter 1 someSelector nameOfClass counter counter counter 1 someSelector nameOfClass counter 上面
  • 使用纯 CSS 隐藏一个元素的列表

    如果列表仅包含一个仅使用 CSS 的元素 是否有一种方法可以隐藏列表 奖励 想想 IE8 ul li hide this li ul But ul li show this li li and others li ul 我正在和所有兄弟姐妹
  • 使用 OpenStreetMap 从 data.frame 绘制点

    我对空间数据完全是新手 我有以下代码成功绘制了有界地图 我想添加 作为 data frame 存储的点 我提前道歉 无法从 OpenStreetMap 文档中弄清楚这一点 代码如下 library OpenStreetMap stores
  • AWS Athena JDBC 准备语句

    我无法使 AWS Athena JDBC 驱动程序与PreparedStatement 和绑定变量一起使用 如果我将所需的列值直接放入 SQL 字符串中 它就可以工作 但如果我使用占位符 我用PreparedStatement的setter
  • 如何在 Tracker 事件中获取 android 人脸检测器的当前帧(作为位图)?

    我有标准的 com google android gms vision Trackerexample在我的 Android 设备上成功运行 现在我需要对图像进行后处理以找到当前脸部的虹膜 该虹膜已在跟踪器的事件方法中通知 那么 如何获得与我
  • 将二进制文件读入 std::vector 而不是 std::vector

    我想读取包含 uint16 t 值的二进制文件 到目前为止我所做的是 std ifstream is std vector
  • Android Manifest 中的 versionCode 与 versionName

    我的应用程序位于 Android 市场 版本代码 2 版本名称 1 1 然而 今天更新时 我在清单中更改了版本代码 3 但错误地将版本名称更改为1 0 1并将apk上传到市场 现在 我的应用程序的用户会在手机上收到更新通知吗 或者我应该重做
  • 尝试在 golang 中获取有截止日期的锁?

    如何才能在 go 中只尝试获取类似互斥锁的锁 要么立即中止 例如TryLock在其他实现中确实如此 或通过遵守某种形式的截止日期 基本上锁定之前 我现在可以想到两种情况 这将非常有帮助 并且我正在寻找某种解决方案 第一个是 CPU 密集型服
  • 如何制作良好的可重现的 pandas 示例

    花了相当多的时间观看了这两部作品r and pandasSO 上的标签 我得到的印象是pandas问题不太可能包含可重复的数据 这是 R 社区非常鼓励的事情 并且感谢像这样的指南this 新手可以在整理这些示例时获得一些帮助 能够阅读这些指