Python中进行数据分析时重要的3个包:Numpy,Pandas和matplotlib。本篇重点学习Numpy和Pandas的使用
一维数据结构
Numpy一维数组
在Pandas中数据结构是Series,在Numpy中数据结构是array,Series是建立在Numpy基础上的
首先定义一个一维数组
1)查询元素
通过下标序号来获取对应下标的元素
2)切片访问
指定访问数据的范围,在下面代码中冒号即表示切片访问,切片访问一般通过冒号前后数字来指定查询范围
3)循环访问
通过for循环来访问一维数组里的每个元素
4)数据类型
通过dtype来查看一维数组里面的数据类型
下面一张图展示了Numpy一维数组与列表的区别
Pandas一维数据结构
Series有索引,在定义的时候可以使用index参数来指定每个元素的索引,方便使用时通过索引名称来访问其中的元素
获取一维数组中元素的两种方法分别是:
a. 使用iloc属性用于根据元素的位置来获取值
b. 使用loc属性根据索引值来获取元素的值
在Pandas中使用向量相加
两个向量相加是根据索引值相同的值来相加
在上面的例子中结果有出现空值,原因是部分索引值仅出现在其中一个数组中,在数据分析中为了避免结果有如上图所示空值的存在,通常有两种方法处理:
a. 通过dropna方法将空值直接删除掉
b. 使用add方法来对两个一维数组进行相加,并将参数传入参数名fill_value,fill_value是用于指定缺失值用哪个数字来填充
二维数据结构
二维数据结构指数据结构既有行又有列,在Numpy中通过Array来创建二维数组,在Pandas中通过DataFrame来创建二维数组。
Numpy二维数据结构
用大括号将数据包裹起来,每个列表代表一行,列表之间用逗号分隔开,代表每一行。
1)查询数组中的某个元素
2)获取第1行
3)获取第1列
Numpy数轴参数
数轴参数名为axis,通过指定参数的值来指定按每一行或者每一列来进行计算
Pandas数据框(DataFrame)
Pandas二维数组相比Numpy二维数组有两个优点:
- DataFrame每一列可以是不同类型,方便表现如Excel中的数据内容
- 具有类似Pandas一维数组Series索引的功能
定义数据框:
第一步:定义一个字典,映射列名与对应列的值
第二步:定义一个有序字典
第三步:定义数据框:传入字典,列名
在数据框中查询数据
a. 数据框的iloc属性是根据位置序号来获取元素
1)根据行号列号查询某一个元素的值
2)使用切片功能获取某一行数据
3)使用切片功能获取某一列数据
b. 数据框的loc属性是根据行和列的索引值来获取元素
1)根据行名称和列名称来获取某一个数据
2)使用切片功能获取某一行数据
3)使用切片功能获取某一列数据
查询多个列
通过传入一个列表来查询出数据框中的某几个列
1)查询某几列:
2)通过切片功能来指定范围
通过条件判断来筛选出符合要求的数据:
第一步:构建查询条件
第二步:应用查询条件,使用loc属性时行名称的地方传入查询条件的变量名称,它会根据查询条件筛选出满足查询条件的行
实战案例
数据分析步骤:提出问题——理解数据——数据清洗——构建模型——数据可视化
本次实战案例使用朝阳医院2018年销售数据进行练习
- 提出问题
从销售数据中分析出以下业务指标: 1)月均消费次数 2)月均消费金额 3)客单价 4)消费趋势
2. 理解数据
使用Pandas中的read_excel方法将Excel数据读取到数据框中,参数dtype=str意思是统一先按照字符串读入,之后再转换
3. 清洗数据
通常包括6步:选择子集——列名重命名——缺失数据处理——数据类型转换——数据排序——异常值处理
a. 选择子集
本例中需要全部数据,故没有选择子集
b. 列名重命名
通过定义一个旧列名和新列名对应关系的字典,然后使用数据框的rename方法来重命名列名
c. 缺失数据处理
通常可以采用两种办法处理:直接删除缺失的数据,和建立差值的办法补充数据。本次数据清洗采用直接删除缺失的数据
d. 数据类型转换
字符串转换为数值(浮点数),使用astype进行销售量和金额数据的转换
处理日期,需要采用字符串分隔split
然后通过函数对字符串进行分割,获取销售日期
接下来修改销售时间这一列的值,并进行数据类型转换,将字符串转换为日期
转换日期过程中不符合日期格式的数值会被转换为空值,因此在这里需要删除列(销售时间,社保卡号)中为空的行
e. 数据排序
通过sort_values方法进行排序,by参数表示根据哪一列排序,ascending参数表示按照升序或降序排列
然后通过reset_index方法对排序后的数据进行重命名行名
f. 异常值处理
通过describe来获取数据框中每一列的描述统计信息
删除异常值使用数据框筛选数据的语法,使用条件判断筛选出销售数量大于0的数据
4. 构建模型
对提出问题部分提到的业务指标进行计算分析
业务指标1:月均消费次数
- 计算总消费次数
第一步:使用drop_duplicates函数删除重复数据
第二步:使用数据框的shape属性可以得到行数和列数,shape返回的是一个列表的数据类型,访问序号是0的元素就可以得到列表中的第1个元素即行数,从而得到总消费次数
- 计算月份数
1)按消费时间进行升序排序
2)获取时间范围
获取最小时间值和最大时间值,得到时间范围
3)计算月份数
将总消费次数与月份数相处得到月均消费次数为890次。
业务指标2:月均消费金额
由于之前已经计算出月份数,因此只要计算出总消费金额,再除以月份数即可得到月均消费金额
业务指标3:客单价
客单价=总消费金额/总消费次数