数据2022的光明节 - 难题8和总结
#python #pandas #hanukkahofdata #datasette

Hanukkah of Data是一系列以数据为主题的难题,您可以在其中解决难题,以使用虚构的数据集在以假期为主题的故事中移动。有关更多细节,请参见introductory post,但我脑海中的音调是“ Advent of Code遇见SQL Murder Mystery”。这篇文章介绍了我进入第八个难题的方法。

警告:这篇文章不可避免地包含破坏者。如果您想先自行执行难题,请关闭此浏览器选项卡并逃跑:)。

思维

对于最后一个难题,我们正在寻找可能仍然有地毯的人!事实证明他有点像一只小鼠:

她得到了一个更新,更昂贵的地毯,因此她给了她的一个熟人,他们收集了各种垃圾。显然,他拥有一套诺亚的收藏品!他可能仍然有地毯。

这里的计划将找到算是诺亚的收藏品,看看谁拥有最多。

做(数据集)

基于窥视产品表,看起来收藏品都具有“ col” Sku前缀。因此,我们应该能够找到已在该前缀下订购最不同项目的客户:

select
  name,
  phone,
  count(distinct sku) as colcount
from
  noahs_order_detail
where
  sku like 'COL%'
group by
  name,
  phone
order by
  colcount desc

是的,特拉维斯的收藏数量超过2倍!

做(熊猫)

一个非常直的SQL-> Pandas翻译似乎在这里工作正常:

df[
  df.sku.str.contains('^COL')
].groupby(
  ['name','phone']
).agg(
  {'sku':'nunique'}
).sort_values(by='sku').tail()

包起来

这很有趣!一些特定的要点:

  • 非常感谢The Devottys将这一挑战放在一起
    • Saul&Anja将很多心脏和智慧倒入Visidata和数据/终端的社区
    • 我一直对Dwimmer的艺术品印象深刻,他在码头上的魔力
  • 使用groupby()在Pandas中使用category dtypes有一些危险或时髦
  • 解决多种工具的问题有时可以帮助您重新考虑所有方法
  • 您不必be Simon Willison才能从sqlite中获得很多东西

我还应该指出官方总结邮政here,该邮政链接到其他社区帖子。