数据分析--NBA哪个月的比赛最多
我是个NBA伪球迷,去打篮球很少,但是天天看球赛,什么NBA,CBA甚至连NCAA的八强赛也关注,前几天接触Python的数据分析,发现挺有意思,于是我就自己搞了一个简单的程序来分析—从96-97赛季开始,平均哪个月的NBA比赛最多。
数据
我自己喜欢搞爬虫,自己爬了一点数据到数据库,至于怎么爬取,请关注公众号:爱代码的Cyning,后续会将爬虫代码程序发出来。
我将爬取的数据放到了Mysql的数据库,大概的数据如下:
数据库连接和数据获取
- 安装pymysql
目前使用的是Python3.5+,那么Python怎么链接Mysql呢?
首先需要安装pymysql
1 | pip3 install -i http://pypi.douban.com/simple --trusted-host pypi.douban.com pymysql |
- 获取数据库的数据
跟其他语言获取数据库方式一样,拿到游标就可以拿到数据:
1 | with MySQLdb.connect(host='localhost', user='root', passwd='root', port=3306, db="nba") as cursor: |
通过MySQLdb
库来拿到数据库的游标,执行sql语句,就可以通过.fetchall()
获取数据库中所有的列表信息。
- Numpy分析
在Python3.X上开发是个很开心的过程,因为Python平台下丰富的第三方库,为我们提供了各式各样的轮子,我们只需要按照自己的需求组装或者组合。我们可以通过Numpy库来处理目前我们能拿到的数据。
上面的np.array
其实就是将从数据库的二维数据向量化。
我们需要将1996-1997赛季到2016-2017赛季所有的按照月份给列出来,首先我们需要获取每隔赛季有哪几个月是比赛月(常规赛和季后赛),因为每隔赛季的情况千差万别,如停摆,全明星赛,以及各种因素会导致每隔赛季有所差异。
那我们如何拿到每隔赛季的月份呢:
- 过滤2017-2018赛季(比赛尚未结束)
- 按照月份来去重,拿到有比赛的月份(比赛月)
- 每一个的比赛求总和
过滤2017-2018赛季以及求月份
1 | # 从数据库获取数据 |
输出结果
1 | ['1' '10' '11' '12' '2' '3' '4' '5' '6'] |
跟实际情况是一致的。
求每个月份比赛数
只需将刚才的比赛月一一遍历,求和即可:
1 | month_list_result = [] |
将获取的month_list_result
存到csv文件中:
1 | file_name = os.path.join("./", "month_cnt.csv") |
- 结果
打开csv文件,用excel的图标展示如下:
通过这个图,我们很容易知道:NBA 3月份的比赛最多
- 本文链接:http://ownwell.github.io/2018/03/25/python-data-analysis-nba-01/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!