一些常用的基础级的数据分析,比如 [连续 3 天有增长的排行榜单] 之类的算法用什么样的解决方案比较合适?

2016-09-18 02:54:15 +08:00
 codenamea
数据表结构大概是这样:
日期 | ID | 销量 | 退货
2016-9-14 | 10001 | 100 | 15
2016-9-14 | 10002 | 71 | 4
2016-9-14 | 10003 | 10 | 4
2016-9-13 | 10001 | 50 | 18
2016-9-13 | 10002 | 31 | 28
2016-9-13 | 10003 | 40 | 23

需要做一些简单的数据统计,比如

1. 找出连续 n 天 sell_count 都在增长的商品,并且按照增长幅度排名的 top10 ?
2. 按照销量分级比如 [最近 3 天平均销量 0-50 件、 50-100 件、 100-200 件区间的商品,按照区间找出退货最高的 TOP10 ]

这种类型的统计,用什么样的解决方案比较合适?
把结果从 MYSQL 里面取出来,用 python 去处理好,还是直接在 MYSQL 里做完以后 python 只做呈现?

需求 1 : [找出连续 n 天 sell_count 都在增长的商品,并且按照增长幅度排名的 top10 ]
有没有比较好的实现思路或者代码参考? 有没有相关这类数据分析的资料推荐?
3332 次点击
所在节点    Python
12 条回复
qfdk
2016-09-18 03:39:51 +08:00
很简单啊- -,有个东西叫做 Apache zeppelin , 你把 mysql 的导出成 csv ,然后读进去,就可以 SQL 进行查询,最后还是图表形式展现给你。一个 group by 就好了。
Scala 进行处理
codenamea
2016-09-18 04:53:57 +08:00
@qfdk 我想要的是 mysql+python 的方案。
而且我需要的是解决 [连续 n 天 sell_count 都在增长的商品,并且按照增长幅度排名的 top10] 。
不是单纯的 order by.
是要 n 天内连续增长。不是 n 天总增长 top
vietor
2016-09-18 06:33:16 +08:00
spark 写个 Python 脚本
ruoyu0088
2016-09-18 06:38:07 +08:00
用 pandas: 先计算 diff() > 0 ,得到前后两天的差为正的布尔序列。然后使用 rolling sum 计算移动和,如果移动和等于窗口大小 N 就是连续增长 N 天。
CrowQu
2016-09-18 10:38:49 +08:00
看数据量,你要日流水过百万用 mysql + python 就算了吧
codenamea
2016-09-18 11:43:28 +08:00
@CrowQu 还好。每天产生的记录大概是 10K 级的。
codenamea
2016-09-18 11:45:29 +08:00
@ruoyu0088 感谢。我想这就是我要的方案了。
这种很日常的数据筛选常用算法方面,有没有什么资料可以推荐?
qfdk
2016-09-18 14:28:03 +08:00
@codenamea 显然是可以 py 的 手动斜眼
imn1
2016-09-18 15:41:17 +08:00
python with pandas 的移动统计做这个很方便,参看 pandas 手册 computational tools 一章
CrowQu
2016-09-18 16:29:57 +08:00
@codenamea 那写 SQL 不就行么,要觉得慢还可以按天增量计算,免得数据还要 DB ->Python 做一次 IO
loryyang
2016-09-18 21:20:14 +08:00
pandas, numpy
winglight2016
2016-09-19 13:53:23 +08:00
要想通用一些,找些开源的数据仓库软件就可以基于任意维度作分析报表了,自己写代码和 sql 多麻烦

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/306858

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX