Pandas 的本质是统计学原理在计算机领域的一种应用实现,通过编程的方式达到分析、描述数据的目的。而统计函数则是统计学中用于计算和分析数据的一种工具。在数据分析的过程中,使用统计函数有助于我们理解和分析数据。本节将学习几个常见的统计函数,比如百分比函数、协方差函数、相关系数等。

百分比变化(pct_change)

Series 和 DatFrames 都可以使用 pct_change() 函数。该函数将每个元素与其前一个元素进行比较,并计算前后数值的百分比变化。示例如下:

  1. import pandas as pd
  2. import numpy as np
  3. #Series结构
  4. s = pd.Series([1,2,3,4,5,4])
  5. print (s.pct_change())
  6. #DataFrame
  7. df = pd.DataFrame(np.random.randn(5, 2))
  8. print(df.pct_change())

输出结果:

0         NaN
1 1.000000
2 0.500000
3 0.333333
4 0.250000
5 -0.200000
dtype: float64
0 1
0 NaN NaN
1 74.779242 0.624260
2 -0.353652 -1.104352
3 -2.422813 -13.994103
4 -3.828316 -1.853092

默认情况下,pct_change() 对列进行操作,如果想要操作行,则需要传递参数 axis=1 参数。示例如下:

  1. import pandas as pd
  2. import numpy as np
  3. #DataFrame
  4. df = pd.DataFrame(np.random.randn(3, 2))
  5. print(df.pct_change(axis=1))

输出结果:

    0         1
0 NaN 3.035670
1 NaN -0.318259
2 NaN 0.227580

协方差(cov)

Series 对象提供了一个cov方法用来计算 Series 对象之间的协方差。同时,该方法也会将缺失值(NAN )自动排除。

示例如下:

  1. import pandas as pd
  2. import numpy as np
  3. s1 = pd.Series(np.random.randn(10))
  4. s2 = pd.Series(np.random.randn(10))
  5. print (s1.cov(s2))

输出结果:

0.20789380904226645

当应用于 DataFrame 时,协方差(cov)将计算所有列之间的协方差。

  1. import pandas as pd
  2. import numpy as np
  3. frame = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
  4. #计算a与b之间的协方差值
  5. print (frame['a'].cov(frame['b']))
  6. #计算所有数列的协方差值
  7. print (frame.cov())

输出结果:

-0.37822395480394827
a b c d e
a 1.643529 -0.378224 0.181642 0.049969 -0.113700
b -0.378224 1.561760 -0.054868 0.144664 -0.231134
c 0.181642 -0.054868 0.628367 -0.125703 0.324442
d 0.049969 0.144664 -0.125703 0.480301 -0.388879
e -0.113700 -0.231134 0.324442 -0.388879 0.848377

相关系数(corr)

相关系数显示任意两个 Series 之间的线性关系。Pandas 提供了计算相关性的三种方法,分别是 pearson(default)、spearman() 和 kendall()。

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
  4. print (df['b'].corr(frame['c']))
  5. print (df.corr())

输出结果:

0.5540831507407936
a b c d e
a 1.000000 -0.500903 -0.058497 -0.767226 0.218416
b -0.500903 1.000000 -0.091239 0.805388 -0.020172
c -0.058497 -0.091239 1.000000 0.115905 0.083969
d -0.767226 0.805388 0.115905 1.000000 0.015028
e 0.218416 -0.020172 0.083969 0.015028 1.000000

注意:如果 DataFrame 存在非数值(NAN),该方法会自动将其删除。

排名(rank)

rank() 按照某种规则(升序或者降序)对序列中的元素值排名,该函数的返回值的也是一个序列,包含了原序列中每个元素值的名次。如果序列中包含两个相同的的元素值,那么会为其分配两者的平均排名。示例如下:

  1. import pandas as pd
  2. import numpy as np
  3. #返回5个随机值,然后使用rank对其排名
  4. s = pd.Series(np.random.randn(5), index=list('abcde'))
  5. s['d'] = s['b']
  6. print(s)
  7. #a/b排名分别为2和3,其平均排名为2.5
  8. print(s.rank())

输出结果:

a   -0.689585
b   -0.545871
c    0.148264
d   -0.545871
e   -0.205043
dtype: float64 排名后输出:
a    1.0
b    2.5
c    5.0
d    2.5
e    4.0
dtype: float64

1) method参数

rank() 提供了 method 参数,可以针对相同数据,进行不同方式的排名。如下所示:

  • average:默认值,如果数据相同则分配平均排名;
  • min:给相同数据分配最低排名;
  • max:给相同数据分配最大排名;
  • first:对于相同数据,根据出现在数组中的顺序进行排名。

2) aisx&ascening

rank() 有一个ascening参数, 默认为 True 代表升序;如果为 False,则表示降序排名(将较大的数值分配给较小的排名)。

rank() 默认按行方向排名(axis=0),也可以更改为 axis =1,按列排名。示例如下:

  1. import pandas as pd
  2. import numpy as np
  3. a = pd.DataFrame(np.arange(12).reshape(3,4),columns = list("abdc"))
  4. a =a.sort_index(axis=1,ascending=False)
  5. a.iloc[[1,1],[1,2]] = 6
  6. #按行排名,将相同数值设置为所在行数值的最大排名
  7. print(a.rank(axis=1,method="max"))

输出结果:

     d    c    b    a
0 3.0 4.0 2.0 1.0
1 4.0 4.0 4.0 1.0
2 3.0 4.0 2.0 1.0

与 method="min"进行对比,如下所示:

  1. import pandas as pd
  2. import numpy as np
  3. a = pd.DataFrame(np.arange(12).reshape(3,4),columns = list("abdc"))
  4. a =a.sort_index(axis=1,ascending=False)
  5. a.iloc[[1,1],[1,2]] = 6
  6. #按行排名,将相同数值设置为所在行数值的最小排名
  7. print(a.rank(axis=1,method="min"))

输出结果:

     d    c    b    a
0 3.0 4.0 2.0 1.0
1 2.0 2.0 2.0 1.0
2 3.0 4.0 2.0 1.0

pandas之统计函数的更多相关文章

  1. Pandas数据统计函数

    Pandas数据统计函数 汇总类统计 唯一去重和按值计数 相关系数和协方差 0.读取csv数据 1.汇总类统计 2.唯一去重和按值计数 2.1 唯一性去重 一般不用于数值列,而是枚举.分类列 2.2 ...

  2. Pandas分组统计函数:groupby、pivot_table及crosstab

    利用python的pandas库进行数据分组分析十分便捷,其中应用最多的方法包括:groupby.pivot_table及crosstab,以下分别进行介绍. 0.样例数据 df = DataFram ...

  3. Pandas | 14 统计函数

    统计方法有助于理解和分析数据的行为.可以将这些统计函数应用到Pandas的对象上. pct_change()函数 系列,DatFrames和Panel都有pct_change()函数.此函数将每个元素 ...

  4. pandas分组统计:groupby,melt,pivot_table,crosstab的用法

    groupby: 分组 melt: 宽表转长表 pivot_table: 长表转宽表,数据透视表 crosstab: 交叉表 / 列联表,主要用于分组频数统计 import numpy as np i ...

  5. Pandas统计函数

    统计方法有助于理解和分析数据的行为.现在我们将学习一些统计函数,可以将这些函数应用到Pandas的对象上. pct_change()函数 系列,DatFrames和Panel都有pct_change( ...

  6. pandas的数据统计函数

    # 1汇总类统计 # 2唯一去重和按值计数 # 3 相关系数和协方差 import pandas as pd # 0 读取csv数据 df = pd.read_csv("beijing_ti ...

  7. 第十一节:pandas统计函数

    1.pct_change()计算增长比例 2.cov()协方差 3.corr()相关系数 4.rank()数据排名 5.numpy聚合函数

  8. Python Pandas分组聚合

    Pycharm 鼠标移动到函数上,CTRL+Q可以快速查看文档,CTR+P可以看基本的参数. apply(),applymap()和map() apply()和applymap()是DataFrame ...

  9. 《利用python进行数据分析》读书笔记--第五章 pandas入门

    http://www.cnblogs.com/batteryhp/p/5006274.html pandas是本书后续内容的首选库.pandas可以满足以下需求: 具备按轴自动或显式数据对齐功能的数据 ...

  10. Python For Data Analysis -- Pandas

    首先pandas的作者就是这本书的作者 对于Numpy,我们处理的对象是矩阵 pandas是基于numpy进行封装的,pandas的处理对象是二维表(tabular, spreadsheet-like ...

随机推荐

  1. 学习JavaScript第一周

    三种输出方式,console.log.element.write.alert(): 简单数据类型:数值型.字符串型.布尔类型.undefined.null 复杂数据类型:对象 数据类型的转换:字符串转 ...

  2. Linux下 Jdk版本切换

    安装: 甲骨文官网下jdk 上传到云服务器 解压: tar -zxvf jdk-7u79-linux-x64.tar.gz 设置环境变量 vim /etc/profile 末尾加上 export JA ...

  3. Vue+SSM+Element-Ui实现前后端分离(3)

    前言:经过博文(1)vue搭建,(2)ssm搭建,到这里就该真真切切的实现小功能了<-_-> 规划:实现登录,用户列表查询,访问日志aop; 开始先解决跨域:在目录config/index ...

  4. Javaheima20

    Java 学习内容 单元测试 反射 注解 动态代理 开发好的系统中存在很多的方法,如和对这些方法的正确性进行测试 如何在程序运行时取得到Class对象,然后取获得Class中的每个成分 注解是什么,具 ...

  5. java学习笔记(四)变量

    局部变量,必须声明和初始化值: 实列变量,从属于对象:如果不自行初始化,这个类型的默认值,数值类型,0,0.0  布尔值  默认为false  除了基本类型下,其余的默认值都是null 如 变量类型 ...

  6. jxg项目Day2-git

    申请了我自己的gitee账号,建了我的仓库,在idea中点这个,然后就算漫长的自动下载的过程.. 对分支和冲突的理解:每个人都有自己的develop分支,可以commit到本地的分支,可以push到远 ...

  7. 开发者工具与idea代码缺失

    开发者工具与idea代码缺失 当categoryList为空时,<dd></dd>之间显示结果为无,所以开发者工具也无这段代码.

  8. java 转换指定文件夹文件编码工具

    import java.io.*; public class test { public static void main(String[] args) { printFiles(new File(& ...

  9. [极客大挑战 2019]PHP 1

    进入后提示我们网页有备份文件,这边使用爆破工具,网页会down掉 随便随便猜了一下www.zip,成功下载源码 常见的网页备份有 .git ~ .swp .swo .bak .zip 还不知道是什么题 ...

  10. [HCTF 2018]WarmUp 1

    主页面是一个滑稽 得到source.php 观看源码,提示source.php 访问看到源码 <?php highlight_file(__FILE__); class emmm { publi ...