一、数据分析的基本过程
二、一维数据分析
1-1、NumPy一维数组
NumPy的N - 维数组对象表示为ndarray。ndarray是Python中一个快速、灵活的大型数据集容器。数组允许在整块数据上进行数学计算。
标准的NumPy导入方式为:
import numpy as np
生成数组可以使用array函数。
定义一个一维数组array
a = np.array([2, 3, 4, 5, 6])
数组中的元素与其位置的对应关系如下:
(1)查询元素
(2)切片访问
切片访问所指定的区域 [1:3] ,表明查询的元素是从位置 ‘1’ 开始,显示 ‘3-1’ 即2个元素。
(3)循环访问
(4)数据类型
如果没有进行显式指定,np.array会自动推断生成数组的数据类型。数据类型借呗存储在一个特殊的元数据dtype中。
查看数据类型
(5)查看数组是几维数组
使用ndim查看
1-2、NumPy一维数组与列表的区别
(1)NumPy提供了很多统计功能
聚合函数(也叫缩减函数),比如平均值mean(),标准差std(),和sum()。
(2)NumPy数值可以进行向量化计算
定义两个NumPy一维数组
向量相加
向量乘以标量
带有标量计算的算术操作,会将计算参数传递给数组的每一个元素
同尺寸数组之间的比较,会产生一个布尔值数组:
(3)NumPy数组内元素必须是同一数据类型,列表可以是不同数据类型。
2-1、Pandas一维数组
Series是一种一维的数组对象,包含了一个值序列和数据标签(索引index)。
标准的Pandas导入方式为:
import pandas as pd
(1)最简单的序列可以有一个数组形成:
obj = pd.Series([4, 7, -5, 3])
通过打印该数组发现,索引在左边,值在右边,数值类型在最下边。由于我们没有为数据指定索引,默认生成的索引是从0到N-1(N是数据的长度)。
(2)可以通过values属性和index属性分别获取Series对象的值和索引。
(3)创建一个指定索引的数组
获取索引
(4)通过索引访问元素
(5)可以使用NumPy的函数或NumPy风格的操作,比如使用布尔值数组进行过滤,与标量进行计算,或是应用数学函数。
(6)
iloc属性用于根据位置获取值
loc属性用于根据索引获取值
(7)向量化运算
由结果可知,上述相加是根据匹配索引值进行的,只有相同的索引所对应的值才能相加。
可以使用isnull和notnull函数检查缺失数据。
(8)对于上述情况中出现的空值,我们有两种方法进行处理。
方法1:使用dropna()方法直接将空值删除
方法2:使用add()方法将缺失值进行填充
用‘0’来填充彼此不匹配的索引下的数值。
(9)Series对象自身和其索引都有name属性
(10)进行描述统计分析
三、二维数据分析
1.NumPy二维数组
NumPy的N - 维数组对象表示为ndarray。
NumPy二维数组的创建还是使用简单的array函数。
(1)查询元素
第一个元素‘0’是行号,第二个元素‘2’是列号。
(2)获取某一行
例:获取第1行
(3)获取某一列
例:获取第1列
(4)数轴参数
二维数组的索引方式如下:
将“0”轴看作“行”,将“1”轴看作“列”
在不指定数轴参数的时候进行平均值等数学统计计算时,他将会计算所有元素,不考虑其行和列。
如果指定轴的话,计算会考虑到是行还是列。
2、Pandas二维数组
2-1
Pandas的二维使用DataFrame数据框实现。DataFrame表示的是矩阵的数据表,它包含已排序的列集合,每一列可以是不同的值类型。DataFrame即有行索引,又有列索引。在DataFrame中,数据被存储为一个以上的二维块,而不是列表、字典或其他一维数组的集合。
(1)构建
构建DataFrame最常用的方式是利用包含等长度列表或NumPy数组的字典来形成。
例如我有一张关于药品销售记录的Excel数据表,我想将它用Python进行分析。
第1步:定义一个字典,映射;列名与对应列的值
第2步:定义数据框,参数传入字典
产生的DataFrame会自动为Series分配索引,并且列会按照排序的顺序排列。如果指定了列的顺序,DataFrame的列将会按照指定顺序排列。
指定列顺序:
salesDF = pd.DataFrame(salesDict, columns = ['购药时间', '社保卡号', '商品编码', '商品名称', '销售数量', '应收金额', '实收金额'])
第3步:进行分析
计算平均值
可以发现Pandas是按照每列进行平均值的计算
描述性统计计算
(2)使用iloc属性,即根据位置查询值
<1>查询元素
<2>获取某一行
例如获取第一行数据
<3>获取某一列
例如获取第一列
(3)使用loc属性,用于根据索引查询值
<1>查询元素
<2>获取某一行
例如获取第一行数据
<3>获取某一列
例如获取第一列
或者
loc属性更常用。
(4)查询某几列:
方法1:直接列举所要的列名
方法2::切片功能——指定范围
(5)通过条件判断筛选数据
第1步:构建查询条件
查询过程中的结果存放的是布尔类型,符合条件的为True。
第2步:应用查询条件
应用查询条件并展示符合条件所在行所对应的所有列的内容。
2-2 简单案例
将上述的完整数据导入并分析。
(1)读取Excel数据
使用完整的药品销售数据
fileNameStr = 'C:/Users/MACHENIKE/Desktop/数据分析/学习资料/Python数据分析的基本过程/朝阳医院2018年销售数据.xlsx' xls = pd.ExcelFile(fileNameStr) saleDF = xls.parse('Sheet1')
(2)打印前5行
方法1:使用head函数
方法2:使用iloc属性和切片
(3)查看数据类型
(4)查看数据有多少行,多少列
使用shape属性
由此可看出有6578行,7列数据。
(5)每一列的统计数
使用描述统计方法:
由于数据类型问题,结果显示有问题,后边完整分析时进行调整。
四、案例
根据数据分析的过程进行数据分析。
使用的数据依然是上述练习中使用到的朝阳医院2018销售数据
1、提出问题
2、理解数据
(1)读取Excel数据
(2)打印前几行
(3)查看数据有多少行,多少列
由此可看出有6578行,7列数据。
(4)查看列的数据类型
3、清洗数据
(1)选择子集
本案例不需要选择子集,所有数据均有用。
如果需要选择子集的话,需要使用loc属性和切片的功能。
(2)列名重命名
将“购药时间”重命名为“销售时间”
(3)缺失数据处理
缺失数据的处理方式有两种:
- l 直接删除缺失数据
- l 如果缺失数据太多,建立模型使用插值的办法进行处理
由于缺失值不多,在此选择将缺失值删除
(4)数据类型的转换
为了方便计算,将销售数量、应收金额、实收金额的数据类型转换,字符串转换为数值(浮点数)
(5)处理日期
查看部分数据可知日期格式为
修改成只有年月日的格式
将销售日期这一列的数据类型转换成日期类型
(6)排序
按照日期进行排序
(7)异常值处理
我们可以通过描述统计信息对数据有一个整体的把控。
根据描述统计信息结果来看,最小值出现了负数,按照正常销售来说不应该存在销售数量小于0的情况,需要根据销售数量进行进一步的筛选、删除。
4、构建模型
5、数据分析
(1)月均消费次数
第1步:删除重复数据
第2步:有多少行
有多少行就有多少消费次数
即总消费次数为3317
第3步:按销售时间升序排序
第4步:获取时间范围
第5步:计算月份数
第6步:月均消费次数
即月均消费次数为552
(2)月均消费金额
第1步:计算总消费金额
第2步:计算月均消费金额
这里的结果整合成了两位小数。
即月均消费金额为50668.35元。
(3)客单价
即客单价为91.65。
关于Python学习指南
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉Python副业兼职路线&方法👈
学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。
👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费
】