美文网首页
米筐社区全方位数据解读

米筐社区全方位数据解读

作者: Ricequant米筐 | 来源:发表于2017-12-08 16:38 被阅读0次

    米筐社区全方位数据解读

    社区链接:https://www.ricequant.com/community/topic/3969/?utm_source=jianshu

    ​近期我们的米筐首席临时工做了一件非常好玩的事情,通过自己编写爬虫爬取了Ricequant线上社区的数据并进行了一系列的分析,大家也可以通过本篇文章初步了解python爬虫的原理哦。

    原文

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

    爬取储存

    作为一个爬虫弱渣,还好米筐社区没有反爬机制(但容我吐槽一句,社区网页源码可真不是那么容易能理得清的),靠着requests和bs4的文档,跌跌撞撞地爬取了所有数据,包括所有主题帖的标题、地址、发帖时间、再次编辑时间、跟帖量、浏览量、点赞量、是否带有回测分享、是否带有研究分享,以及分享的克隆次数。

    先说一说思路。首先进入社区主页,一共170+页的所有信息都在网页源码里。用requests请求后再用bs4解析(必要的时候可以暴力一点,自己目测解析),基本就能拿到大部分数据了。而发帖时间和再次编辑时间,需要进入每一个主题帖,再在其中找到所需要的数据。

    r = requests.get(url + str(num))#解析soup = BeautifulSoup(r.text,'html.parser')

    body = soup.body#帖子、浏览、赞,每3个一组

    human_readable_number = body.find_all('span', attrs={'class':'human-readable-number'})

    foriteminhuman_readable_number:

    list_tiezi_liulan_zan.append(item.get_text())

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

    defsave(file_name, data_list):

    withopen(file_name,'w')asf:

    writer = csv.writer(f)

    fordataindata_list:

    writer.writerow(data)

    清洗整理

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

    分析汇总

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

    数据可视化

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

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

    跟帖量top50如下:

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

    词云

    使用wordcloud和jieba对帖子的标题进行了分词,然而水平太差,做不出好看的图来,将就下:

    importjieba

    fromwordcloudimportWordCloud

    importmatplotlib.pyplotasplt

    # Read the whole text.

    text =''

    foritemindata['title']:

    text = text + item

    wordlist_after_jieba = jieba.cut(text, cut_all =True)

    wl_space_split =" ".join(wordlist_after_jieba)

    wordcloud = WordCloud(font_path="WawaTC-Regular.otf",background_color="black",width=2000, height=2000, margin=2).generate(wl_space_split)

    plt.imshow(wordcloud)

    plt.axis("off")

    plt.show()

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

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

    彩蛋

    爬取了帖子的发帖时间之后,统计了一下社区发帖的时间分布:


    结语

    三天的成果大概三分钟就能浏览完了,想想代价还是挺高的。从爬取、存储、清洗、整理、分析,一直到可视化。杂七杂八的东西都可以使用Python来完成,也甚是有趣。

    相关文章

      网友评论

          本文标题:米筐社区全方位数据解读

          本文链接:https://www.haomeiwen.com/subject/weieixtx.html