• np.percentile(nums, (25, 50, 75), interpolation='midpoint') 返回一个依次包含所有四分位数的列表：[25.5 40. 42.5]。 可以很容易看出来，这个方法可以一次性求任意的分位数。附纯python写法:def median(x): ...
数据源：nums=[]使用numpy很简单：import numpy as np

np.percentile(nums, (25, 50, 75), interpolation='midpoint')    返回一个依次包含所有四分位数的列表：[25.5 40.  42.5]。    可以很容易看出来，这个方法可以一次性求任意的分位数。附纯python写法:def median(x):
x = sorted(x)
length = len(x)
mid, rem = divmod(length, 2)    # divmod函数返回商和余数
if rem:
return x[:mid], x[mid+1:], x[mid]
else:
return x[:mid], x[mid:], (x[mid-1]+x[mid])/2

lHalf, rHalf, q2 = median(nums)
print(median(lHalf)[2])
print(q2)
print(median(rHalf)[2])
展开全文
• My attempt in Python is as follows: >>> a = numpy.array([1, 2, 3, 4, 5, 6, 7]) >>> numpy.percentile(a, 25) 2.5 >>> numpy.percentile(a, 75) 5.5 >>> numpy.percentile(a, 75) - numpy.percentile(a, 25) # ...
I have a list of numbers [1, 2, 3, 4, 5, 6, 7] and I want to have a function to return the interquartile range of this list of numbers. The interquartile range is the difference between the upper and lower quartiles. I have attempted to calculate the interquartile range using NumPy functions and using Wolfram Alpha. I find all of the answers, from my manual one, to the NumPy one, tothe Wolfram Alpha, to be different. I do not know why this is.My attempt in Python is as follows:>>> a = numpy.array([1, 2, 3, 4, 5, 6, 7])>>> numpy.percentile(a, 25)2.5>>> numpy.percentile(a, 75)5.5>>> numpy.percentile(a, 75) - numpy.percentile(a, 25) # IQR3.0My attempt in Wolfram Alpha is as follows:So, I find that the values returned by NumPy and Wolfram Alpha for what I think are the first quartile, the third quartile and the interquartile range are not consistent. Why is this? What should I be doing in Python to calculate the interquartile range correctly?As far as I am aware, the interquartile range of [1, 2, 3, 4, 5, 6, 7] should be the following:median(5, 6, 7) - median(1, 2, 3) = 4.解决方案You have 7 numbers which you are attempting to split into quartiles. Because 7 is not divisible by 4 there are a couple of different ways to do this as mentioned here.Your way is the first given by that link, wolfram alpha seems to be using the third. Numpy is doing basically the same thing as wolfram however its interpolating based on percentiles (as shown here) rather than quartiles so its getting a different answer. You can choose how numpy handles this using the interpolation option (I tried to link to the documentation but apparently I'm only allowed two links per post).You'll have to choose which definition you prefer for your application.
展开全文
• 假设数据总是排序的...其中之一是pct：pct : boolean, default FalseComputes percentage rank of data百分比排名有不同的计算方法。这些方法由参数method控制：method : {‘average’, ‘min’, ‘max’, ‘firs...
假设数据总是排序的（谢谢@胡安帕.阿里维拉加)，您可以使用Pandas^{}类中的rank方法。rank()接受多个参数。其中之一是pct：pct : boolean, default FalseComputes percentage rank of data百分比排名有不同的计算方法。这些方法由参数method控制：method : {‘average’, ‘min’, ‘max’, ‘first’, ‘dense’}您需要方法"max"：max: highest rank in group让我们看看rank()方法的输出，其中包含以下参数：import numpy as npimport pandas as pdseries = [1,2,2,2,2,2,2,2,2,2,2,5,5,6,7,8]S = pd.Series(series)percentage_rank = S.rank(method="max", pct=True)print(percentage_rank)这基本上给出了Series中每个条目的百分比：^{pr2}\$为了检索这三个百分位的索引，您可以在Series中查找第一个元素，该元素的百分比排名等于或高于您感兴趣的百分位。该元素的索引就是您需要的索引。在index25 = S.index[percentage_rank >= 0.25][0]index50 = S.index[percentage_rank >= 0.50][0]index75 = S.index[percentage_rank >= 0.75][0]print("25 percentile: index {}, value {}".format(index25, S[index25]))print("50 percentile: index {}, value {}".format(index50, S[index50]))print("75 percentile: index {}, value {}".format(index75, S[index75]))这将为您提供以下输出：25 percentile: index 1, value 250 percentile: index 1, value 275 percentile: index 11, value 5
展开全文
• 一、计算四分位 #!/usr/bin/python # -*- coding: UTF-8 -*- """ @author:ZSW @file:quantile_distance.py @time:2021/02/05 """ import pandas as pd import numpy as np # 读取excle文件 excel_data = pd.read...
一、计算四分位

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:ZSW
@file:quantile_distance.py
@time:2021/02/05
"""

import pandas as pd
import numpy as np

# 读取excle文件
# print(excel_data)

data1 = excel_data.to_dict(orient="list")
data_list = data1['time']
data_list = sorted(data_list)

# 法一：使用numpy工具包
res = np.percentile(data_list, (25, 50, 75), interpolation='midpoint')
print(res)

# 法二：直接计算
def median(x):
x = sorted(x)
length = len(x)
mid, rem = divmod(length, 2)  # divmod函数返回商和余数
if rem:
return x[:mid], x[mid + 1:], x[mid]
else:
return x[:mid], x[mid:], (x[mid - 1] + x[mid]) / 2

lHalf, rHalf, q2 = median(data_list)
print('上四分位：{}'.format(median(lHalf)[2]))
print('中位数：{}'.format(q2))
print('下四分位：{}'.format(median(rHalf)[2]))
print('四分位距：{}'.format(median(rHalf)[2]-median(lHalf)[2]))
res = (median(rHalf)[2]-median(lHalf)[2])*1.5 + median(rHalf)[2]
print('异常阈值：{}'.format(res))

# 法三：使用pandas中describe()函数
print(pd.DataFrame(data_list).describe())

结果：

[0.12638889 0.59694444 2.32527778]
上四分位：0.126388888888889
中位数：0.596944444444444
下四分位：2.3252777777777798
四分位距：2.1988888888888907
异常阈值：5.623611111111115

0
count  37932.000000
mean       3.041283
std        5.612899
min        0.000000
25%        0.126389
50%        0.596944
75%        2.325139
max       25.071944

二、绘制箱型图

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:ZSW
@file:plot_quantile_distance.py
@time:2021/02/05
"""

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

# 解决matplotlib无法显示中文问题
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

data = df['avg_time']
data.plot.box(title="箱型图")
plt.show()

三、绘制多箱型图

import pandas as pd
from pylab import *

rcParams['axes.unicode_minus'] = False
rcParams['font.sans-serif'] = ['Simhei']

data1 = df.to_dict(orient="list")
df = pd.DataFrame(data1)
print(df.describe())  # 显示中位数、上下四分位数、标准偏差等内容
box_1 = data1['A类']
labels = '1'
plt.subplot(241)
plt.boxplot([box_1], notch=False, labels=labels, patch_artist = False, boxprops={'color':'black','linewidth':'2.0'},
capprops={'color':'black','linewidth':'2.0'})
plt.xlabel("A类", fontsize=16)
plt.ylabel('时长(时)', fontsize=16)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)

data1 = df.to_dict(orient="list")
df = pd.DataFrame(data1)
print(df.describe())  # 显示中位数、上下四分位数、标准偏差等内容
box_1 = data1['B类']
labels = '2'
plt.subplot(242)
plt.boxplot([box_1], notch=False, labels=labels, patch_artist=False, boxprops={'color':'black','linewidth':'2.0'},
capprops={'color': 'black', 'linewidth':'2.0'})
plt.xlabel("B类",fontsize=16)
plt.ylabel('时长(时)',fontsize=16)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)

data1 = df.to_dict(orient="list")
df = pd.DataFrame(data1)
print(df.describe())  # 显示中位数、上下四分位数、标准偏差等内容
box_1 = data1['C类']
labels = '3'
plt.subplot(243)
plt.boxplot([box_1], notch=False, labels=labels, patch_artist=False, boxprops={'color':'black','linewidth':'2.0'},
capprops={'color':'black','linewidth':'2.0'})
plt.xlabel("C类",fontsize=16)
plt.ylabel('时长(时)',fontsize=16)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)

data1 = df.to_dict(orient="list")
df = pd.DataFrame(data1)
print(df.describe())  # 显示中位数、上下四分位数、标准偏差等内容
box_1 = data1['D类']
labels = '4'
plt.subplot(244)
plt.boxplot([box_1], notch=False, labels=labels,patch_artist=False, boxprops={'color':'black','linewidth':'2.0'},
capprops={'color':'black','linewidth':'2.0'})
plt.xlabel("D类",fontsize=16)
plt.ylabel('时长(时)',fontsize=16)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)

data1 = df.to_dict(orient="list")
df = pd.DataFrame(data1)
print(df.describe())  # 显示中位数、上下四分位数、标准偏差等内容
box_1 = data1['E类']
labels = '5'
plt.subplot(245)
plt.boxplot([box_1], notch=False, labels=labels, patch_artist=False, boxprops={'color':'black','linewidth':'2.0'},
capprops={'color':'black','linewidth':'2.0'})
plt.xlabel("E类",fontsize=16)
plt.ylabel('时长(时)',fontsize=16)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)

data1 = df.to_dict(orient="list")
df = pd.DataFrame(data1)
print(df.describe())  # 显示中位数、上下四分位数、标准偏差等内容
box_1 = data1['F类']
labels = '6'
plt.subplot(246)
plt.boxplot([box_1], notch=False, labels=labels, patch_artist=False, boxprops={'color':'black','linewidth':'2.0'},
capprops={'color':'black','linewidth':'2.0'})
plt.xlabel("F类",fontsize=16)
plt.ylabel('时长(时)',fontsize=16)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)

data1 = df.to_dict(orient="list")
df = pd.DataFrame(data1)
print(df.describe())  # 显示中位数、上下四分位数、标准偏差等内容
box_1 = data1['G类']
labels = '8'
plt.subplot(247)
plt.boxplot([box_1], notch=False, labels=labels, patch_artist=False, boxprops={'color':'black','linewidth':'2.0'},
capprops={'color':'black','linewidth':'2.0'})
plt.xlabel("G类",fontsize=16)
plt.ylabel('时长(时)',fontsize=16)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)

plt.show()

结果：

参考：http://www.79tui.com/happy/605215.html

https://blog.csdn.net/sinat_28252525/article/details/80671238

https://blog.csdn.net/qq_27217709/article/details/89483025

展开全文
• 1. 分位数计算案例与Python代码案例1Ex1： Given a data = [6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36]，求Q1, Q2, Q3, IQRSolving：步骤：1. 排序，从小到大排列data，data = [6, 7, 15, 36, 39, 40, 41, 42, 43, ...
• 四分位数有三个，第一个四分位数称为下四分位数，第二个四分位数就是中位数，第三个四分位数称为上四分位数，分别用Q1、Q2、Q3表示。 统计学解释 四分位数位置的确定方法有两种。其一是Excel函数QUARTILE.EXC的方法...
• 四分位数和百分位数 四分位数 (Quartiles) To calculate a quartile of a sample is in theory easy, and is much like calculating the median. The difficult part is the implementation; contrary to ...
• 话不多说，如图 上代码 #数组都是按从小到大排过序的 #计算中位数 def count_median(lis): if len(lis) % 2 == 0: mid = float((lis[len(lis) / 2] + lis...#计算上下四分位数 def count_quartiles(lis): ..
• 四分位数的数学计算以及使用pandas计算前言参考举例1（奇数个）第一四分位数（下四分位数）中位数第三四分位数（上四分位数）举例2（偶数个）第一四分位数（下四分位数）中位数第三四分位数（上四分位数） ...
• 在数据导论课上，我们学习了如何求解四分位数的方法，其实操作起来也不难先用 (n+1) / 4 * i 计算四分位数的位置，再求出该位置上的数的值即可。如一组数据 【1，3，6，8，10】 根据公式先求出第一个四分位数的...
• 四分位数与pandas中的quantile函数 ...当p=0.25 0.5 0.75 时，就是在计算四分位数。 第1四分位数 (Q1)，又称“较小四分位数”，等于该样本中所有数值由小到大排列后第25%的数字。 第2四分位数 (Q2)，又称
• 四分位数与pandas中的quantile函数 1.分位数概念 统计学上的有分位数这个概念，一般用p来表示。原则上p是可以取0到1之间的任意值的。...当p=0.25 0.5 0.75 时，就是在计算四分位数。 第1四分位数 (Q1)，又
• 分位数（Quantile），亦称分位点，是指将一个随机变量的概率分布范围分为几个等份的数值点，常用的有中位数（即二分位数）、四分位数、百分位数等。 分位数指的就是连续分布函数中的一个点，这个点对应概率p。若概率...
• 1. 首先介绍Boxplot（箱形图）的定义，这里参考：Understanding Boxplots，非常精彩的一篇介绍boxplot的博文。 该图片显示的即是一个boxplot的... 中值或中位数(median)， 或第二个四分位数 (second quartile,...
• 本博文源于对统计学知识基础的学习，旨在解决如何在分组数据中寻求四分位数
• 均值：即平均数，数列中各数总和除以个数。可用numpy.mean函数计算 ...四分位数：将从小到大排列的数列平均分为4段，最小的四分位数称为下四分位数，最大的成为上四分位数，中间的称为中位数 可以用箱线图展
• 本期给大家介绍的是数据分析基础系列，主要给大家介绍的是四分位数的原理与应用，四分位数计算方式，并基于四分位数，画出箱体图，简要介绍如何通过箱体图来检测数据离群值。结合学习成绩与收入的案例分析，内容...
• 或许当你看到一行代码的...）就像进行数据处理的时候，有时会遇到求极值（最大值、最小值）、平均值、中位数和四分位数（25%、 75%）的情况。 这一篇博客就是你的福音，让你绝对0基础使用python 进行数据分析。 ...
• import numpy as np ages=[3,3,6,7,7,10,10,10,...lower_q=np.quantile(ages,0.25,interpolation='lower')#下四分位数 higher_q=np.quantile(ages,0.75,interpolation='higher')#上四分位数 int_r=higher_q-lower...
• 四分位间距：QU上四分位-QL下四分位 # -*-coding: utf-8 -*- import pandas as pd init_data = './data/init_data_summary.xls' data = pd.read_excel(init_data, index_col=u'序列号') #读数据，以序列号做为...
• 案例1 Ex1： Given a data = [6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36]，求Q1（25分位）, Q2...2. 计算位数的位置 3. 给出分位数位数计算法一 pos = (n+1)*p，n为数据的总个数，p为0-1之间的值 Q1的pos =
• 输入想要计算到小数点后的位数计算圆周率π的值。二、算法：马青公式π/4=4arctan1/5-arctan1/239这个公式由英国天文学教授约翰·马青于1706年发现。他利用这个公式计算到了100位的圆周率。马青公式每计算一项可以...
• python
• python常用计算函数总结# pip 安装的时候，如果有些包已经存在，则用ignore忽略即可# pip install moviepy --ignore-installedimport pandas as pdimport numpy as npimport randomfrom scipy import statsimport ...
• 开发准备下载和安装 python sdk 。 首次使用批量计算，参考 开始前的准备。 了解更多计算环境配置参数，参考 创建计算环境 api 文档。 快速入门#! usrbinpython# -*- coding:utf-8 -*- # 引入云api入口模块from ...
• 作者：长行 时间：2019.03.10 四分位距：四分位距（interquartile range），是一种衡量一组数据离散程度的统计量，用IQR表示。其值为第一四分位数和第三四分位数的差距。 四分位距的计算公式如下...#四分位数计算方法.
• 第一步：计算四分位数，中位数，下四分位数计算公式略）。 第二步：计算四分位数和下四分位数之间的差值，四分位数差。 第三步：绘制箱线图的上下范围，上限为上四分位数，下限为下四分位数。在箱子内部中位数...

...

python 订阅