医学生零基础学生信是先学Python还是先学R语言?
53 个回答
为什么而学?
做一件事,学一门语言,到底为什么而学,搞清楚目的再谈学习什么语言,因为要去医院实习的缘故,认识很多医学生想要学习生信。我常常会先和他们聊一聊什么是生信,为什么学,我希望在开始学习之前大家也能问自己两个问题。
- 我学习编程语言是不是跟风,有没有明确的目的
- 如果你有明确的目的,那学习编程语言是为了转行还是为了更好的服务于自己的科研
其实我并不在意你因为什么而学习编程,只是为了发文章可以,能够画出更好的图亦可,想要换一个行业也没有问题。条条大路通罗马,何不选择最简单便捷的一条。无论从哪个方面来讲,尤其是你没有任何的编程基础情况下,尤其是你的学习时间并不充裕的时间下(医学生的时间总是那么的宝贵),入门生信的第一门语言绝对是R,如果你不止是为了科研绘图、不止是为了水一篇文章亦或者你有其他的想法想要接触更多,我也不会让你在Python学习的道路上走太多的歧路。
为什么是R?
- R在绘图中具有独到的优势:箱线、条形、散点、密度手到擒来,配色、图例、标签应有尽有。
- 常用的数据类型dataframe接近excel更加便于理解
- 统计出身的R在数据分析中可以灵活处理各种数据分析问题,尤其是数理统计
当然R的重要性是不言而喻的,关键就在于怎么来学习R语言。
关于R语言学习技能路径:
基础技能入门:
安装加载包、数据结构、变量类型(str)、数据导入/导出(read)、数据筛选数据(filter/select)、合(merge)、匹配(match)、追加(mutate)、长宽转换(reshape)、数据索引(index)、循环(while.for)、判断(if)、排序(sort/rank)、缺失值(is.na)、正则
这一部分我推荐你看一些书籍,直接对着书上面进行基本技能练习,在这个过程中head、str、help函数的使用频率>=1000次是极佳的。哪一本都可以,比如这一本的 第二版前三章 :
这个时候你的基础已经初步具备了,下面咱们就要开始做数据分析了。R做数据分析有些人比较喜欢用r-base( 基础版本 ),当然我个人比较倾向于tidyverse( 可以理解为加长升级版本 )。使用前需要先安装然后加载他(安装就像你买了回来,加载表示你要用他了)。 你以为这些就可以直接画图了吗?各种脏数据扑面而来,60%的时候就花费在了数据预处理上 ,我们看一下数据处理的流程。
第一步:数据预处理:
下面就开始第一步了,这里推荐完成 R语言数据处理120题 一定不要复制粘贴,一个一个敲起来。优秀的预处理能力是你的数据分析中的锋利的宝剑。尤其是在 缺失值、异常值离群点、冗余数据 的处理技巧上。
第二步:数据可视化
做数据可视化的过程中会涉及一些统计的知识,那么下面的一些统计基础就派上了用场。
如果是医学生,恰好有一本深得人心的医学统计书籍。
我自己也在着手更新:
- 生物信息学必备入门级统计学概念:错过不知道再等多久
- 我要自学生信之统计学:跳出假设检验的逻辑坑
- 我要自学生信之统计学:第六章-总体均数的估计
- 我要自学生信之统计学:如何选择假设检验的方法(t检验、U检验、卡方检验、F检验等)
- 我要自学生信之统计学:t检验
- 我要自学生信之统计学:方差分析
- 我要自学生信之统计学:多重比较
- 我要自学生信之统计学:二项分布和Poisson
- 我要自学生信之统计学: \chi^{2} 检验
- 我要自学生信之统计学:模型预测的评价(准确度、精确度、敏感度、特异性)
其实 什么类型的数据画什么图都是很有讲究的
至于画图的细节每一种类型的图都需要详细进行讲解,我的ggplot2科研绘图篇也即将开始更新了,可以和小柯一起学画图。先来张看一看效果~
赶着学习的可以多看看书,专门挑ggplot2画图这一节即可,理解底层画图逻辑( 像PS的图层 )。看视频虽然也讲的很清晰,但是最好还是查漏补缺用。我这里也更新了一些:
第三步:数据建模
许多的数据可视化后不用建模就可以得出一定的结论,有些复杂的数据需要通过分类、聚类等不同的方式进行分析。可以分为 探索性分析和预测性分析。这一部分我会单独在我的专栏进行讲解,这里就不展开了。 至于深度学习的部分还是推荐用python。
关于R语言学习的一些疑虑
1、没有编程基础怎么办
R是我学习的第一门正式学习的编程语言,零基础也可以学会,达成目的即可,有时候只是为了画图而已,坚持一切编程都是纸老虎( 怕就永远都不会 )。
2、前面的学习路径还是不是很清晰,能不能简单再顺一下
- R语言实战前三章
- 数据处理120题
- 基本图形+统计学了解
- ggplot2科研绘图
3、学习路径太慢,可不可以直接开始科研绘图
亦可,边学边整理数据处理和统计相关知识,但是前面的基础技能还是需要看完,后期需要 大量项目来进行补足 ,题海战术在语言学习中依然适用。你是不是想和我说没有办法实战怎么办?我……好人做到底, 论文中的图片哪里来,R绘图来,数据哪里来,论文里面来( 拿起论文-下载数据-开始画图 ) 。
我想学习python可不可以,有没有什么建议?
亦可,python的学习路径我在之前的文章写过,粘贴过来
关于python学习,我不推荐一开始就看太难的书籍,编程语言也很容易劝退,也不希望你只是在单纯的记忆理论,因为那样并没有太大的效果,我个人觉得还是从实战出发:
推荐一本入门的书籍:
理解这本书大约半个月左右的时间,并不会太耽误你的时间。看这本书实战的同时我还希望你做一些很通用的小项目,先在实验楼上进行学习,可以验证你的答案是否正确,这在初期是非常重要的,你一定要能够明确知道你做的是否正确:
与此同时,我常常遇到一些完全零基础的初学者,一看到晦涩难懂的代码就直接放弃,还有一部分人学习的过程中不注意代码规范,写出来的代码可读性很差,可以推荐大家看下百词斩的夜曲编程,这个软件最好的一点是规范性,会把细节的问题做成题目加深理解,比如代码缩进,同时支持在线编程,利于因为软件安装劝退的人
另外很多同学都处于一个比较忙的状态,这个程序可以在微信公众号学也可以网页学,公众号直接关注夜曲编程,网页直接搜索就可以,还是比较方便的。很多初学的编程者路径不正确,对于很对概念理解都非常不清晰,这对于后续的学习是非常不利的,基础不牢,地动山摇,这个软件里的概念卡可以帮助⼤家理解和记忆编程概念,最后的思维导图也可加强记忆。这一点对于初学者还是非常重要的。
有一定的基础之后, 也许你已经摩肩擦掌准备迎战了 ,这个时候的你需要有一个大神带带你,一个人闷头苦干虽然很英雄,但我并不认为这样的英雄主义可以提高你的效率,开始入手github吧,如果你对github不算很熟悉,我恰恰写了一篇github的文章: 自学生信之番外篇:一键解锁github 希望能够有所帮助
github上面的python100天的项目我本人极为推崇 。它可能不是最好的,但是对于初学者是比较适合的,有人带你学习是一件非常幸福的事情。先放一下 github的链接 。
也许你会觉得有点难,突然觉得自己好婆妈,没有关系,作者把前面入门的15天重新做了一个50天练习的项目。
我希望你能够着重注意一下 正则表达式 的应用(生信中你将经常用到他们): 正则表达式30分钟入门教程
这里我特意提及Numpy、Pandas、Matplotlib这三个库,着实是因为他们很重要。
Numpy:利用Python科学计算的基础包,对Numpy的掌握将会帮助你有效地使用Pandas等
Pandas:结构和操作工具,能够使Python数据分析更加快速和容易
Matplotlib和seaborn:Python可视化库。散点图、箱线图、小提琴图等都是手到擒来。
自学生信-机器学习python数据可视化:一节课入门seaborn
如果你能坚持走几年生物信息的道路,我想未来在生物信息学领域的深度学习会大量运用的 ,这几个库的熟练应用会给你一些助力,如若有机会你自己也可以尝试实现一些数据挖掘的算法,解锁一些你对于python的期待: 数据挖掘18大算法实现以及其他相关经典DM算法
一点建议:我不是很希望你看大部头的视频,我希望那些是你在遇到一些问题无法解决时用来查漏补缺的,我看过很多的pyhon学习视频,大多大而全,即便可以坚持,却容易陷入耗时久远而无法解决问题的困境,没错,我在这样的循环中用了一年多才醒悟。走错的路不希望其他人重走自己的路,仅此而已
R和python的学习方法都给你了,开不开始就看了你啦~还是那句话, 一切编程语言都是纸老虎(怕你就永远学不会)。
错误的问题:医学生零基础学生信是先学Python还是先学R语言?
正确的问题:零基础的医学生该如何做一个合格的调包侠?
临床专业的学生亲自作答。
既已零基础,又非专业所学,个人认为重点应是从实践中学习——如果你手里有本实验室/课题组的生信数据,你自然会顺着实验目的去学会相应的分析手段。
R和python在处理生信问题方面都依赖对应的package,你需要的应该是:
- 知道什么问题需要什么package来解决。例如bulk RNAseq用deseq2,edgeR;scRNAseq用Seurat、monocle等;能找到各自的github主页
- 弄懂作者的示例vignette,基本理解其中的函数及其参数。遇到不理解的学会自行去Rdocumentation查
- 在作者给的vignette的基础上更改参数满足自己的需求
以R为例,你只要学会最基本的如何用代码处理表格(筛选、排序这些)——说得再明白些, 学会使用tidyverse这个包 ——就可以上手上面我说的这三步。
并且不要对代码感到畏惧,要有调包侠的基本素养:你不必理解细节,只需知道这段代码的意义是什么,以及哪些参数可调即可。以我个人的例子,我原来只会R,做单细胞测序下游的时候用cellphoneDB分析细胞互作,发现需要调用python,但原作者的代码有bug,当时我不懂python,但还是硬着头皮去比对提示的错误,不断调试,最终解决了——而反复调试的过程中,我也就熟悉了python的基本语法和结构。
个人的两个建议。
- 在实践中学习,这样目的性更强
- 少看公众号/云课堂等。建议直接看各个包的主页下,作者自己写的vignette。个人经验是这些一手材料其实讲解得远比二道贩子清晰