Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何确定数据帧中哪一行具有最均匀和最高的分布_Python_Pandas_Dataframe_Distribution - Fatal编程技术网

Python 如何确定数据帧中哪一行具有最均匀和最高的分布

Python 如何确定数据帧中哪一行具有最均匀和最高的分布,python,pandas,dataframe,distribution,Python,Pandas,Dataframe,Distribution,我想按分布最均匀但值也较高的行对熊猫数据帧进行排序。例如: Row Attribute1 Attribute2 Attribute3 a 1 1 108 b 10 2 145 c 50 60 55 d 100 90 120 e 20 25 23 f

我想按分布最均匀但值也较高的行对熊猫数据帧进行排序。例如:

Row Attribute1 Attribute2 Attribute3 a 1 1 108 b 10 2 145 c 50 60 55 d 100 90 120 e 20 25 23 f 1000 30 0 行属性1属性2属性3 a 11108 b 102 145 c 50 60 55 d 100 90 120 e 20 25 23 f 1000 300 第d行和第c行的排名应该最高,最好是第d行,然后是第c行

我考虑过使用标准差来确定最均匀的分布,然后平均得到最高的平均值,但我不确定如何将它们结合在一起。

因为你提到的“均匀分布”的概念似乎很主观,这里有一个指令来实现@ALollz提到的变异系数

df.std(轴=1)/df.mean(轴=1)
第0行
a 1.6848130582715446
b 1.535375387727906
c 0.091
d 0.14782502241793033
e 0.11102697698927574
f 1.6569547684031352
该指标是由标准偏差表示的平均值的百分比。如果行平均值为10,标准偏差为1,则比率为10%或0.1

在本例中,可以认为最“均匀分布”的行是行c:其平均值为55,标准偏差为5。因此,该比率约为9%

这样,您就可以对分布的同质性有一个很好的概述

如果您想要排名,可以应用
。排序\u值

(df.std(轴=1)/df.mean(轴=1)).sort_值()
第0行
c 0.091
e 0.11102697698927574
d 0.14782502241793033
b 1.535375387727906
f 1.6569547684031352
a 1.6848130582715446
我最后要说的是不要被我们大脑的感知所愚弄:它很容易被统计数字所欺骗

现在,如果您想改进更高值的结果,可以将该系数除以平均值:平均值越高,系数越低

(测向标准(轴=1)/测向平均值(轴=1)**2).排序值()
第0行
d 0.0014305647330767452
c 0.001652892561983471
f 0.004826081849717869
e 0.004898248984820989
b 0.0293383204991835
a 0.045949447043769395

现在我们得到了期望的排名:首先是d,然后是c、f、e、b和a

最高分布
-您使用的是最高平均值?最终你可能不得不决定哪个更重要。具有最高值的序列不一定是具有最均匀分布的序列。您需要定义一些函数,允许您加权相对于平均值的标准偏差,这样您就可以用一个数字来描述每一行。但这是一个完全任意的函数,所以我不知道这里的任何人能给你一个真正的答案。。。作为一个实际的统计属性,可以告诉您行相对于平均值的分散程度,但它不能提供您想要的准确排序。
我不确定如何将它们组合在一起
-您不确定排序是如何工作的吗?您是否不确定如何获得平均值或标准偏差?你不确定哪个统计数据对排序更重要吗?@ALollz变异系数给了我一些东西来处理,但并没有完全捕捉到一个案例,比如属性1/2/3分别为1、1和1.01。在这种情况下,它将生成最高的系数,但平均值非常低。我想这就是你最后一句话的意思。我将尝试分配权重。二战,对不起,我应该说得更清楚。我不确定如何使用均值或标准差,或者在哪里强调,以获得我想要的结果。谢谢。正如我在上面的评论中提到的,变异系数没有考虑平均值的大小。在这种情况下,你可以通过将结果除以平均值来加权。这将是标准/平均值**2。我将编辑我的答案,因为结果很有趣。显然,你可以调整这个调整,以满足你的需要。例如,你认为
f
e
应该有相似的分数吗?第一个平均值很高,后一个平均值很低。平方平均值得到了我所需要的!