利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)

  • pandas对象装配了一个常用数学、统计学方法的集合。其中大部分属于归约或汇总统计的类别,这些方法从DataFrame的行或列中抽取一个Series或一系列值的单个值(如总或平均值)。与NumPy数组中的类似方法相比,它们内建了处理缺失值的功能。考虑一个小型DataFrame:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第1张图片
  • 调用DataFrame的sum方法返回一个包含列上加和的Series:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第2张图片
  • 传入axis='columns’或axis=1,则会将一行上各个列的值相加:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第3张图片
  • 除非整个切片上(在本例中是行或列)都是NA,否则NA值是被自动排除的。可以通过禁用skipna来实现不排除NA值:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第4张图片
  • 下表是归约方法的常用可选参数列表。
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第5张图片
  • 一些方法,比如idxmin和idxmax,返回的间接统计信息,比如最小值或最大值的索引值:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第6张图片
  • 除了归约方法外,有的方法是积累型方法:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第7张图片
  • 还有一类方法,既不是归约型方法也不是积累型方法。describe就是其中之一,它一次性产生多个汇总统计:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第8张图片
  • 对于非数值型数据,describe产生另一种汇总统计:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第9张图片
  • 下表是汇总统计及其相关方法的完整列表。
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第10张图片

相关性和协方差

  • 一些汇总统计,比如相关性和协方差,是由多个参数计算出来的。考虑某些使用附加pandas-datareader库从Yahoo!Finance上获取的包含股价和交易量的DataFrame。如果你还没有安装它,可以通过conda或pip进行安装:
anaconda search -t conda pandas-datareader #详见https://blog.csdn.net/Quincylk/article/details/100582437
  • 为了获得一些股票行情,我使用pandas-datareader模块下载一些数据:(在jupyter中完成)

利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第11张图片

  • 现在我计算股价的百分比,还有一些时间序列操作将会在第11章中深入探索:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第12张图片
  • Series的corr方法计算的是两个Series中重叠的、非NA的、按索引对齐的值的相关性。相应的,cov计算的是协方差:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第13张图片
  • 由于MSFT是一个有效的Python属性,我们可以使用更为简洁的语法来获得这些数据:
    在这里插入图片描述
  • 另一方面,DataFrame的corr和cov方法会分别以DataFrame的形式返回相关性和协方差矩阵:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第14张图片
  • 使用DataFrame的corrwith方法,你可以计算出DataFrame中的行或列与另一个序列或DataFrame的相关性。该方法传入一个Series时,会返回一个含有为每列计算相关性的Series:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第15张图片
  • 传入一个DataFrame时,会计算匹配到列名的相关性数值。在这里,我计算出交易量百分比变化的相关性:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第16张图片
  • 传入axis='columns’会逐行地进行计算。在所有例子中,在计算相关性之前,数据点已经按标签进行了对齐。

唯一值、计数和成员属性

  • 另一类相关的方法可以从一维Series包含的数值中提取信息。为了说明这些方法,请考虑这个例子:
    -
  • 第一个函数是unique,它会给出Series中的唯一值:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第17张图片
  • 唯一值并不一定按照排序好的顺序返回,但是如果需要的话可以进行排序(uniques.sort())。相应的,value_counts计算Series包含的值个数:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第18张图片
  • 为了方便,返回的Series会按照数量降序排序。value_counts也是有效的pandas顶层方法,可以用于任意数组或序列:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第19张图片
  • isin执行向量化的成员属性检查,还可以将数据集以Series或DataFrame一列的形式过滤为数据集的值子集:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第20张图片
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第21张图片
  • 与isin相关的Index.get_indexer方法,可以提供一个索引数组,这个索引数组可以将可能非唯一值数组转换为另一个唯一值数组:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第22张图片
  • 利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第23张图片
  • 某些情况下,你可能想要计算DataFrame多个相关列的直方图,如下面的例子:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第24张图片
  • 将pandas.value_counts 传入DataFrame的apply函数可以得到:
    利用Python进行数据分析笔记(基本功能--描述性统计的概述与计算)_第25张图片
  • 这里,结果中的行标签是所有列中出现的不同值,数值则是这些不同值在每个列中出现的次数。

你可能感兴趣的:(python,数据分析,pandas)