在学习一门新的数据分析语言之前要考虑什么

数据挖掘 Python 可视化
2021-10-06 10:07:46

我目前正处于准备一个新研究项目的早期阶段(仍处于资金申请阶段),并期望数据分析,尤其是可视化工具将在这个项目中发挥作用。

鉴于此,我面临以下困境:我应该学习 Python 以便能够使用其广泛的科学库(Pandas、Numpy、Scipy ......),还是应该深入研究我已经掌握的语言的类似包熟悉(Racket,或较小程度上的 Scala)?

(理想情况下,我会在使用 Racket 中的统计库的同时学习 Python,但我不确定我是否有时间学习这两种方法)

我不是在寻找这个困境的答案,而是寻求对我的不同考虑的反馈:

我目前的职位如下:

支持 Python:

  • 广泛使用的库
  • 广泛使用(在与他人合作的情况下可能起决定性作用)
  • 大量的在线资料开始学习它
  • 专门用于使用 Python 进行科学计算的会议
  • 无论如何学习 Python 都不会浪费时间

赞成一种我已经知道的语言:

  • 这是一种加深我对一种语言的了解的方法,而不是获得另一种语言的肤浅知识(座右铭:你至少应该非常了解一种语言)
  • 这是可行的。Racket 和 Scala 都有很好的数学和统计库
  • 我可以立即开始学习我需要知道的东西,而不是首先必须学习基础知识

两个具体问题:

  1. 我忘记了什么?
  2. Python 2 vs 3 的问题有多大?
3个回答

个人将在这里提出支持 Python 的有力论据。造成这种情况的原因有很多,但我将在其他人在这里提到的一些观点的基础上再接再厉:

  1. 选择一种语言:完全可以混合和匹配语言,d3根据您的可视化需求、FORTRAN快速矩阵乘法以及python所有网络和脚本进行选择。你可以这样做,但保持你的筹码尽可能简单是一个很好的举措,尤其是在早期。
  2. 选择比你更大的东西:你永远不想挑战你想使用的语言的障碍。Julia对于像and这样的语言,这是一个大问题,因为FORTRAN它根本不提供像pythonor这样的语言的全部功能R
  3. 选择社区:在任何语言中最难找到的东西就是社区。Python是这里的明显赢家。如果你被卡住了,你可以在 SO 上问一些问题,然后有人会在几分钟内回答,这对于大多数其他语言来说根本不是这样。如果你在真空中学习一些东西,你只会学得慢得多。

就减分而言,我实际上可能会推倒它们。

加深你对一种语言的了解是一个不错的想法,但是知道一种语言,而没有练习将这种知识推广到其他语言是一个很好的方法来打自己的脚。多年来,我已经三次更改了我最喜欢的整个开发堆栈,MATLABJava学习将你的知识转移到另一种语言比仅仅知道一种语言更有价值。haskellpython

就可行性而言,这是您在任何编程生涯中都会一次又一次地看到的东西。图灵完备性意味着您在技术上可以使用HTML4和做所有事情CSS3,但您想为这项工作选择正确的工具。如果您看到理想的工具并决定将其留在路边,您会发现自己放慢了速度,希望您有一些您留下的工具。

最后一点的一个很好的例子是尝试部署R代码。与 'R' 相比,'R' 的网络功能非常缺乏python,如果你想部署一个服务,或者使用稍微不走寻常路的包,那么pip包比它多一个数量级的事实CRAN是一个巨大的帮助。

根据我的经验,在考虑数据分析平台时要记住的几点是:

  1. 它可以处理我需要的数据大小吗?如果您的数据集适合内存,通常不会有大麻烦,尽管 AFAIK Python 比 R 更节省内存。如果您需要处理大于内存的数据集,平台需要方便地处理它。在这种情况下,SQL 将涵盖基本统计数据,Python + Apache Spark 是另一种选择。
  2. 该平台是否涵盖了我的所有分析需求?我在数据挖掘项目中遇到的最大的烦恼是不得不在几个工具之间折腾,因为工具 A 可以很好地处理网络连接,工具 B 可以进行统计,而工具 C 可以渲染漂亮的图片。您希望您的选择武器尽可能多地涵盖项目的各个方面。在考虑这个问题时,Python 非常全面,但 R 有很多内置的统计测试可供使用,如果你需要的话。

在我看来,你提到的所有因素本质上都是肤浅的。您还没有考虑工具选择的核心。在这种情况下,有两个方面,你提到:

  1. 数据分析——你在做什么样的分析?可能有一些分析在某些语言中更容易,而在其他语言中则更困难。

  2. 可视化 - R 提供了类似的社区和学习材料(如 Python),并且与这里的其他语言相比具有最好的可视化。

在这个阶段,你可以灵活地学习什么语言,因为你是从零开始的。

希望这可以帮助。