利用python进行数据分析_利用Python进行数据分析

9265feb458f3db44cabff90bd96b9a5d.png

Python中进行数据分析时重要的3个包:Numpy,Pandas和matplotlib。本篇重点学习Numpy和Pandas的使用

一维数据结构

Numpy一维数组

在Pandas中数据结构是Series,在Numpy中数据结构是array,Series是建立在Numpy基础上的

d85db378d46af86e807c2d87c838e0f9.png

首先定义一个一维数组

1e52b4f5e41a96ee6c273a9cbc3bc090.png

1)查询元素

通过下标序号来获取对应下标的元素

0ac5173b24291d08ce7155ca308a1db5.png

2)切片访问

指定访问数据的范围,在下面代码中冒号即表示切片访问,切片访问一般通过冒号前后数字来指定查询范围

3fc5203f02a5d3ba1cce1fb8b978567d.png

3)循环访问

通过for循环来访问一维数组里的每个元素

e515f320cf7652c24f4e5a609a0ffd67.png

4)数据类型

通过dtype来查看一维数组里面的数据类型

660e650319f19cdf5c232ff168884804.png

下面一张图展示了Numpy一维数组与列表的区别

f7f45951501a2d51584a52936a5c998d.png

Pandas一维数据结构

Series有索引,在定义的时候可以使用index参数来指定每个元素的索引,方便使用时通过索引名称来访问其中的元素

7cfce89fc9d1124ce589b9382164da1f.png

获取一维数组中元素的两种方法分别是:

a. 使用iloc属性用于根据元素的位置来获取值

531a63b3eb2234e62613a4ebabc6cb6c.png

b. 使用loc属性根据索引值来获取元素的值

62b3acb2189afeb60eed6bf1150b1750.png

在Pandas中使用向量相加

两个向量相加是根据索引值相同的值来相加

da67fa326b204537e554b825fd44abb1.png

在上面的例子中结果有出现空值,原因是部分索引值仅出现在其中一个数组中,在数据分析中为了避免结果有如上图所示空值的存在,通常有两种方法处理:

a. 通过dropna方法将空值直接删除掉

82f61d1720b214c190f8271e5857fec8.png

b. 使用add方法来对两个一维数组进行相加,并将参数传入参数名fill_value,fill_value是用于指定缺失值用哪个数字来填充

bd16508875dada40a73e9b1e828a6e6b.png

二维数据结构

二维数据结构指数据结构既有行又有列,在Numpy中通过Array来创建二维数组,在Pandas中通过DataFrame来创建二维数组。

a87cf2b57a795bc7c7a07786d919ab32.png

Numpy二维数据结构

用大括号将数据包裹起来,每个列表代表一行,列表之间用逗号分隔开,代表每一行。

5b33959c048e0e67c58a06fb705b4613.png

1)查询数组中的某个元素

7356582395caf456318e9a0f61e846fc.png

2)获取第1行

a7b3f216af9d32ae3192ed7860623aba.png

3)获取第1列

a34d38c2e9ebc738bc9e4cf7931f2f6c.png

Numpy数轴参数

数轴参数名为axis,通过指定参数的值来指定按每一行或者每一列来进行计算

7cd5e4c10976339992e6d1330d1891c6.png

Pandas数据框(DataFrame)

Pandas二维数组相比Numpy二维数组有两个优点:

  • DataFrame每一列可以是不同类型,方便表现如Excel中的数据内容
  • 具有类似Pandas一维数组Series索引的功能

定义数据框:

第一步:定义一个字典,映射列名与对应列的值

第二步:定义一个有序字典

第三步:定义数据框:传入字典,列名

039890e5771ebf5d8ea6ad6e89e592d1.png

在数据框中查询数据

a. 数据框的iloc属性是根据位置序号来获取元素

1)根据行号列号查询某一个元素的值

16806334235c01434e776504bec1f628.png

2)使用切片功能获取某一行数据

22802580de28619d7ad852f2d4275724.png

3)使用切片功能获取某一列数据

56f9607436de3a2f86e8bd22f0e5cbf8.png

b. 数据框的loc属性是根据行和列的索引值来获取元素

1)根据行名称和列名称来获取某一个数据

96b97198c5b4a7e46ac6f81a58167777.png

2)使用切片功能获取某一行数据

012c2ef477f98ce63bfa4d132df812ea.png

3)使用切片功能获取某一列数据

cd1f04b35dafe11c76b8d1af1885df27.png

查询多个列

通过传入一个列表来查询出数据框中的某几个列

1)查询某几列:

2)通过切片功能来指定范围

0cd295d2134e5979e1db129f618e492a.png

通过条件判断来筛选出符合要求的数据:

第一步:构建查询条件

第二步:应用查询条件,使用loc属性时行名称的地方传入查询条件的变量名称,它会根据查询条件筛选出满足查询条件的行


实战案例

数据分析步骤:提出问题——理解数据——数据清洗——构建模型——数据可视化

本次实战案例使用朝阳医院2018年销售数据进行练习

  1. 提出问题

从销售数据中分析出以下业务指标: 1)月均消费次数 2)月均消费金额 3)客单价 4)消费趋势

2. 理解数据

使用Pandas中的read_excel方法将Excel数据读取到数据框中,参数dtype=str意思是统一先按照字符串读入,之后再转换

5c5ad8d5a2c5dbde336f868ee3c663e0.png

3. 清洗数据

通常包括6步:选择子集——列名重命名——缺失数据处理——数据类型转换——数据排序——异常值处理

a. 选择子集

本例中需要全部数据,故没有选择子集

b. 列名重命名

通过定义一个旧列名和新列名对应关系的字典,然后使用数据框的rename方法来重命名列名

187aa87f769f62026a7d0634eea43089.png

c. 缺失数据处理

通常可以采用两种办法处理:直接删除缺失的数据,和建立差值的办法补充数据。本次数据清洗采用直接删除缺失的数据

67262f73f650d5722771fa3a8fbed6b5.png

d. 数据类型转换

字符串转换为数值(浮点数),使用astype进行销售量和金额数据的转换

bdd69d202e88c451475696fe949d76fc.png

处理日期,需要采用字符串分隔split

4ad7e3d73ab8c048d9de0387b23636a6.png

然后通过函数对字符串进行分割,获取销售日期

ff3407713a334f7065e13a3d28437af6.png

接下来修改销售时间这一列的值,并进行数据类型转换,将字符串转换为日期

c831aaceba9b8d655bf47f5f4b5a25f3.png

转换日期过程中不符合日期格式的数值会被转换为空值,因此在这里需要删除列(销售时间,社保卡号)中为空的行

6ed383a74703b5dfe91bb4a218f1d49e.png

e. 数据排序

通过sort_values方法进行排序,by参数表示根据哪一列排序,ascending参数表示按照升序或降序排列

c10c2825dfb70beab9d5ea7c385e2bd5.png

然后通过reset_index方法对排序后的数据进行重命名行名

6103245533c97a775cd44fca00ae550d.png

f. 异常值处理

通过describe来获取数据框中每一列的描述统计信息

2fc57858d7909a09451d9f7015f47c73.png

删除异常值使用数据框筛选数据的语法,使用条件判断筛选出销售数量大于0的数据

2adc2f774dd4e81c038a190e60ffd04f.png

4. 构建模型

对提出问题部分提到的业务指标进行计算分析

业务指标1:月均消费次数

44e4177920272b9ecb32424a1b208930.png
  • 计算总消费次数

第一步:使用drop_duplicates函数删除重复数据

第二步:使用数据框的shape属性可以得到行数和列数,shape返回的是一个列表的数据类型,访问序号是0的元素就可以得到列表中的第1个元素即行数,从而得到总消费次数

2389aa5e07377742ec7e4a4843107c84.png
  • 计算月份数

1)按消费时间进行升序排序

81803ae12894d6d0f45e5a6a8483c936.png

2)获取时间范围

获取最小时间值和最大时间值,得到时间范围

b5804d9457da83fe134c9b14a14d9ebe.png

3)计算月份数

41201fa0084548a723f961ccbcadb81a.png

将总消费次数与月份数相处得到月均消费次数为890次。

e071d41f2660e4520876507268cf6c15.png

业务指标2:月均消费金额

由于之前已经计算出月份数,因此只要计算出总消费金额,再除以月份数即可得到月均消费金额

d1f27059a6dc820dbad1bb23730d98d1.png

业务指标3:客单价

客单价=总消费金额/总消费次数

2ad7ea59ba84cdb53991d5b320be3470.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python的设计哲学是“优雅”、“明确”、“简单。Python用途极广。图形处理:有PIL、Tkinter等图形库支持,能方便进行图形处理。 数学处理:NumPy扩展提供大量与许多标准数学库的接口。 文本处理:python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。 数据库编程:程序员可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等数据库通信。python自带有一个Gadfly模块,提供了一个完整的SQL环境。 网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent. Google都在广泛地使用它。 Web编程:应用的开发语言,支持最新的XML技术。 多媒体应用:Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。 pymo引擎:PYMO全称为python memories off,是一款运行于Symbian S60V3,Symbian3,S60V5, Symbian3, Android系统上的AVG游戏引擎。因其基于python2.0平台开发,并且适用于创建秋之回忆(memories off)风格的AVG游戏,故命名为PYMO。 黑客编程:python有一个hack的库,内置了你熟悉的或不熟悉的函数,但是缺少成就感。 用Python写简单爬虫
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值