【问题标题】:Relational database versus R/Python data frames关系数据库与 R/Python 数据帧
【发布时间】:2015-05-14 18:20:05
【问题描述】:

在 RDBMS 系统和其他数据库系统之前,我接触过 R 中的表和数据结构的世界。在 R/Python 中,从结构化数据(.csv 或其他格式)创建表格和列表,然后以编程方式进行数据操作是非常优雅的。

去年,我参加了数据库管理课程,学习了所有关于结构化和非结构化数据库的知识。我还注意到,将来自多个数据源的数据输入数据库而不是直接在 R 中使用它们是常态(为了方便和纪律?)。

出于研究目的,R 似乎足以用于连接、附加甚至复杂的数据操作。

不断出现的问题是: 什么时候通过read.csv等命令直接使用R,什么时候通过R-SQL接口创建数据库和查询表来使用R?

例如,如果我有一个多源数据,例如 (a) 个人信息(年龄、性别、吸烟习惯),(b) 结果变量(例如他们实时进行的调查),(c )协变量信息(环境特征),(d)治疗输入(改变结果的事件的发生 - 调查响应)(d)参​​加调查的参与者的时间和空间信息

在这种情况下如何进行数据收集和处理。可能有标准的行业程序,但我在这里提出这个问题,以了解个人和一小群研究人员可以采用的可行和最佳方法的列表。

【问题讨论】:

    标签: database database-design dataframe data-processing data-collection


    【解决方案1】:

    当您说“将来自多个数据源的数据输入数据库是常态”时,您所描述的内容听起来更像是数据仓库。使用数据库的原因有很多,并且在很多情况下,它们会保存来自一个来源的数据——例如,用作事务系统的数据存储的数据库通常只会保存运行该系统所需的数据,以及产生的数据由那个系统。

    您所描述的过程通常称为提取、转换、加载 (ETL),如果您决定在使用之前合并数据,您可能会发现查找有关 ETL 和数据仓库的信息会很有帮助它在 R 中。

    我不能告诉你应该选择哪一种,或者实现它的最佳方式,因为它会在不同的情况下有所不同,甚至可能归结为意见。我可以告诉你的是人们创建数据仓库的一些原因,你可以自己决定它是否对你的情况有用:

    数据仓库可以提供一个中心位置来保存组合数据。这意味着人们不需要在每次需要使用特定的数据组合时自己组合数据。与简单的一次性报告或组合数据提取之类的不同,它应该提供一些灵活性,让人们获得他们为特定任务所需的组合数据集。很多时候,在企业情况下,多个事物会在同一组合数据集之上运行 - 多维数据分析工具(多维数据集)、报告、数据挖掘等。

    这样做的一些好处可能包括:

    • 当他们需要自己组合数据时,个人可以节省时间。
    • 如果需要合并的数据比较复杂,或者有些人不熟练处理这部分流程,那么数据被错误合并的风险较小;您可以确定不同的作品使用了相同的源数据。
    • 如果数据存在数据质量问题,您可以在数据仓库中解决一次,而不是解决它或在代码中反复解决。
    • 如果不断收到新数据,则可以自动收集这些数据并将其集成到数据仓库中。

    就像我说的那样,我无法为您决定这是否是一个有用的方向 - 与任何此类决定一样,您需要权衡实施此类解决方案的成本与收益,并且两者将针对您的个人情况。但希望这能回答您的核心问题,即为什么有人可能会选择在数据库中而不是在他们的代码中进行这项工作,并为您提供工作的起点。

    【讨论】:

    • 在我的案例中,我可以将哪些开源工具用于 ETL 和数据仓库?我正在对数据处理和存储进行研究,这完全是我在项目中的责任以及数据分析。因此,重点是数据分析,而不是与他人共享数据。您的解决方案听起来很有趣,我应该尝试一下。我查看了这个网站butleranalytics.com/5-free-open-source-etl-tools 并找到了我应该尝试的开源 ETL 工具,例如 TALEND。但是一天结束的数据分析和 ML 可以在一个输入和输出的电子表格上完成,所以你有什么感觉。
    • @Earnest_learner 很高兴答案有所帮助。 :) 我避免任何建议的部分原因是,要求软件推荐等违反 SO 的规则,因为它们往往会陷入垃圾邮件或过于基于意见。另外,我对开源 ETL 工具的经验很少(我在 SQL Server 上使用了 SSIS 和 SQL/T-SQL 的组合)。请记住,ETL 可以在代码中完成(SQL 或其他东西)——我听说过人们使用 Python 的例子,但我不确定它会如何执行。什么是合适的(和可行的)真的取决于你的具体情况。
    • 好的。是的,听起来不错。我不想过度杀戮。而且,我不应该规避任何基本流程。我猜人们使用 Python 和 R 来制作数据对象或将其链接到数据库进行数据分析。但是编程很方便,可以为数据处理定制,但不可重复且容易出错,这是我唯一担心的。
    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 2017-03-19
    • 1970-01-01
    • 2016-10-17
    • 2018-08-25
    • 2011-07-18
    • 2016-08-02
    • 2017-08-20
    相关资源
    最近更新 更多