寻找熊猫数据框列的分位数和十分位数
原文:https://www.geesforgeks.org/find-熊猫的分位数和十分位数-dataframe-column/
分位数是指样本被分成大小相等的相邻子组。
中位数是分位数;中值被置于概率分布中,这样正好一半的数据低于中值,一半的数据高于中值。中位数把一个分布分成两个相等的区域,所以它有时被称为 2 分位数。
四分位数也是分位数;他们把分配分成四等份。
百分位数是将分布分成 100 等份的分位数,十分位数是将分布分成 10 等份的分位数。
我们可以用下面的公式来估算第 i 次观测值:
ith observation = q (n + 1)
其中 q 是分位数,低于你要找的IthT5】值的比例
n 是数据集中的项目数。
因此,为了找到分位数排名,q 应该是 0.25,因为我们希望将数据集分成 4 个相等的部分,并根据它们落在哪个四分位数对 0-3 的值进行排名。
同样,对于十分位数,q 应该是 0.1,因为我们希望我们的数据集被分成 10 个相等的部分。
在转向熊猫之前,让我们通过一个例子来尝试上面的概念,以了解我们的分位数和十分位数是如何计算的。
样题:在下面的一组数据中找到这个数字,其中 25%的数值低于它,75%的数值高于它。
数据: 32、47、55、62、74、77、86
第一步:将数据从最小到最大排序。问题中的数据已经按升序排列。
第二步:计算你的数据集中有多少个观察值。这个特殊的数据集有 7 个项目。
第三步:将任何百分比转换为“q”的小数。我们正在寻找一个数值,其中 25%的数值低于它,所以把它转换成. 25。
第 4 步:将您的值插入公式:
回答:
i 第次观测= q (n + 1)
i th 观测值= .25(7 + 1) = 2
第一次观察是在 2 点。第二个和第三个数字是 47,这个数字有 25%的数值低于它。然后我们可以从 0-3 开始对我们的数字进行排名,因为我们找到了分位数排名。寻找十分位数等级的类似方法,在这种情况下,q 的值是 0.1。
现在让我们看看熊猫,我们如何快速实现同样的目标。
创建数据帧的代码:
蟒蛇 3
# Import pandas
import pandas as pd
# Create a DataFrame
df1 = {'Name':['George', 'Andrea', 'John', 'Helen',
'Ravi', 'Julia', 'Justin'],
'EnglishScore':[62, 47, 55, 74, 32, 77, 86]}
df1 = pd.DataFrame(df1, columns = ['Name', ''])
# Sorting the DataFrame in Ascending Order of English Score
df1.sort_values(by =['EnglishScore'], inplace = True)
如果我们打印上述数据帧,我们会得到以下结果:
数据帧
现在,我们可以使用 pandas 函数 qcut() 找到分位数等级,方法是传递等级要考虑的列名,即表示分位数的参数 q 的值。十分位数为 10,四分位数为 4,等等。并且标签=假以整数形式返回容器。
以下是分位数排名的代码
蟒蛇 3
# code
df1['QuantileRank']= pd.qcut(df1['EnglishScore'],
q = 4, labels = False)
现在,如果我们打印数据框架,我们可以看到新的列 QauntileRank 根据英语分数列对我们的数据进行排名。
分位数等级
类似地,为了计算十分位数,我们设置 q = 10
蟒蛇 3
# code
df1['DecileRank']= pd.qcut(df1['EnglishScore'],
q = 10, labels = False)
现在,如果我们打印我们的数据帧,我们会得到以下输出。
决策银行
这就是我们如何使用 Pandas qcut() 方法来计算一列上的各个分位数。
下面给出了上述示例的全部代码。
蟒蛇 3
# code
import pandas as pd
# Create a DataFrame
df1 = {'Name':['George', 'Andrea', 'John', 'Helen',
'Ravi', 'Julia', 'Justin'],
'EnglishScore':[62, 47, 55, 74, 32, 77, 86]}
df1 = pd.DataFrame(df1, columns =['Name', 'EnglishScore'])
# Sorting the DataFrame in Ascending Order of English Score
# Sorting just for the purpose of better data readability.
df1.sort_values(by =['EnglishScore'], inplace = True)
# Calculating Quantile Rank
df1['QuantileRank']= pd.qcut(df1['EnglishScore'], q = 4, labels = False)
# Calculating Decile Rank
df1['DecileRank'] = pd.qcut(df1['EnglishScore'], q = 10, labels = False)
# printing the datafarame
print(df1)