当前位置: 首页 > 面试题库 >

pandas:对DataFrame进行采样

余靖
2023-03-14
问题内容

我正在尝试使用Pandas读取一个相当大的CSV文件,并将其分成两个随机的块,其中一个占数据的10%,另一个占90%。

这是我目前的尝试:

rows = data.index
row_count = len(rows)
random.shuffle(list(rows))

data.reindex(rows)

training_data = data[row_count // 10:]
testing_data = data[:row_count // 10]

出于某种原因,sklearn当我尝试在SVM分类器中使用这些结果DataFrame对象之一时,抛出此错误:

IndexError: each subindex must be either a slice, an integer, Ellipsis, or newaxis

我想我做错了。有一个更好的方法吗?


问题答案:

您使用的是哪个版本的熊猫?对我来说,您的代码工作正常(我在git master上)。

另一种方法可能是:

In [117]: import pandas

In [118]: import random

In [119]: df = pandas.DataFrame(np.random.randn(100, 4), columns=list('ABCD'))

In [120]: rows = random.sample(df.index, 10)

In [121]: df_10 = df.ix[rows]

In [122]: df_90 = df.drop(rows)

较新的版本(从0.16.1开始)直接支持此功能:http
://pandas.pydata.org/pandas-
docs/stable/generation/pandas.DataFrame.sample.html





 类似资料:
  • 如您所见,月份不按日历顺序排列。所以我创建了第二列来获取每个月(1-12)对应的月份号。从那里,我如何根据日历月份的顺序对此数据帧进行排序?

  • 问题内容: 我在DataFrame中有一列带有值: 如何将它们这样分组? 问题答案: 你可以groupby通过自定义使用:

  • 问题内容: 规范pandas DataFrame每行的最惯用方法是什么?标准化列很容易,因此一个选项(非常难看!)是: pandas广播规则禁止这样做 问题答案: 要解决广播问题,可以使用以下方法: 参见http://pandas.pydata.org/pandas-docs/stable/basics.html#matching- broadcasting-behavior

  • 问题内容: 我正在处理从H5文件加载的调查数据,就像通过熊猫包一样。在此范围内,所有行都是单个调查的结果,而列则是单个调查中所有问题的答案。 我的目标是将数据集减少到较小的范围,仅包括对某个问题具有特定答案的行,即该列中的所有值均相同。我可以在这种情况下确定所有行的索引值,但是我找不到如何 删除 这些行或仅使用这些行创建新df的方法。 问题答案:

  • 问题内容: 我有一个数据框,并希望按降序或升序对所有列进行独立排序。 当我为此使用sort_values()时,它无法按预期运行(对我而言),仅对一列进行排序: 如果我使用此答案中的应用lambda函数的解决方案,则可以获得期望的结果: 但是,这对我来说似乎有些沉重。 上面的sort_values()示例中实际上发生了什么,如何在没有lambda函数的情况下以熊猫方式对数据框中的所有列进行排序?

  • 问题内容: 我有一个DataFrame熊猫来的: 输出: 现在,我要遍历该框架的行。对于每一行,我希望能够通过列名访问其元素(单元格中的值)。例如: pandas有可能这样做吗? 我发现了类似的问题。但这并不能给我我所需的答案。例如,建议在那里使用: 要么 但是我不了解对象是什么以及如何使用它。 问题答案: DataFrame.iterrows是产生索引和行的生成器

  • 问题内容: 我有一个DataFrame来自pandas的: 输出: 现在,我要遍历该框架的行。对于每一行,我希望能够通过列名访问其元素(单元格中的值)。例如: pandas有可能这样做吗? 我发现了类似的问题。但这并不能给我我所需的答案。例如,建议在那里使用: 要么 但是我不了解row对象是什么以及如何使用它。 问题答案: 是一个生成器,它同时生成索引和行(作为系列):

  • 问题内容: 我了解pandas旨在加载完全填充的内容,但是我需要创建一个空的DataFrame然后逐行添加行。做这个的最好方式是什么 ? 我成功创建了一个空的DataFrame: 然后,我可以添加新行,并用以下字段填充字段: 它有效,但看起来很奇怪:(添加字符串值失败) 如何将新行添加到DataFrame(具有不同的列类型)? 问题答案: