实战:从Python分析17-18赛季NBA胜率超70%球队数据开始…

干货

观点

案例

资讯

我们

撸主:

Casey 岂安业务风险分析师

主要负责岂安科技RED.Q的数据分析和运营工作。

就在昨天,12月19日,科比再次站在斯台普斯中心球馆中央,见证自己的两件球衣高悬于球馆上空。作为一个正奋战在 Python 之路上的球迷,开始了一次数据分析实战,于是,以分析球赛数据为起点的操作开始了......

前言

python 作为一个功能强大的编程语言,如今在数据分析、机器学习、人工智能等方面如日中天。如果想做数据分析,那么 python 则为一把利器。

初入职场,除了使用 python 中列表、元组、字典等常用数据类型外,经常会接触到一些如 csv 文件、json 格式的数据、或者直接要和数据库打交道。

本文,通过几个小例子简述 python 对 csv、json、mysql 的简单操作。

数据分析实战

1

已知 nba-season_17_18.csv 文件(见下图)存放截至目前17-18赛季 NBA 常规赛联盟全部球队的数据。

现在需要将胜率超过 70% 并且场均得分在 110 分的球队信息写入到 result.csv 中。

上述对 csv 文件的操作可通过 python 中的 csv 模块轻松实现,csv 模块分别通过 reader() 和 writer() 实现对 csv 文件的读写,这两种方法都需要传入文件对象。

因此,首先需要使用 open 方法打开 nba-season_17_18.csv,创建文件对象。

注意:

需要先将文件第一行要写入 result.csv,其余行要依次通过if语句判断胜率和场均得分再选择是否写入。

判断时要注意 reader 中的 row[3] 和 row[10] 是字符串类型,需要转换成 float 类型。

实现的代码如下:

最终result.csv如下:

2

json 作为一种轻量级的文本数据交换格式,因为在网络传输过程中具有节省流量、加快速度等优点,使其成为理想的数据交换语言。

python 对 json 的操作主要通过 json 模块中的 dumps() 函数和 loads() 函数。前者将 python 对象编码 json 字符串,而后者则是将已经编码的 json 字符串解码为 python 对象。

代码中 dumps() 函数将列表data编码为 json,其中参数 separators 默认是", "或": "(逗号和冒号后边分别有一个空格)。

第三行代码表示去掉逗号和冒号后边的空格,参数 indent 设置 json 检验后的缩进位数。

代码中 loads() 函数将第三行输出的 json 解码为原来的列表格式。

如果上述 json 字符串和 python 对象存储在文件中,也不用担心,json 模块中的 dump() 和 load() 正是为此而生的。见第8行代码。

输出结果如下:

3

方便高效的操作数据库可以节省分析师大量的时间,python 中 pymysql 模块正好满足。

该模块操作数据库的过程可分为以下几步:

其中,创建 connection 对象需要传入以下参数:host(MySQL服务器地址)、port(mysql服务器端口号,默认3306)、user(用户名)、passwd(密码)、db(数据库名)等。

使用 cursor.execute() 执行的 sql 语句,可以是 select 查询语句,也可以是 insert、update、delete 等操作语句。

cursor 获取数据的方法有:

fecthone() 获取结果集中的下一条数据

fecthmany(n) 获取结果集中的下 n 条数据

fetchall() 获取结果集中的剩下所有数据

下图是获取并打印本地数据库中数据的一个例子:

值得注意的是, connection 对象除了 cursor() 方法外,还为支持事务提供两个重要的方法:

commit() 和 rollback()

这两个方法分别是提交所有操作,和回滚当前游标的所有操作。例如,在上例中,Tom借了Lucy10元钱,那么此时需要先将Lucy的压岁钱减掉10,然后将Tom的压岁钱增加10。此时使用事务来保证数据库的完整性,即要么两步都执行,要么都不执行。

结果如下:

结语

本文用python 对 csv、json、mysql 进行了简单操作。当然要做好数据分析,这些还远远不够。python 知识体系庞大,有大量高效且优秀的库,不得不提的是:

科学计算领域的 NumPy 和 SciPy

数据分析领域的 Pandas

机器学习领域的 scikit-learn

总之,python 的知识点众多,学好不是一朝一夕的事情。但是,初入职场的小白觉得,学习其中任何一个知识点,除了看书、听课、参加讲座等方式外,更重要的是实际操作能力和思考总结能力。

当然我也一直在学习中。文中有不当之处,敬请批评指正。如果您有关于数据分析的想法,特别欢迎一起交流、共同进步。谢谢。

本文来自企鹅号 - bigsec岂安科技媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码洞

全栈虚拟机GraalVM初体验

近日Oracle开源了一个实验性的产品GraalVM,官方称之为Universal GraalVM。它打通了不同语言之间的鸿沟,让我们可以进行混合式多语言编程。...

1642
来自专栏小樱的经验随笔

CTF---Web入门第十题 Once More

Once More分值:10 来源: iFurySt 难度:易 参与人数:4782人 Get Flag:2123人 答题人数:2166人 解题通过率:98%...

3036
来自专栏Crossin的编程教室

【Git 第63课】python 2到3的新手坑

昨天挖了个坑,论坛上已经有不少解答了,还有c语言的版本。今天先不填坑,让题目再飞一会儿,没做的同学可以周末试着写写玩儿。 周三的时候去参加“编程一小时”活动,过...

3377
来自专栏晨星先生的自留地

宽字节注入(2)

2004
来自专栏Python小屋

改造Python中文拼音扩展库pypinyin补充自定义声母全过程

问题要从昨天说起,应根球老师发给我一个代码问可能是啥原因,如下: ? 该函数的第二个参数3含义为只保留声母,为啥“应”的声母丢了呢? 因为当时正是课间休息,一会...

4688
来自专栏互联网杂技

如何去了解JavaScript引擎的工作原理

1. 什么是JavaScript解析引擎? 简单地说,JavaScript解析引擎就是能够“读懂”JavaScript代码,并准确地给出代码运行结果的一段程序。...

3907
来自专栏机器学习算法与Python学习

精选26个Python实用技巧,想秀技能先Get这份技术列表!

Python 虽然是脚本语言,但是因为其易学,迅速成为科学家的工具,从而积累了大量的工具库、架构,人工智能涉及大量的数据科学,用 Python 是很自然的事。磨...

1392
来自专栏坚毅的PHP

HBase client访问ZooKeeper获取root-region-server DeadLock问题(zookeeper.ClientCnxn Unable to get data of zn

2012年11月28日 出现故障," Unable to get data of znode /hbase/root-region-server" 问题比较诡异...

5574
来自专栏ImportSource

设计模式-搞个接口,留有余地,让你我不再尴尬

设计模式,Design Patterns,Pattern,翻译为“模式”总感觉不够接地气,用今天的话来说可以叫“套路”。设计模式就是写代码的过程中一些常规打法和...

37212
来自专栏CDA数据分析师

精选26个Python实用技巧,想秀技能先Get这份技术列表!

【导读】Python 虽然是脚本语言,但是因为其易学,迅速成为科学家的工具,从而积累了大量的工具库、架构,人工智能涉及大量的数据科学,用 Python 是很自然...

1142

扫码关注云+社区

领取腾讯云代金券