在数据分析领域中第三方包用到最多的是pandas、numpy与matplotlib。
Pandas是一个强大的分析结构化数据的工具集;它的使用基础是numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。
Pandas主要包含两个数据类型:
- Series
- DataFrame
Pandas比numpy好用。
numpy(Numerical Python的简称)是基于Python的高性能科学计算和数据分析的基础包。提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
matplotlib是Python的绘图库,主要做数据可视化图表。
一、知识点
1. 一维数据分析
numpy与pandas这两个包都有表示一维数组的特殊数据结构,在numpy中的一维数据结构叫数组Array,在pandas中的一维数据结构叫Series,Series比Array的功能更多,因为pandas的Series是建立在numpy的基础上的。
1.1 使用numpy的array进行一维数据分析
示例:
定义列表:
1)索引查询元素:
2)切片访问:
3)遍历循环访问:
4)使用dtype
查看数据类型:
dtype详细信息参考网址:
Data type objects (docs.scipy.org/doc/numpy-1.10.1/reference/arrays.dtypes.html
5)统计计算功能,如:平均值mean()、标准差std()
6)向量化运算,如:向量相加、向量乘以标量
1.2 使用pandas的series进行一维数据分析
示例:
定义一维数据结构:
注意索引:
1)获取描述统计信息:
2)获取值
iloc
属性用于根据位置顺序获取值、loc
属性用于根据索引获取值
3)向量化运算:向量相加
不同的向量相加时,索引不同会导致不相同的索引的数据为空值None
4)处理缺失值(空值)
方法2中,fill_valiue=0
将空值填充为0,去除缺失值,再将s2与s1相加
2. 二维数据分析
二维数据结构既有行又有列,类似于一个二维Excel表格。
在numpy中用数组Array创建二维数组,而在pandas中用数据框DataFrame创建二维数组。pandas有额外的功能,处理表格比numpy更方便。
2.1 使用numpy的array进行二维数据分析
示例:
创建如上图表格的二维数组结构:
1)获取元素
2)按数轴进行计算
axis是numpy的数轴参数
2.2 使用pandas的数据框DataFrame进行二维数据分析
示例:
创建如上图表格的数据框:
定义有序的数据框
1)平均值计算(按列计算)
2)获取值
iloc
属性用于根据位置顺序获取值
loc
属性用于根据索引获取值
3)复杂查询
切片功能:
条件判断:
4)查看数据集描述统计信息
图解每一列的统计数值:
二、案例实操
1. 提出问题
对朝阳医院的销售数据计算业务指标月均消费次数、月均消费金额,客单价,并指出消费趋势
2. 理解数据
2.1 读取Excel的数据
路径中最好不要有中文,或者特殊符号啥的,不然路径会提示错误找不到。最好将文件放到一个简单的英文路径下。
2.2 打印前几行,查看所有字段
2.3 查看有多少行,多少列
2.4 查看每一列的数据类型
3. 数据清洗
3.1 选择子集
所有的列在数据分析中都需要用到,本案例不需要选择子集
3.2 列名重命名
3.3 缺失数据处理
python缺失值有3种:
1)Python内置的None值
2)在pandas中,将缺失值表示为NA,表示不可用not available。
3)对于数值数据,pandas使用浮点值NaN(Not a Number)表示缺失数据。
后面出来数据,如果遇到错误:说什么foloat错误,那就是有缺失值,需要处理掉
所以,缺失值有3种:None,NA,NaN
dropna函数详细使用地址:
3.4 数据类型转换
字符串转换为数值(浮点型)
运行后,会报警告SettingWithCopyWarning。一般信息有两列,一类是Warning警告信息,一类是Error错误信息。警告的信息不用管,我们只关注错误类型的信息
字符串转换为日期数据类型
补充知识点(字符串分割):
知识点(字符串分割)运用:
注意:
如果运行后报错:AttributeError: 'float' object has no attribute 'split',是因为Excel中的空的cell读入pandas中是空值(NaN),这个NaN是个浮点类型,一般当作空值处理。所以要先去除NaN在进行分隔字符串
补充知识点(None和NaN有什么区别):
None是Python的一种数据类型,NaN是浮点类型 两个都用作空值
字符串转换为日期数据类型,继续
3.5 数据排序
by:按哪几列排序,ascending=True 表示升序排列,,ascending=True表示降序排列。
na_position=True表示排序的时候,把空值放到前列,这样可以比较清晰的看到哪些地方有空值。
官网文档:
3.6 异常值处理
4. 构建模型
4.1 求月均消费次数
月均消费次数=总消费次数 / 月份数
4.2 求月均消费金额
月均消费金额 = 总消费金额 / 月份数
4.3 求客单价
客单价(per customer transaction)是指商场(超市)每一个顾客平均购买商品的金额,客单价也即是平均交易金额。
客单价=总消费金额 / 总消费次数