Python 获取前25%的数据
我有一个数据帧:Python 获取前25%的数据,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧: Column1 Column2 a 0.34 b 0.25 c 0.75 d 1.5 e 0.31 f 2.45 g 7.89 如何计算列2中最高值的前25%数据。 例如,对于7行,前25%为1.75~2 输出: Column1 Column2 g 7.8
Column1 Column2
a 0.34
b 0.25
c 0.75
d 1.5
e 0.31
f 2.45
g 7.89
如何计算列2中最高值的前25%数据。例如,对于7行,前25%为1.75~2 输出:
Column1 Column2
g 7.89
f 2.45
正如您在评论中所阐明的(“25%的最高值”),这基本上是高于
75分位数的值。因此,我们可以使用:
或更短的数据帧。查询
:
df.query('Column2 >= Column2.quantile(q=0.75)')
我们做
qcut
df[pd.qcut(df.Column2,q=4,labels=[1,2,3,4])==4]
Column1 Column2
5 f 2.45
6 g 7.89
pd.qcut(df.Column2,q=4)
0 (0.325, 0.75]
1 (0.249, 0.325]
2 (0.325, 0.75]
3 (0.75, 1.975]
4 (0.249, 0.325]
5 (1.975, 7.89]
6 (1.975, 7.89]
名称:Column2,数据类型:category
类别(4,区间[float64]):[(0.249,0.325]<(0.325,0.75]<(0.75,1.975]<(1.975,7.89]]
Top 25%需要更加清晰。在这种情况下,您是希望按计数还是按值(例如范围)选择25%的最高值你的价值观是什么?最好的澄清方法是添加预期的输出澄清,它是25%的最高值,不算。感谢@ErfanOP的计算并不表明这一点。OP计算25%为7*.25
他只是澄清了这与你说的相反,我明白了。在这种情况下,我将删除我的答案:)
Column1 Column2
5 f 2.45
6 g 7.89
df[pd.qcut(df.Column2,q=4,labels=[1,2,3,4])==4]
Column1 Column2
5 f 2.45
6 g 7.89
pd.qcut(df.Column2,q=4)
0 (0.325, 0.75]
1 (0.249, 0.325]
2 (0.325, 0.75]
3 (0.75, 1.975]
4 (0.249, 0.325]
5 (1.975, 7.89]
6 (1.975, 7.89]
Name: Column2, dtype: category
Categories (4, interval[float64]): [(0.249, 0.325] < (0.325, 0.75] < (0.75, 1.975] < (1.975, 7.89]]