为了账号安全,请及时绑定邮箱和手机立即绑定

使用熊猫的“大数据”工作流程

使用熊猫的“大数据”工作流程

一只名叫tom的猫 2019-06-05 10:53:43
使用熊猫的“大数据”工作流程几个月来,我一直在努力想出这个问题的答案,同时学习熊猫。我在日常工作中使用SAS,这是非常棒的,因为它是核心外的支持。然而,SAS作为一个软件是可怕的,因为许多其他原因。有一天,我希望用蟒蛇和熊猫来代替我对SAS的使用,但我目前缺乏一个大型数据集的核心工作流程。我说的不是需要分布式网络的“大数据”,而是文件太大,无法容纳内存,但足够小,无法在硬盘上使用。我的第一个想法是用HDFStore要在磁盘上保存大型数据集,并仅将所需的数据片段提取到数据中进行分析。其他人提到MongoDB是一种更容易使用的替代方案。我的问题是:完成以下工作的最佳实践工作流是什么?将平面文件加载到永久的磁盘上数据库结构中。查询该数据库以检索数据以输入到熊猫数据结构中。在处理熊猫作品后更新数据库现实世界的例子将是非常感谢的,特别是谁使用大熊猫的“大数据”。编辑-一个我希望它如何工作的例子:迭代地导入一个大型平面文件并将其存储在一个永久的磁盘上数据库结构中。这些文件通常太大,无法容纳内存。为了使用Pandas,我想读取这些数据的子集(通常一次只有几列),这些数据可以放在内存中。我将通过对所选列执行各种操作来创建新列。然后,我必须将这些新列附加到数据库结构中。我正在努力寻找一种最佳实践的方法来执行这些步骤。阅读有关熊猫和比目表的链接,似乎增加一个新的专栏可能是一个问题。编辑-专门回答杰夫的问题:我正在建立消费者信用风险模型。数据类型包括电话、SSN和地址特征、财产价值、犯罪记录、破产等贬损信息等。我每天使用的数据集平均有1,000到2,000个混合数据类型的字段:数字和字符数据的连续变量、名义变量和序数变量。我很少追加行,但我确实执行了许多创建新列的操作。典型操作包括使用条件逻辑将几个列组合成一个新的复合列。例如,if var1 > 2 then newvar = 'A' elif var2 = 4 then newvar = 'B'..这些操作的结果是为数据集中的每条记录创建一个新列。最后,我想将这些新列添加到磁盘上的数据结构中.我会重复第2步,使用交叉数据和描述性统计来探索数据,试图找到与模型的有趣、直观的关系。一个典型的项目文件通常大约是1GB。文件被组织成这样一种方式:一行由使用者数据的记录组成。每一行对于每条记录都有相同的列数。永远都是这样。在创建新列时,我很少会逐行子集。但是,在创建报表或生成描述性统计信息时,我通常会在行上进行子集。例如,我可能想为特定的业务创造一个简单的频率,比如说零售信用卡。要做到这一点,除了我想报告的任何列之外,我只选择那些业务=零售的记录。但是,在创建新列时,我将提取所有数据行,并且只提取操作所需的列。建模过程要求我分析每一列,使用某些结果变量寻找有趣的关系,并创建描述这些关系的新的复合列。我探索的列通常是在小集合中完成的。例如,我将集中讨论一组例如20列,只处理属性值,并观察它们与贷款违约的关系。一旦对这些内容进行了探索,并创建了新的列,然后我将转到另一组专栏,比如大学教育,并重复这个过程。我正在做的是创建候选变量来解释我的数据和某些结果之间的关系。在这个过程的最后,我应用了一些学习技巧,用这些复合列创建了一个等式。我很少会将行添加到数据集中。我几乎总是创建新的列(统计/机器学习术语中的变量或特性)。
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

我认为上面的答案缺少一个我发现非常有用的简单方法。

当文件太大,无法在内存中加载时,我会将文件分解为多个较小的文件(行或科尔)。

例句:如果30天的交易数据是30 GB大小的,我每天把它分解成一个1GB大小的文件。随后,我分别处理每个文件,并在最后聚合结果。

最大的优点之一是它允许并行处理文件(多线程或进程)。

另一个优点是文件操作(比如在示例中添加/删除日期)可以通过常规的shell命令来完成,这在更高级/复杂的文件格式中是不可能的。

这种方法并不涵盖所有的场景,但在许多场景中非常有用。


查看完整回答
反对 回复 2019-06-05
?
jeck猫

TA贡献1909条经验 获得超7个赞

在这个问题两年后,现在有一个“核心外”的熊猫等价物:虽然它不支持所有的熊猫功能,但你可以用它做更多的事情。


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 748 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信