R 和 Python 用于统计学分析方法,哪个更好

R 和 Python 用于统计学分析,哪个更好_百度知道
R 和 Python 用于统计学分析,哪个更好
提问者采纳
sympy做符号计算(类似mathematica。Python是个综合语言(这里特指指CPython解释器)。我这里浓烈的意思是。ipython 更新到1,功能基本完善,他们有一套自己维护package系统。但是已经到了可用的水平了,pandas是主要用来做数据处理(numpy依赖)。在生物信息方便,如果你不熟习统计知识(历史)的话,在合作分享方面非常好用。由统计背景的人开发,statistical models,里面有很多生物信息方面可以用的软件包。R是S(Splus)的开源版本。发源地在新西兰奥克兰,有个叫bioconductor的组织。是读计算机的人写的统计包,numpy scipy是数值计算的扩展包总的概括。R的维护组叫CRAN-R,python(numpy scipy)在工程方便比较实用,其notebook非常强大(感觉就像mathematica)而且还是基于web。成熟度不如R,或者下一代:R主要在学术界流行.0以后。这个软件的统计背景很浓烈,R的帮助文档看起来是很累的?)此外还有一些不太成熟的包如sciki learn
来自团队:
其他类似问题
为您推荐:
python的相关知识
其他3条回答
python. 下一个ipython从pandas开始玩起
r专用统计学的,会更好,
你哪个玩的溜哪个好
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Python运用于数据分析的简单教程
作者:Al-Ahmadgaid Asaad
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Python运用于数据分析的简单教程,主要介绍了如何运用Python来进行数据导入、变化、统计和假设检验等基本的数据分析,需要的朋友可以参考下
最近,加入了。作为该网站的首批特约博客,我这里来分享一下如何通过Python来开始数据分析。具体内容如下:
&&& 数据导入
&&&&&&& 导入本地的或者web端的CSV文件;
&&& 数据变换;
&&& 数据统计描述;
&&& 假设检验
&&&&&&& 单样本t检验;
&&& 可视化;
&&& 创建自定义函数。
这是很关键的一步,为了后续的分析我们首先需要导入数据。通常来说,数据是CSV格式,就算不是,至少也可以转换成CSV格式。在Python中,我们的操作如下:
import pandas as pd
# Reading data locally
df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')
# Reading data from web
data_url = "/alstat/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"
df = pd.read_csv(data_url)
为了读取本地CSV文件,我们需要pandas这个数据分析库中的相应模块。其中的read_csv函数能够读取本地和web数据。
既然在工作空间有了数据,接下来就是数据变换。统计学家和科学家们通常会在这一步移除分析中的非必要数据。我们先看看数据:
# Head of the data
print df.head()
Abra Apayao Benguet Ifugao Kalinga
# Tail of the data
print df.tail()
Abra Apayao Benguet Ifugao Kalinga
对R语言程序员来说,上述操作等价于通过print(head(df))来打印数据的前6行,以及通过print(tail(df))来打印数据的后6行。当然Python中,默认打印是5行,而R则是6行。因此R的代码head(df, n = 10),在Python中就是df.head(n = 10),打印数据尾部也是同样道理。
在R语言中,数据列和行的名字通过colnames和rownames来分别进行提取。在Python中,我们则使用columns和index属性来提取,如下:
# Extracting column names
print df.columns
Index([u'Abra', u'Apayao', u'Benguet', u'Ifugao', u'Kalinga'], dtype='object')
# Extracting row names or the index
print df.index
Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78], dtype='int64')
数据转置使用T方法,
# Transpose data
print df.T
Benguet 148 36 6 64
Apayao ...
Benguet ...
Ifugao ...
Kalinga ...
Apayao 18264
Benguet 3745
Ifugao 16787
Kalinga 16900
其他变换,例如排序就是用sort属性。现在我们提取特定的某列数据。Python中,可以使用iloc或者ix属性。但是我更喜欢用ix,因为它更稳定一些。假设我们需数据第一列的前5行,我们有:
print df.ix[:, 0].head()
Name: Abra, dtype: int64
顺便提一下,Python的索引是从0开始而非1。为了取出从11到20行的前3列数据,我们有:
print df.ix[10:20, 0:3]
Abra Apayao Benguet
上述命令相当于df.ix[10:20, ['Abra', 'Apayao', 'Benguet']]。
为了舍弃数据中的列,这里是列1(Apayao)和列2(Benguet),我们使用drop属性,如下:
print df.drop(df.columns[[1, 2]], axis = 1).head()
Abra Ifugao Kalinga
axis 参数告诉函数到底舍弃列还是行。如果axis等于0,那么就舍弃行。
下一步就是通过describe属性,对数据的统计特性进行描述:
print df.describe()
79.....000000
927...4.6.000000
Python有一个很好的统计推断包。那就是scipy里面的stats。ttest_1samp实现了单样本t检验。因此,如果我们想检验数据Abra列的稻谷产量均值,通过零假设,这里我们假定总体稻谷产量均值为15000,我们有:
from scipy import stats as ss
# Perform one sample t-test using 1500 as the true mean
print ss.ttest_1samp(a = df.ix[:, 'Abra'], popmean = 15000)
返回下述值组成的元祖:
&&& t : 浮点或数组类型
&&& t统计量
&&& prob : 浮点或数组类型
&&& two-tailed p-value 双侧概率值
通过上面的输出,看到p值是0.267远大于α等于0.05,因此没有充分的证据说平均稻谷产量不是150000。将这个检验应用到所有的变量,同样假设均值为15000,我们有:
print ss.ttest_1samp(a = df, popmean = 15000)
(array([ -1.., -65., -4.564575 , 6.]),
array([ 2., 2., 4.,
第一个数组是t统计量,第二个数组则是相应的p值。
Python中有许多可视化模块,最流行的当属matpalotlib库。稍加提及,我们也可选择bokeh和seaborn模块。之前的博文中,我已经说明了matplotlib库中的盒须图模块功能。
# Import the module for plotting
import matplotlib.pyplot as plt
plt.show(df.plot(kind = 'box'))
现在,我们可以用pandas模块中集成R的主题来美化图表。要使用ggplot,我们只需要在上述代码中多加一行,
import matplotlib.pyplot as plt
pd.options.display.mpl_style = 'default' # Sets the plotting display theme to ggplot2
df.plot(kind = 'box')
这样我们就得到如下图表:
比matplotlib.pyplot主题简洁太多。但是在本博文中,我更愿意引入seaborn模块,该模块是一个统计数据可视化库。因此我们有:
# Import the seaborn library
import seaborn as sns
# Do the boxplot
plt.show(sns.boxplot(df, widths = 0.5, color = "pastel"))
多性感的盒式图,继续往下看。
plt.show(sns.violinplot(df, widths = 0.5, color = "pastel"))
plt.show(sns.distplot(df.ix[:,2], rug = True, bins = 15))
with sns.axes_style("white"):
plt.show(sns.jointplot(df.ix[:,1], df.ix[:,2], kind = "kde"))
plt.show(sns.lmplot("Benguet", "Ifugao", df))
创建自定义函数
在Python中,我们使用def函数来实现一个自定义函数。例如,如果我们要定义一个两数相加的函数,如下即可:
def add_2int(x, y):
return x + y
print add_2int(2, 2)
顺便说一下,Python中的缩进是很重要的。通过缩进来定义函数作用域,就像在R语言中使用大括号{…}一样。这有一个我们之前博文的例子:
&&& 产生10个正态分布样本,其中u=3和o.
&&& 基于95%的置信度,计算 x_bar 和 x_bar2 ;
&&& 重复100次; 然后
&&& 计算出置信区间包含真实均值的百分比
Python中,程序如下:
import numpy as np
import scipy.stats as ss
def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
m = np.zeros((rep, 4))
for i in range(rep):
norm = np.random.normal(loc = mu, scale = sigma, size = n)
xbar = np.mean(norm)
low = xbar - ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
up = xbar + ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
if (mu & low) & (mu & up):
m[i, :] = [xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
上述代码读起来很简单,但是循环的时候就很慢了。下面针对上述代码进行了改进,这多亏了 Python专家。
import numpy as np
import scipy.stats as ss
def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
scaled_crit = ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))
xbar = norm.mean(1)
low = xbar - scaled_crit
up = xbar + scaled_crit
rem = (mu & low) & (mu & up)
m = np.c_[xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具R 和 Python 用于统计学分析,哪个更好_百度知道
R 和 Python 用于统计学分析,哪个更好
就更好不过了,各方面都可以,但是Python却基本胜任,我们完全可以只使用Python这一种语言去构建以数据为中心的应用程序。可能你已经猜到了。
但世上本没有最好的软件或程序、对定期&#47. 用python pandas做了一些数据整理工作。之后一个项目要做方法比较,Python之前在这方面贫乏不少,一些底层用C写的算法封装在Python包里后性能非常高效(Python的数据挖掘包Orange canve 中的决策树分析50万用户10秒出结果,看网页非常卡~)2,数据处理、读取;Hive,数据聚类,因此R不可能直接分析行为详单。Python的一个最明显的优势在于其胶水语言的特性,发现一些bioconductor上的包已经默认用parallel了。但是数据分析其实不仅仅是统计;R不行、聚合,如果能把R和Python相结合。感觉还是很方便的,咱们坛子里有原帖,但你当然也可以用它们来分析服务器日志数据,用R几个小时也出不来。
Python与R相比速度要快。但是,数据抽样,现在完全不用又舍不得。pyplot作图的方式和R差异很大,multiprocess,类似数据库,轻松地进行切片&#47,数据建模等等这些任务,无论是对其他语言的调用,如果R矢量化编程做得好的话(有点小难度),Python都有着明显优势,会使R的速度和程序的长度都有显著性提升,近年来,你可以高效处理非常大的时间序列。pyplot 的legend比R 好用多了,凡事都不绝对。pandas提供了一组标准的时间序列处理工具和数据算法,但估计会慢点,但是名字太长了~,两三个表来回查。
R的优势在于有包罗万象的统计函数可以调用,无论是经典还是前沿的方法都有相应的包直接使用,R是一条命令画点东西,看完会有更多启发。
而R是在统计方面比较突出:1,特别是在时间序列分析方面,也鲜有人能把单一语言挖掘运用到极致。总的来说Python是一套比较平衡的语言,算是半自动化了,默认颜色比较少。尤其是很多人早先学了R;切块,pylot是准备好了以后一起出来。
相比之下:Python=R+SQL&#47,所以对于想要学以致用的人来说,只能分析统计结果,只要是100M以上的数据。
结合其在通用编程方面的强大实力。因此;不定期的时间序列进行重采样等,前期的数据收集,以及比较复杂的数据挖掘算法。虽然这些工作R也能做,一下子把所有线程都用掉了。3,之后可用html的颜色,由于Python有不断改良的库(主要是pandas),又用回R,这些工具中大部分都对金融和经济数据尤为有用。于是。所以有人说. 用python matplotlib画图。
做过几个实验,导致整个电脑使用不能,现在Python有了pandas。pyplot的颜色选择有点尴尬,其中用到了ctypes,R都很难胜任,和数据源的连接。(但那个包还是很慢,这点比R好用,R分析数据时需要先通过数据库把大数据转化为小数据(通过groupby)才能交给R做分析,很多书里也都会提到这一点,对系统的操作。pyplot画出来后可以自由拉升缩放,8G内存全部占满),还是正则表达和文字处理,毕竟几十万行的条目了,就不多说了,使其成为数据处理任务的一大替代方案。但是. 用python实现了一个统计方法。Python可以直接处理上G的数据、匹配,很早看过一篇文章——让R与Python共舞2012年的时候我们说R是学术界的主流,然后再保存为图片。不知道是不是因为大数据时代的到来,并不是没有道理的,但是现在Python正在慢慢取代R在学术界的地位
其他类似问题
为您推荐:
其他1条回答
R是统计学家开发的,所以你说呢?
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁R 和 Python 用于统计学分析,哪个更好_百度知道
R 和 Python 用于统计学分析,哪个更好
提问者采纳
它可以做,而且还有很多R包可以拓展功能,和matlab很像(但是不收费)R无意是专门为学统计的量身打造的。 python就是一门语言像C++,module.,语言学习没什么难度,就是数据结构和各种函数用法要记清楚.,但是比他简单不少,而且有很多内置函数
来自团队:
其他类似问题
为您推荐:
python的相关知识
其他1条回答
应该是R,因为R本来就是做这个的
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁R 和 Python 用于统计学分析,哪个更好_百度知道
R 和 Python 用于统计学分析,哪个更好
用于统计分析估计需要至少1个月的时间才能初入门,熟练大约要几个月,通常用于训练大数据的算法,如果你自己探索精神强。 而python语言入门很容易。 做产品就不能用R。就学习难度而言,大约一个星期就可以熟练使用两个都要学,那么从python开始。 一个python老手。而且API丰富,那么python与R都是必须。所以就效果而言R无疑是首选,可以自己做一些尝试。 如果你是统计学专业的。 在算法研究时R是必要的,同时在做大数据。 R的包很丰富。不过。 因为相互之间不可替代,会编程大约1-2个星期,R做统计分析要容易很多,需要用python+C重新写过,寻常工作也可以用。 python的大数据计算包也挺多,而且自己做算法很有天赋,编程不强
其他类似问题
为您推荐:
python的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 python 统计学 的文章

 

随机推荐