用Python进行数据分析,需要用到数据分析相关的包,如本文中用到的pandas和numpy包。

本文目录:

  1. 用python分析一维数据
  2. 用python分析二维数据
  3. 案例:销售数据分析

一、一维数据分析

在numpy和pandas这两个包中,都有表示一维数据的特殊数据结构。

在pandas中,一维数据结构是Series

在numpy中,一维数据结构是数组Array

Series 的功能相对numpy的Array要更多,因为Series是建立在Numpy至上的

1.数组Array

1)一般操作

其相关操作类似列表,如查询、切片、循环等。

示例:

2)Array与列表的区别

1.具有统计功能

如平均值mean()、标准差std()

2.可以进行向量化计算

  • 向量相加
  • 与标量相乘
  • 注意

列表的元素可以是不同的数据类型,而数组Array里面的每一个元素都必须是同一种数据类型。

2.Series

Series相较于Array多了索引,可以在定义的时候指定索引。

示例:

1)常用操作

  • 获取描述统计信息 describe
  • 根据位置获取值 iloc
  • 根据索引获取值
  • 向量相加

Series中向量是根据相同的索引进行相加的,当相加的两者没有相同的索引时,输出值将是空值NaN。此时可以使用方法dropna来将空值删除

另外可以采用将缺失值事先进行填充(采用fill_value)的方法。

二、二维数据结构

在numpy中,使用数组Array来创建二维数据

在pandas中,使用数据框dataframe来创建二维数据

一般来说dataframe更加常用

1.数组Array

示例

1)一般操作

  • 查询元素:[行号,列号]

行号和列号都是从0开始算的,通过相应的行号和列号可以定位到相应的元素

  • 获取某一行所有元素:[对应行的行号, : ]
  • 获取某一列的所有元素: [ :,对应列的列号]

2)特殊操作

  • 数轴参数 axis

默认情况下,对数组Array进行的统计操作都是在所有元素的基础上进行的。在需要按行或列来进行统计计算的时候,需要用到数轴参数。

axis=1的时候,统计值按来进行计算

axis=0的时候,统计值按来进行计算

2.数据框 DataFrame

在二维数组上,DataFrame相较于Array有两个优点:

  • 每列的数据可以是不同的类型
  • 具有索引功能(类似于Series),每行和每列都有索引值

示例

1)一般操作

iloc属性用于根据位置查询值

  • 查询元素:变量名.iloc[元素所在的行,元素所在的列]
  • 获取某一行:变量名.iloc[对应行的行号, : ]
  • 获取某一列:变量名.iloc[:,对应列的列号 ]

loc属性用于根据索引查询值(更加常用)

  • 查询元素:变量名.loc[元素所在的行,需查询的列名]
  • 获取某一行:变量名.loc[对应行的行号, : ]
  • 获取某一列:变量名.iloc[:,对应列的列名]

查询某几列:变量名[[‘列名1’,‘列名2’]]

切片功能:指定范围

通过loc方法,也可以切割出从‘购药时间’到‘商品名称’之间的所有列

### 2)特殊操作

  • 建立有序的数据框

直接使用字典结构获得的数据框,其列名的排列顺序有可能是不按照定义时的顺序来进行排列的。因此可以使用OrderedDict来固定顺序

  • 平均值计算

DataFrame是按每列来求平均值的

  • 通过条件判断来筛选出符合要求的数据
  • 查看数据集里面的描述统计信息

三、案例

数据分析的五大步骤:提出问题、理解数据、数据清洗、构建模型、数据可视化

本次使用的数据集是朝阳医院的销售数据

1、提出问题

获取月均消费次数、月均消费金额、客单价、消费趋势

2、理解数据

1)读取数据

2)打印前五行,看看数据集都有哪些参数

3)查看数据集有几行几列

4)查看各列的数据类型

3、数据清洗

数据清洗包括六个步骤:

  • 选择子集(选择本次分析所需的列)
  • 列名重命名(列名不符合使用习惯等)
  • 缺失数据处理
  • 数据类型转换
  • 数据排序
  • 异常值处理

1)选择子集

2)列名重命名

3)缺失数据处理

Python的缺失值有3种:

  1. Python内置的None值
  2. Pandas中的缺失值NA,表示不可用not available
  3. 对于数值数据,Pandas使用浮点值NaN(not a number)表示缺失数据。如提示有Float错误,就表明存在缺失值。

因此,缺失值总共有3种:None,NA,NaN

缺失数据处理有两种方法:

  • 直接删除缺失数据
  • 通过建立模型来补齐缺失值

4)数据类型转换

  • 将字符串转换为数值
  • 将字符串转换为日期格式

需要使用split方法,先将日期和星期分开

分开之后,销售时间列只有日期值,此时的日期值仍然是字符串,需要将其转换为日期。

通过转换,销售时间已经由字符串转换为日期,转换过程中不符合日期格式的数值会被转换为空值,需要将其删除。

5)数据排序

打印排序之前的数据集

通过代码让数据集按销售日期进行排序

打印排序后的数据集

进行排序之后,各行的索引值还是之前的行号,需要将其修改为从0到N按顺序的索引值

6)异常值处理

使用描述指标,查看哪些数据存在异常

对异常值进行处理之后,再使用描述指标查询一次,无异常值

4、构建模型

业务指标1:月均消费次数=总消费次数/月份数

业务指标2:月均消费金额 = 总消费金额 / 月份数

业务指标3:客单价=总消费金额/总消费次数

业务指标4:消费趋势(绘制折线图)

5、数据可视化

消费趋势和数据可视化将在后期课程学习。

补充知识点:

  • None和NaN的区别

numpy 获取特定数值的索引_入门Numpy、Pandas及案例实践相关推荐

  1. python花式索引_初探Numpy中的花式索引

    Numpy中对数组索引的方式有很多(为了方便介绍文中的数组如不加特殊说明指的都是Numpy中的ndarry数组),比如:基本索引:通过单个整数值来索引数组 import numpy as np arr ...

  2. MySQL第12天:MySQL索引优化分析之性能优化案例实践

    MySQL索引优化分析之性能优化案例实践 执行计划中各select_type含义可以看:MySQL第11天:MySQL索引优化分析之性能分析 https://weibo01.blog.csdn.net ...

  3. numpy 创建加一行_Python数据分析快速入门--NumPy amp; Pandas

    之前为大家分享了python的基本语法,有疑问的小伙伴可以参考下文- 土豆爱数学:零基础如何快速入门python​zhuanlan.zhihu.com 对python基本语法了解后,就可以尝试用pyt ...

  4. ElasticSearch创建、修改、获取、删除、索引Indice mapping和Index Template案例

    为什么80%的码农都做不了架构师?>>>    The best elasticsearch highlevel java rest api-----bboss ElasticSea ...

  5. python数值运算实例_“每天进步一点点”案例学习python数值操作

    这是树哥讲python系列的第四篇文章. 本质上计算机熟悉的是二进制,也就是我们常说的"0,1"代码,所以无论是执行的命令还是数据本身,都必须转化为0和1他们才会认知.而我们熟悉的 ...

  6. js获取数组最大值的索引_数组中最大值的返回索引

    RyanStephen提出了一个问题:Return index of greatest value in an array,或许与您遇到的问题类似. 回答者Ryan给出了该问题的处理方式: This ...

  7. Python获取手机4K壁纸,一个入门练手的案例

    前言 一. 数据来源分析 明确需求, 我们采集网上什么数据内容, 在什么地方 分析我们想要高清原图在什么地方有 浏览器自带工具: 开发者工具 F12 鼠标右键点击 插件 选择 network 刷新网页 ...

  8. 【Python】Numpy数组的切片、索引详解:取数组的特定行列

    [Python]Numpy数组的切片.索引详解:取数组的特定行列 文章目录 [Python]Numpy数组的切片.索引详解:取数组的特定行列 1. 介绍 2. 切片索引 2.1 切片索引先验知识 2. ...

  9. numpy使用[]语法索引二维numpy数组中指定行列位置的数值内容(access value at certain row and column in numpy array)

    numpy使用[]语法索引二维numpy数组中指定行列位置的数值内容(access value at certain row and column in numpy array) 目录

最新文章

  1. 新版ffmpeg PCM编码到AAC,swr_convert转换采样精度,稍微修改兼容PCM编码为G711A及MP3,记录下。
  2. 工作119:axios请求封装
  3. FireFox 继续优化 JS处理性能再度大幅提升
  4. 记录一下使用vue/vuex+SSR框架遇到的bug
  5. 【matplotlib】远程服务器使用报错 $DISPLAY
  6. Qt-lesson2-qss定制/dll封装-20190406
  7. 合成孔径雷达算法与实现_[SAR笔记0]合成孔径雷达成像算法与实现
  8. matlab中心化样本矩阵,第二讲实验.doc
  9. 用java写出死锁的例子_【面试】请写一个java死锁的例子-Go语言中文社区
  10. 【上交OJ】1002:二哥种花生(二维前缀和+二维差分---模版题)
  11. C语言:字符数字转int
  12. Android 放大镜效果实现原理
  13. 用python编译linux内核,戴子轩/RK3399上编译linux-kernel
  14. c语言pow函数原型_c语言pow的用法
  15. java word转图片(word转pdf再转图片)
  16. Ubuntu burg
  17. 电脑常用快捷键与指示灯
  18. 58到家数据库30条军规解读 【转】
  19. 密集创投迎来爆发期 今年会是链游之年么?
  20. C语言讲义2018修订版(黑马程序员)

热门文章

  1. 项目实训-收尾工作-组织协调
  2. java共享内存_Java进程通信之映像文件共享内存
  3. 虾皮马来西亚站点消费趋势分析
  4. 淘宝众筹数据爬取(2)
  5. unity shader实现纹理贴图
  6. 利用python画曲线_利用python画出AUC曲线的实例
  7. 【雷达通信】基于matlab雷达仿真模拟系统【含Matlab源码 150期】
  8. Python批量重命名图片
  9. CSS单行文字和多行文字超出部分省略号显示
  10. Spark开发环境的搭建与配置(基于Linux)