V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
codenamea
V2EX  ›  Python

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

  •  
  •   codenamea · 2016-09-18 02:54:15 +08:00 · 3520 次点击
    这是一个创建于 2992 天前的主题,其中的信息可能已经有所发展或是发生改变。
    数据表结构大概是这样:
    日期 | 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 ]
    有没有比较好的实现思路或者代码参考? 有没有相关这类数据分析的资料推荐?
    12 条回复    2016-09-19 13:53:23 +08:00
    qfdk
        1
    qfdk  
       2016-09-18 03:39:51 +08:00   ❤️ 1
    很简单啊- -,有个东西叫做 Apache zeppelin , 你把 mysql 的导出成 csv ,然后读进去,就可以 SQL 进行查询,最后还是图表形式展现给你。一个 group by 就好了。
    Scala 进行处理
    codenamea
        2
    codenamea  
    OP
       2016-09-18 04:53:57 +08:00
    @qfdk 我想要的是 mysql+python 的方案。
    而且我需要的是解决 [连续 n 天 sell_count 都在增长的商品,并且按照增长幅度排名的 top10] 。
    不是单纯的 order by.
    是要 n 天内连续增长。不是 n 天总增长 top
    vietor
        3
    vietor  
       2016-09-18 06:33:16 +08:00 via Android
    spark 写个 Python 脚本
    ruoyu0088
        4
    ruoyu0088  
       2016-09-18 06:38:07 +08:00   ❤️ 1
    用 pandas: 先计算 diff() > 0 ,得到前后两天的差为正的布尔序列。然后使用 rolling sum 计算移动和,如果移动和等于窗口大小 N 就是连续增长 N 天。
    CrowQu
        5
    CrowQu  
       2016-09-18 10:38:49 +08:00
    看数据量,你要日流水过百万用 mysql + python 就算了吧
    codenamea
        6
    codenamea  
    OP
       2016-09-18 11:43:28 +08:00
    @CrowQu 还好。每天产生的记录大概是 10K 级的。
    codenamea
        7
    codenamea  
    OP
       2016-09-18 11:45:29 +08:00
    @ruoyu0088 感谢。我想这就是我要的方案了。
    这种很日常的数据筛选常用算法方面,有没有什么资料可以推荐?
    qfdk
        8
    qfdk  
       2016-09-18 14:28:03 +08:00 via iPhone
    @codenamea 显然是可以 py 的 手动斜眼
    imn1
        9
    imn1  
       2016-09-18 15:41:17 +08:00
    python with pandas 的移动统计做这个很方便,参看 pandas 手册 computational tools 一章
    CrowQu
        10
    CrowQu  
       2016-09-18 16:29:57 +08:00
    @codenamea 那写 SQL 不就行么,要觉得慢还可以按天增量计算,免得数据还要 DB ->Python 做一次 IO
    loryyang
        11
    loryyang  
       2016-09-18 21:20:14 +08:00
    pandas, numpy
    winglight2016
        12
    winglight2016  
       2016-09-19 13:53:23 +08:00
    要想通用一些,找些开源的数据仓库软件就可以基于任意维度作分析报表了,自己写代码和 sql 多麻烦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1085 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:57 · PVG 03:57 · LAX 11:57 · JFK 14:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.