• Python数据分析入门


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

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

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

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

    数据导入

    这是很关键的一步,为了后续的分析我们首先需要导入数据。通常来说,数据是CSV格式,就算不是,至少也可以转换成CSV格式。在Python中,我们的操作如下:

    为了读取本地CSV文件,我们需要pandas这个数据分析库中的相应模块。其中的read_csv函数能够读取本地和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属性来提取,如下:

    数据转置使用T方法,

    其他变换,例如排序就是用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 。

  • 相关阅读:
    Django----博客文章数据返回
    Django----admin模块初识
    Django搭建博客文章---模型层
    Js 提交 form 表单
    sql 查询 between and 和 >= <= 比较
    C# 未能加载项目文件
    不一样的 Null
    Js实现table单双行交替色
    C# 判断一个string型的时间格式是否正确
    利用 Label 小小的提升一下用户体验
  • 原文地址:https://www.cnblogs.com/zhizhan/p/5546599.html
Copyright © 2020-2023  润新知