在对 Python 中的值进行分组和聚合后(使用 np.sum),如何对它们进行排序?

How can I sort values in Python after grouping and aggregating them (with np.sum)?

所以我正在处理文本文件中的餐厅收据数据,并且我已经计算出每件商品的订购数量。但是,我现在想按降序排列,它不让我这样做。它按字母顺序排列。将数据集上传到 Python 后,我所做的就是打印它,然后进行分组,将每个菜单项放入其自己的组中。之后,我将其汇总以获得每个菜单项的总数(已订购的总次数)。我所有的代码都在下面。

import pandas as pd

import numpy as np

data = pd.read_csv('the file location', sep='\t')

df = pd.DataFrame(data)

grouped=df.groupby('item_name') #item_name is the variable I am interested in from data set. It is the name of 
                                each menu item from the receipt

print (grouped['item_name'].agg(np.size)) #aggregating the menu items to see how many of each there are

在此之后,我得到了每个菜单项被订购次数的总计数输出,但数字不是降序排列。它们根据项目的名称按字母顺序排列。我希望计数按数字降序排列(最高数字在顶部)请帮忙!

最简单的解决方案是在数据框中再添加一个字段,用 1 值填充它,然后对它们求和:

import pandas as pd


df = pd.read_csv('the file location', sep='\t')

df['items_count'] = 1

grouped = df.groupby(by='item_name').sum()

print(grouped.sort_values(by='items_count', ascending=False))

P.S。还有pd.read_csvreturnsDataFrame,不需要再传给pd.DataFrame

如果我没有正确理解你的问题,你是想计算每件商品的订购数量?

import pandas 

df = pd.read_csv('the file location', sep='\t')

# value_counts already sorts in ascending order
df['item_name'].value_counts()

# other option
df.groupby('item_name').size().sort_values(ascending=False)