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有一些危险或时髦- 我有各种错误或看到操作需要40倍,尽管这至少部分是我的经验不足 /无知< / li>
- 像https://github.com/pandas-dev/pandas/issues/36698这样的问题建议我并不孤单!
- 解决多种工具的问题有时可以帮助您重新考虑所有方法
- 您不必be Simon Willison才能从sqlite中获得很多东西
我还应该指出官方总结邮政here,该邮政链接到其他社区帖子。