社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

以python大小和计数计算频率

user18309957 • 3 年前 • 1212 次点击  

我有一个数据框,看起来像这样:

Item       Year     
I1         2015
I2         2016
I1         2017
I2         2014

项目 I2 例如,在2016年和2014年售出

我想分组 Item Year 然后做什么 R 代码:

top_items <- data %>% select(Item, Year) %>%
  group_by(Year, Item) %>%
  summarize(sales_trend = n()) %>%
  arrange(desc(sales_trend))

也就是说,我必须对最畅销的商品进行分类。

我正在尝试以下Python代码:

b_data = pd.DataFrame(data[["Item", "Year"]].groupby(["Item", "Year"]).size()).sort_values(by=[0], ascending=False)

但我还有一个专栏 0 ,我想按它排序,但我不想调用该列 0 ,怎么叫 sales_trend 就像我的 R .

而且如果我想得到这个 Python 以下内容的等价性 R 这就完成了前面的工作,怎么做?

...
  arrange(desc(sales_trend))
  slice_head(n = 5) %>%
  mutate(Year = as.integer(Year), rank = 1:5) %>%
  select(-sales_trend)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133006
 
1212 次点击  
文章 [ 2 ]  |  最新文章 3 年前
Panwen Wang
Reply   •   1 楼
Panwen Wang    3 年前

具有 datar ,一个重新设计熊猫API的熊猫包装器,我们可以用python翻译您的R代码:

>>> from datar.all import c, f, tibble, select, group_by, summarize, arrange, desc, n
>>>
>>> data = tibble(Item=c("I1", "I2", "I1", "I2", "I2"), Year=c(2015, 2016, 2017, 2014, 2014))
>>> data
      Item    Year
  <object> <int64>
0       I1    2015
1       I2    2016
2       I1    2017
3       I2    2014
4       I2    2014  # add one more item to see if it pops up at the top
>>> top_items = (
...     data
...     >> select(f.Item, f.Year)
...     >> group_by(f.Year, f.Item)
...     >> summarize(sales_trend=n())
...     >> arrange(desc(f.sales_trend))
... )
[2022-03-17 10:15:54][datar][   INFO] `summarise()` has grouped output by ['Year'] (override with `_groups` argu
ment)
>>> top_items
     Year     Item  sales_trend
  <int64> <object>      <int64>
0    2014       I2            2
1    2015       I1            1
2    2016       I2            1
3    2017       I1            1
[TibbleGrouped: Year (n=4)]
geen21
Reply   •   2 楼
geen21    3 年前
df.groupby("Year")["Item"].value_counts().sort_values(ascending=True)