在数据分析领域,Python中用到最多的包是numpy,pandas和matplotlib,本文共分为三个部分:1.使用numpy和pandas分析一维数据 2.使用numpy和pandas分析二维数据 3.案例分析。
- Numpy(Numerical Python):是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
- Pandas:基于Numpy的一种数据分析工具,该工具是为解决数据分析任务而创建的,提供了一套名为数据框的数据结构,可以方便地对表结构数据进行分析。
- matplotlib:是一个图形绘制库,专门用于数据分析结构的可视化。
*数据分析工具Numpy和Pandas大纲
一.一维数据分析
Numpy:Array
Pandas:Series
1)Numpy一维数据
Numpy一维数组与列表的区别:
a.统计功能:如:计算平均值的mean()方法,标准差std()方法;
b.向量化计算:可以向量相加和乘以标量;
c.Numpy数组中的每一个元素必须是同一种数据类型,而列表中的元素可以是不同类型。
2)Pandas 一维数组:Series有索引
a.获取描述统计信息
b. # series.iloc[] :根据位置获取值。 series.loc[]:根据索引获取值。
c.向量相加 和删除缺失值
二.二维数据分析
Numpy:Array
Pandas:DataFarme
1)Numpy
a.定义二维数组,查询数组
b.切片的使用:切片的使用:[行进行切片,列进行切片],[start:stop:step,start:stop:step]
c.数轴参数:axis=1按行计算,axis=0按列计算
2.Pandas
a.数据框DataFrame: 行columns ; 列index
b.定义一个字典
c.按照每列计算平均值
d.用iloc属性根据位置查询值
e.用loc属性根据索引查询值
f.查询某几列
g.切片功能:指定范围
h.通过条件筛选符合要求的数据
i.数据集描述统计信息
- 查看某一列数据类型
- 查看有多少行多少列
- 获取每一列的描述统计
三.案例
Numpy和Pandas 对朝阳医院药品销售数据进行分析,步骤如下:
1.提出问题
和业务部门沟通后,要从销售数据中分析以下业务指标:
- 月均消费次数;
- 月均消费金额;
- 客单价;
- 消费趋势
2.理解数据
1)导入数据
2)查看数据类型
3)查看总的行列数
4)表中字段含义如下:
- 购药时间:药品销售日期
- 社保卡号:顾客购买药品使用的社保卡号码
- 商品编码:售出药品的编号
- 商品名称:售出药品的名称
- 销售数量:售出药品的数量
- 应收金额:药品应售金额
- 实收金额: 药品实际售出金额(折扣,满减)
3.清洗数据
原始数据多而杂乱,或缺失,或异常,需要进行数据清洗,得到后续数据分析可用的数据。
1)选择子集
本案例需要所有数据,不需要选择子集。下面是展示选择子集的方法之一:切片访问
2)列名重命名
统一列名的时间,这里将“购药时间”改为“销售时间”,用字典定义旧列名和新列名;用rename函数修改。
3)缺失值处理
a. Python缺失值有3种:None,NA,NaN
- Python内置的None值
- 在pandas中,将缺失值表示为NA,表示不可用not available。
- 对于数值数据,pandas使用浮点值NaN(Not a Number)
b.数据中含有缺失值,对后续计算会造成干扰,可以用空值填充或直接删除,此处用dropna()将数据框中缺失值删除。
*how=any表示,给定的任一列中缺失值就删除
4.数据类型转换
a.在导入数据时已将所有数据设定为字符串类型,现在用astype()将销售数量、应收金额和实收金额三列数据类型改为浮点型。
b.自定义函数,将字符串转换为日期数据类型
5.数据排序
用sort_values()对数据进行排序
删除缺失值和根据销售时间排序后,索引名已被打乱,需重新命名索引名
6.异常值处理
如上图所示,我们发现销售数量的最小值为-10,因此可以将销售数量为负值的行删除。
4.构建模型
我们可根据业务问题来构建模型。
问题1: 月消费次数
月消费次数=总消费次数/月数。注:同一天内同一人的多次消费算为1次。
问题2:月均消费金额
月均消费金额=总消费金额(实收金额)/月份数。
问题3:客单价
客单价=总消费金额/总消费次数。
问题4: 消费趋势
计算每月销售总金额
导出数据做出销售趋势图如下: