利用Python进行数据分析

本文详细介绍了Python中的数据分析,包括NumPy和Pandas库的一维数组(如NumPy的ndarray和Pandas的Series)以及二维数组(如DataFrame)。内容涵盖了数组的生成、操作、统计功能、向量化计算、缺失值处理和数据清洗等关键步骤。
摘要由CSDN通过智能技术生成

一、数据分析的基本过程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二、一维数据分析

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%免费

  • 13
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值