Python数据分析入门

原文:http://python.jobbole.com/81133/html

本文由 伯乐在线 - Den 翻译,toolate 校稿。未经许可,禁止转载!
英文出处:alstatr.blogspot.ca。欢迎加入翻译组python

最近,Analysis with Programming加入了Planet Python。做为该网站的首批特约博客,我这里来分享一下如何经过Python来开始数据分析。具体内容以下:git

  1. 数据导入
    • 导入本地的或者web端的CSV文件;
  2. 数据变换;
  3. 数据统计描述;
  4. 假设检验
    • 单样本t检验;
  5. 可视化;
  6. 建立自定义函数。

数据导入

这是很关键的一步,为了后续的分析咱们首先须要导入数据。一般来讲,数据是CSV格式,就算不是,至少也能够转换成CSV格式。在Python中,咱们的操做以下:程序员

为了读取本地CSV文件,咱们须要pandas这个数据分析库中的相应模块。其中的read_csv函数可以读取本地和web数据。github

数据变换

既然在工做空间有了数据,接下来就是数据变换。统计学家和科学家们一般会在这一步移除分析中的非必要数据。咱们先看看数据:web

对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属性来提取,以下:dom

数据转置使用T方法,ide

其余变换,例如排序就是用sort属性。如今咱们提取特定的某列数据。Python中,可使用iloc或者ix属性。可是我更喜欢用ix,由于它更稳定一些。假设咱们需数据第一列的前5行,咱们有:函数

顺便提一下,Python的索引是从0开始而非1。为了取出从11到20行的前3列数据,咱们有:

上述命令至关于df.ix[10:20, ['Abra', 'Apayao', 'Benguet']]

为了舍弃数据中的列,这里是列1(Apayao)和列2(Benguet),咱们使用drop属性,以下:

axis 参数告诉函数到底舍弃列仍是行。若是axis等于0,那么就舍弃行。

统计描述

下一步就是经过describe属性,对数据的统计特性进行描述:

 

假设检验

Python有一个很好的统计推断包。那就是scipy里面的stats。ttest_1samp实现了单样本t检验。所以,若是咱们想检验数据Abra列的稻谷产量均值,经过零假设,这里咱们假定整体稻谷产量均值为15000,咱们有:

返回下述值组成的元祖:

  • t : 浮点或数组类型
    t统计量
  • prob : 浮点或数组类型
    two-tailed p-value 双侧几率值

经过上面的输出,看到p值是0.267远大于α等于0.05,所以没有充分的证听说平均稻谷产量不是150000。将这个检验应用到全部的变量,一样假设均值为15000,咱们有:

第一个数组是t统计量,第二个数组则是相应的p值。

可视化

Python中有许多可视化模块,最流行的当属matpalotlib库。稍加说起,咱们也可选择bokeh和seaborn模块。以前的博文中,我已经说明了matplotlib库中的盒须图模块功能。

如今,咱们能够用pandas模块中集成R的ggplot主题来美化图表。要使用ggplot,咱们只须要在上述代码中多加一行,

这样咱们就获得以下图表:

比matplotlib.pyplot主题简洁太多。可是在本博文中,我更愿意引入seaborn模块,该模块是一个统计数据可视化库。所以咱们有:

 

多性感的盒式图,继续往下看。

 

建立自定义函数

在Python中,咱们使用def函数来实现一个自定义函数。例如,若是咱们要定义一个两数相加的函数,以下便可:

顺便说一下,Python中的缩进是很重要的。经过缩进来定义函数做用域,就像在R语言中使用大括号{…}同样。这有一个咱们以前博文的例子:

  1. 产生10个正态分布样本,其中u=3o.
  2. 基于95%的置信度,计算x_barx_bar2 ;
  3. 重复100次; 而后
  4. 计算出置信区间包含真实均值的百分比

Python中,程序以下:

上述代码读起来很简单,可是循环的时候就很慢了。下面针对上述代码进行了改进,这多亏了 Python专家,看我上篇博文的15条意见吧。

 

更新

那些对于本文ipython notebook版本感兴趣的,请点击这里。这篇文章由Nuttens Claude负责转换成 ipython notebook 。

相关文章
相关标签/搜索