米筐社区全方位数据解读

社区链接
近期我们的米筐首席临时工做了一件非常好玩的事情,通过自己编写爬虫爬取了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'})
for item in human_readable_number:
    list_tiezi_liulan_zan.append(item.get_text())复制代码

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

def save(file_name, data_list):
    with open(file_name, 'w') as f:
        writer = csv.writer(f)        
        for data in data_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 如下:

image007.png

词云

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

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# Read the whole text.

text = ''
for item in data['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来完成,也甚是有趣。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是一款基于人工智能和大数据技术的金融数据分析工具。它提供了丰富的数据和强大的分析功能,帮助用户更好地理解市场情况和投资状况。的核心功能之一就是getfactor(获取因子)。 getfactor是提供的一个用于提取和计算投资因子的工具。投资因子是指可以影响证券价格和收益的一些特定特征,如公司估值、盈利能力、市场行情等。通过获取和计算这些因子,可以帮助用户深入分析股票、基金和其他金融产品的投资价值。 使用getfactor,用户可以根据自己的需求和策略,选择合适的因子进行分析。提供了多种经典的投资因子,如市盈率、市净率、动量因子、成长因子等。同时,用户还可以根据自己的需求,自定义和计算新的因子。getfactor提供了多种计算方法和公式,用户可以根据自己的投资策略,选择适合的因子计算方法。 使用getfactor进行因子分析,可以帮助用户发现和识别投资机会,找到具有潜在价值的证券。通过对因子数据的分析,用户可以了解不同因子对于证券价格和收益的正负影响,进而制定相应的投资策略。getfactor还提供了数据可视化和报表功能,用户可以更直观地展示和分享因子分析的结果。 总之,的getfactor是一个强大的金融数据分析工具,通过获取和计算投资因子,帮助用户进行深入的因子分析,寻找投资机会,优化投资策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值