分位函数(四分位数)概念与pandas中的quantile函数

摘要:
但是在p四分位数中有一个著名的四分位数。所谓的四分位数;也就是说,从小到大排列这些值,并将它们分成四个相等的部分。三个分界点处的值为四分位数。第三个四分位数,也称为“较大四分位数”,等于样本中从小到大的所有值的第75个百分位数。第三四分位数和第一四分位数之间的差异也称为四分位数间距的计算方法和示例。为了更概括,我们在计算过程中考虑了p四分位数。当p=0.250.50.75时,计算四分位数。
p分位函数(四分位数)概念与pandas中的quantile函数

函数原型

DataFrame.quantile(q=0.5, axis=0, numeric_only=True, interpolation=’linear’)

参数

- q : float or array-like, default 0.5 (50% quantile 即中位数-第2四分位数)
0 <= q <= 1, the quantile(s) to compute

- axis : {0, 1, ‘index’, ‘columns’} (default  0)
0 or ‘index’ for row-wise, 1 or ‘columns’ for column-wise

- interpolation(插值方法) : {‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’}

当选中的分为点位于两个数数据点 i and j 之间时:
    linear: i + (j - i) * fraction, fraction由计算得到的pos的小数部分(可以通过下面一个例子来理解这个fraction);
    lower: i.
    higher: j.
    nearest: i or j whichever is nearest.
    midpoint: (i + j) / 2.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

统计学上的四分为函数

原则上p是可以取0到1之间的任意值的。但是有一个四分位数是p分位数中较为有名的。

所谓四分位数;即把数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数。

  • 第1四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。
  • 第2四分位数 (Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。
  • 第3四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。

第3四分位数与第1四分位数的差距又称四分位距(InterQuartile Range,IQR)

计算方法与举例

为了更一般化,在计算的过程中,我们考虑p分位。当p=0.25 0.5 0.75 时,就是在计算四分位数。

首先确定p分位数的位置(有两种方法):

方法1 pos = (n+1)*p
方法2 pos = 1+(n-1)*p

pandas 中使用的是方法2确定的。

给定测试数据:

   a    b
0  1    1
1  2   10
2  3  100
3  4  100
  • 1
  • 2
  • 3
  • 4
  • 5

计算

df = pd.DataFrame(np.array([[1, 1], [2, 10], [3, 100], [4, 100]]),columns=['a', 'b'])
print(df.quantile(.1))
  • 1
  • 2

结果是:

a    1.3
b    3.7
Name: 0.1, dtype: float64
  • 1
  • 2
  • 3

默认使用的是linear 插值

计算a列
pos = 1 + (4 - 1)*0.1 = 1.3 
fraction = 0.3

ret = 1 + (2 - 1) * 0.3 = 1.3

计算b列
pos = 1.3 
ret = 1 + (10 - 1) * 0.3 = 3.7

在b中,假如pos等于2.5呢,即在2-3之间,那i对应就是10,j对应就是100,ret = 10 + (100-10) * 0.3 = 55

 “分为点p位于两个数数据点 i and j 之间时”,比如 y= [1,10,100,100],x= [0,1,2,3],对应于[0,0.333,0.667,1],当p=0.4时,i、j分别为10、100,因此,pos = 1 + (4-1)*0.4=2.2,pos取小数部分即0.2,也即fraction=0.2(fraction由计算得到的pos的小数部分),,,故值为10+(100-10)* 0.2=28 。 验证: df = pd.DataFrame(np.array([[1, 1], [2, 10], [3, 100], [4, 100]]),columns=[&#39;a&#39;, &#39;b&#39;]) print df.quantile([0.1,0.2,0.4,0.5, 0.75])

免责声明:文章转载自《分位函数(四分位数)概念与pandas中的quantile函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MapGIS6.7安装图文教程(完美破解)Selenium Webdriver——操作隐藏的元素下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python数据分析用什么软件?(萌新进)

Python是数据处理常用工具,可以处理数量级从几K至几T不等的数据,具有较高的开发效率和可维护性,还具有较强的通用性和跨平台性,这里就为大家分享几个不错的数据分析工具。 Python数据分析需要安装的第三方扩展库有:Numpy、Pandas、SciPy、Matplotlib、Scikit-Learn、Keras、Gensim、Scrapy等,以下是第三方...

python科学计算库-pandas

------------恢复内容开始------------ 1、基本概念 在数据分析工作中,Pandas 的使用频率是很高的,一方面是因为 Pandas 提供的基础数据结构 DataFrame 与 json 的契合度很高,转换起来就很方便。另一方面,如果我们日常的数据清理工作不是很复杂的话,你通常用几句 Pandas 代码就可以对数据进行规整。 Pand...

python pandas 对带时间序列的数据进行重采样处理

今天老板要处理一批带有时间序列的数据,源数据为1秒钟一行的csv数据,处理之后变成15分钟一行的数据。 源数据示例如下: time B00 B01 ... RollMean2.5RollMean10 2018-05-31 09:44:39 15.212 5.071 .....

(转)Python科学计算之Pandas详解,pythonpandas

https://www.cnblogs.com/linux-wangkun/p/5903380.html-------pandas 学习(1): pandas 数据结构之Series https://www.cnblogs.com/linux-wangkun/p/5903945.html-------pandas 学习(2): pandas 数据结构之Da...

pandas数据框,统计某列或者某行数据元素的个数

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/sinat_38893241/article/details/80414977在《pandas数据框,统计某列数据与其他文件对应关系的个数》之后,我发觉简单版的元素个数统计问题没有说清楚,就在这里介绍...

pandas重塑层次化索引(stack()和unstack()函数解析)

在数据处理时,有时需要对数据的结构进行重排,也称作是重塑(Reshape)或者轴向旋转(Pivot)。而运用层次化索引可为 DataFrame 的数据重排提供良好的一致性。在 pandas 中提供了实现重塑的两个函数,即 stack() 函数和 unstack() 函数。常见的数据层次化结构有两种,一种是表格,如图 1 所示;另一种是“花括号”,如图 2...