AskPython 中已经有一篇文章涵盖了pandas cut()函数的各个方面。如果您还没有读过,请尝试一下。相信我,这将是一本值得一读的书。
那么,当pandas库已经有一个剪切函数时,为什么还要费心另一个名为pandas qcut( )的函数呢?
这正是本文要探讨的内容。此外,它详细介绍了pandas库中两个 cut 函数之间的差异,并通过一些示例演示了qcut( )函数的功能。
因此,让我们开始使用以下代码导入pandas库。
import pandas as pd |
此后,将通过以下各节探讨pandas qcut( )函数的细微差别。
- Pandas qcut( )与Pandas cut( )
- qcut( )函数的语法
- qcut( ) 函数的用例
Pandas qcut( ) 与 Pandas cut( )
虽然这两个函数都有助于分割给定的数据集并将它们分类到不同的容器中,但有一个细微的区别将它们分开。当数据集通过qcut( )函数时,每个箱中的实体总数或多或少是相同的。这导致数据分段的间隔大小存在差异。
另一方面,当pandas cut( )用于获取等间隔的 bin 大小但每个 bin 中的实体数量不同时。那么,就这样吧!pandas库中不同剪切函数之间的差异仅供您参考。
现在您知道了,让我们继续深入了解qcut( )函数。
qcut( ) 函数的语法
qcut ( )是基于分位数的离散化函数,它根据等级或样本分位数将给定数据集离散化为相同大小的箱。以下是其语法,详细说明了其功能所需的强制和可选成分。
pandas.qcut( x, q, Labels = None , retbins = False , precision = 3 , duplicates = ’ raise ’) |
在哪里,
- x –要切割的一维数组或序列。
- q –输入数据集要分割成的分位数。
- 标签 – 默认设置为“无”,用于指定结果箱的名称。
- retbins –默认设置为“False”,用于指定是否返回 bin。
- precision –默认设置为“3”,用于指定要返回的小数位数。
- 重复项 –默认设置为“raise”,用于指定如何处理 bin 边缘的重复性。当设置为“raise”时,它会引发错误;当设置为“drop”时,它会删除重复的 bin 边缘。
qcut( ) 函数的用例
以下数据帧将用于演示 qcut( ) 的功能。
df = pd.DataFrame({ 'score' :[ 60 , 87 , 49 , 51 , 69 , 74 , 92 , 55 , 63 , 78 , 47 , 86 ]}) |
现在让我们尝试跨四分位数切割数据。
Catg = pd.qcut(df[ 'score' ], 4 ) Print (Catg) |
Output: 0 ( 54.0 , 66.0 ] 1 ( 80.0 , 92.0 ] 2 ( 46.999 , 54.0 ] 3 ( 46.999 , 54.0 ] 4 ( 66.0 , 80.0 ] 5 ( 66.0 , 80.0 ] 6 ( 80.0 , 92.0 ] 7 ( 54.0 , 66.0 ] 8 ( 54.0 , 66.0 ] 9 ( 66.0 , 80.0 ] 10 ( 46.999 , 54.0 ] 11 ( 80.0 , 92.0 ] Name: score, dtype: category Categories ( 4 , interval[float64, right]): [( 46.999 , 54.0 ] < ( 54.0 , 66.0 ] < ( 66.0 , 80.0 ] < ( 80.0 , 92.0 ]] |
从上面的结果可以明显看出,每个 bin 内的实体数量是相同的。现在让我们使用相同的数据集并尝试指定分位数并限制小数位数。
Catg = pd.qcut(df[ 'score' ], q = [ 0 , 0.4 , 0.8 , 1 ], precision = 0 ) print (Catg) |
如果需要的话,还可以为上述结果添加标签。
Catg = pd.qcut(df[ 'score' ], q = [ 0 , 0.4 , 0.8 , 1 ], labels = [ "Poor" , "Average" , "Excellent" ]) print (Catg) |
结论
现在我们已经到了本文的结尾,希望它已经详细说明了如何使用 pandas库中的qcut( )函数。这是另一篇文章,详细介绍了Python 中pandas库中的Factorize()函数。AskPython中还有许多其他有趣且内容丰富的文章,可能对那些希望提高 Python 水平的人有很大帮助。Audere est Facere!