在对 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)
所以我正在处理文本文件中的餐厅收据数据,并且我已经计算出每件商品的订购数量。但是,我现在想按降序排列,它不让我这样做。它按字母顺序排列。将数据集上传到 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)