使用Python Pandas搜索最大值和最大值百分比时的优化

哈德发(Medhat Khalifa)

我有以下df

在此处输入图片说明

目标输出

在此处输入图片说明

我尝试了以下代码,但它将获得一列的输出,因此我不得不添加for循环以获取整个结果

那有什么大数据可以解决吗

data = {'item':["y1","y2","y3","y4","y5","y6","y7","y8","y9","y10"],
        'X1':  [1,1,1,1,1,7,7,7,5,4],
        'X2':  [8,9,10,10,10,8,8,10,8,9],
        'X3':  [11,12,13,11,11,11,11,11,1,2],
        }
df = pd.DataFrame(data, columns = ['item', 'X1','X2','X3'])
# get count of unique values 
df['X1'].nunique()
# get max Value
df['X1'].value_counts().idxmax()
# get percentage of max value 
df['X1'].value_counts().max()/df['X1'].size
# get Second value of Max Value
(df.nlargest(2, ['X1'])['X1']).value_counts().idxmax()
# Get Second Value of % 
df['X1'][df['X1']==(df.nlargest(2, ['X1'])['X1']).value_counts().idxmax()].size/df['X1'].size
耶斯列尔

您可以为每个测试的列以及最大和第二最大使用索引创建字典,因为Series.value_counts默认情况下排序:

L = []
cols = ['X1','X2','X3'] 

for c in cols:
    u = df[c].nunique()
    a = df[c].value_counts()
    d = {'No of unique': u, 
         'Highest rep': a.index[0],
         '% of Highest rep': a.iat[0] / len(df),
         'Second Highest rep': a.index[1],
         'Second % of Highest rep': a.iat[1] / len(df)}
    L.append(d)


df = pd.DataFrame(L, index=cols)    
print (df)
    No of unique  Highest rep  % of Highest rep  Second Highest rep  \
X1             4            1               0.5                   7   
X2             3           10               0.4                   8   
X3             5           11               0.6                  13   

    Second % of Highest rep  
X1                      0.3  
X2                      0.4  
X3                      0.1 

更普遍的解决方案测试是否存在六最大值:

L = []
cols = ['X1','X2','X3'] 

for c in cols:
    u = df[c].nunique()
    a = df[c].value_counts()
    
    if len(a) > 1:
        secondmax = a.index[1]
        secondperc = a.iat[1] / len(df)
    else:
        secondmax = np.nan
        secondsecondperc = np.nan
        
    d = {'No of unique': u, 
         'Highest rep': a.index[0],
         '% of Highest rep': a.iat[0] / len(df),
         'Second Highest rep': secondmax,
         'Second % of Highest rep': secondperc}

         
    L.append(d)

df = pd.DataFrame(L, index=cols) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用SIMD优化列式最大值

来自分类Dev

使用Python的字典的最大值和最小值

来自分类Dev

如何使用 python pandas 找到 ID 1 和 5 的最小值和最大值?

来自分类Dev

使用迭代查找最大值和最小值时的Python TypeError

来自分类Dev

使用Parallel.For搜索最小值/最大值

来自分类Dev

在python中使用key和lambda找到最大值

来自分类Dev

最大值的 Python 参数

来自分类Dev

选择最大值而不使用最大值?

来自分类Dev

Azure百分比cpu平均和最大值差异太大

来自分类Dev

使用最小值和最大值的置信带

来自分类Dev

使用awk的最大值和最小值

来自分类Dev

使用awk提取最大值和最小值

来自分类Dev

使用awk查找最小值和最大值?

来自分类Dev

python在分组数据框时跨多个列获取最大值和最小值

来自分类Dev

检查列值是否大于pandas列和python变量之间的最大值

来自分类Dev

使用dplyr分组时如何计算均值,最小值和最大值?

来自分类Dev

使用分叉和管道在数组中搜索最大值

来自分类Dev

达到最大值后重置Python Pandas cumsum()

来自分类Dev

Python Pandas根据列的最大值删除列

来自分类Dev

Python Pandas:在单元格中查找最大值

来自分类Dev

使用反向模式时,ValueAnimator不会达到最大值

来自分类Dev

使用下标时最大值返回错误结果

来自分类Dev

python稀疏矩阵获取最大值和索引

来自分类Dev

使用DENSE_RANK的顺序数和最大值

来自分类Dev

使用指针在结构中打印最小和最大值

来自分类Dev

使用JavaScript查找数组中的最小和最大值

来自分类Dev

使用存储过程和联接查询获取最大值

来自分类Dev

数学-将百分比添加到值上,但限制为最大值?

来自分类Dev

显示不同的值并在Python / Pandas中使用最大值

Related 相关文章

热门标签

归档