python - kaggle数据交易分析
问题描述
kaggle数据交易分析
解决方案
部分回答
据我所知,您已经有一个 columnTime_Of_Day
和一个 column item
。
因此,假设一个具有相同列的虚拟数据框:
In[]: df = pd.DataFrame({'Time_Of_Day': ['breakfast', 'breakfast', 'breakfast', 'lunch', 'lunch', 'lunch'], 'item': ['coffee', 'coffee', 'bread', 'pastry', 'pastry', 'coffee']})
In[]: df
Out[]:
Time_Of_Day item
0 breakfast coffee
1 breakfast coffee
2 breakfast bread
3 lunch pastry
4 lunch pastry
5 lunch coffee
在这种情况下, groupby 会让你非常接近:
In[]: counts = df.groupby(['Time_Of_Day', 'item']).size()
In[]: counts
Out[]:
Time_Of_Day item
breakfast bread 1
coffee 2
lunch coffee 1
pastry 2
dtype: int64
您现在有一个分层索引。您可以像这样获得早餐时出售的面包数量:
In[]: counts['breakfast']['bread']
Out[]: 1
您现在可以找到早餐期间售出的前 10 种商品,例如:
In[]: counts['breakfast'].sort_values(ascending=False)
Out[]:
item
coffee 2
bread 1
Name: count, dtype: int64
但更有趣的是,您可以使用 pandas函数来计算一天中每个计数的rank
排名:
In[]: output = pd.DataFrame({'counts': counts})
In[]: output.reset_index(inplace=True)
In[]: output['rank'] = output.groupby('Time_Of_Day')['counts'].rank(method='first')
In[]: output
Out[]:
Time_Of_Day item counts rank
0 breakfast bread 1 1.0
1 breakfast coffee 2 2.0
2 lunch coffee 1 1.0
3 lunch pastry 2 2.0
该rank
列现在为您提供该项目在一天中的同一时间的位置。所以在这里,bread
在 期间卖得最多breakfast
(它有排名 1)并且coffee
在 期间卖得最多lunch
。
您可以按排名排序以获得销量最高的商品:
In[]: output.sort_values(by='rank')
Out[]:
Time_Of_Day item counts rank
0 breakfast bread 1 1.0
2 lunch coffee 1 1.0
1 breakfast coffee 2 2.0
3 lunch pastry 2 2.0
如前所述,这是部分答案。我无法将其完全转换为您要求的格式。它需要使用 pandas 数据帧索引的一些技巧。但我希望这已经有所帮助。
推荐阅读
- functional-programming - 如何在 OCaml 中创建一个函数,该函数接受一个列表和一个谓词,然后返回不满足谓词的元素?
- javascript - RXJS:扫描算子发出单个项目
- r - 如果时间数据为字符形式 (R),如何在 x 轴上缩放时间
- c++ - Segmentation fault: 11 of Maze problem in c++
- android - 如何使用 ViewPager2 直接转到特定片段
- salesforce - 如何使用 Mulesoft Salesforce 连接器 (Mule 4) 收集完整的对象架构
- javascript - three.js /anime.js / gltfloader - 我无法定位导入的对象 - 小提琴
- php - Laravel - 创建虚拟主机,但是网站不会连接到本地主机
- google-sheets - 将重复 ID 中的数据连接到 Google 表格中的一行
- python - 在 Python 中使用前瞻 RegEx 进行密码检测