V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
thinkingmind
V2EX  ›  推广

米筐社区数据面面观

  •  
  •   thinkingmind · 2017-09-06 15:15:31 +08:00 · 1623 次点击
    这是一个创建于 2665 天前的主题,其中的信息可能已经有所发展或是发生改变。

    title: 米筐社区数据面面观 date: 2017-08-29 15:20:28 tags: [Ricequant, 数据分析, Python]

    最近看完了《利用 Python 进行数据分析》,苦于屠龙大技无处施展,于是瞄上了米筐社区:开放的社区数据,都好好地摆在那,于是。。。从数据的爬取储存、清洗整理,到分析汇总、可视化,最终写成本文,整整搭上了三天时间(别问我为啥效率这么低,后面会讲道)。

    爬取储存

    作为一个爬虫弱渣,还好米筐社区没有反爬机制(但容我吐槽一句,社区网页源码可真不是那么容易能理得清的),靠着 requests 和 bs4 的文档,跌跌撞撞地爬取了所有数据,包括所有主题帖的标题、地址、发帖时间、再次编辑时间、跟帖量、浏览量、点赞量、是否带有回测分享、是否带有研究分享,以及分享的克隆次数。代码和原始数据就不放出来了,先说一说思路。首先进入社区主页,一共 170+ 页的所有信息都在网页源码里。用 requests 请求后再用 bs4 解析(必要的时候可以暴力一点,自己目测解析),基本就能拿到大部分数据了。而发帖时间和再次编辑时间,需要进入每一个主题帖,再在其中找到所需要的数据。

    关于数据储存,我是直接用 scv 格式了(3389 rows × 10 columns),至于数据库,等我学习一波 MongoDB 之后再来重新搞一搞。

    清洗整理

    对爬下来的数据进行清洗和整理是另一个吃力不讨好的活,无用数据的删除,数据格式的整理,以及对数据进行二次加工,都是费脑子的事情。不过整理好的数据,每看一眼就很有成就感啊。

    分析汇总

    除了 DataFrame 的合并( merge ),还涉及到重采样( resample )、分组聚合( groupby ),以及时间轴本身的处理,都是一些常规的东西(然而我还是要时不时翻翻书才会做,嚯嚯嚯)。

    可视化

    概览

    平均数和中位数

    一共爬取 3389 个主题帖,其中 19% 带有策略分享,10% 带有研究分享。每个主题帖平均被浏览了 1777 次(中位数 633 次),得到 5.5 个跟帖。在那些带有策略分享或研究分享的策略中,平均每个分享被克隆 73.3 次(注意下图中的克隆次数是除了所有的主题帖个数)。

    describe

    极值

    社区共有两篇帖子浏览量超过十万,分别是《小伙伴们,你最希望 Ricequant 加入什么样的功能呢?》《 [高收益低回撤] [止损] [夏普率 4.0 ] 改进版小盘股策略》,top50 均超过 1.5 万次浏览:

    view - top50

    跟帖量 top50 如下:

    comment - top50

    至于克隆次数,不得不说社区大神很多,动不动就几百上千次克隆了。其中 top3 分别是《 [期货] 商品期货跨品种套利研究——稳住!》《 [高收益低回撤] [止损] [夏普率 4.0 ] 改进版小盘股策略》,以及《 Graham number 格雷厄姆数字价值投资法》。top50 如下:

    clone time - top50

    词云

    词云用了 wordcloud 和 jieba,然而水平太差,做不出好看的图来,将就下:

    ciyun1

    另辟捷径,用 Mathematica 做的词云:

    ciyun2

    详情

    来看看社区的发帖量,按周合计,comment 指跟帖量,discussion 指主题帖量:

    comment VS discussion - weekly

    折线图看不出啥,换个按月合计的柱状图:

    comment VS discussion - monthly

    再看看回测分享( share1 )和研究分享( share2 ):

    share1 VS share2 - monthly

    彩蛋

    拿着发帖时间,于是统计了一下社区发帖的时间分布:

    time1

    饼状图还没什么直观的概念,看看这个:

    time2

    结语

    三天的成果大概三分钟就能浏览完了,想想代价还是挺高的。从爬取、存储、清洗、整理、分析,一直到可视化,一条龙全是 Python 搞定的,所以说 Python 确实是个好东西。这也算是最近的一个总结,毕竟学了这么些杂七杂八的东西。

    点击链接查看源码

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3190 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:36 · PVG 20:36 · LAX 04:36 · JFK 07:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.