numpy 获取特定数值的索引_入门Numpy、Pandas及案例实践
用Python进行数据分析,需要用到数据分析相关的包,如本文中用到的pandas和numpy包。
本文目录:
- 用python分析一维数据
- 用python分析二维数据
- 案例:销售数据分析
一、一维数据分析
在numpy和pandas这两个包中,都有表示一维数据的特殊数据结构。
在pandas中,一维数据结构是Series
在numpy中,一维数据结构是数组Array
Series 的功能相对numpy的Array要更多,因为Series是建立在Numpy至上的
1.数组Array
1)一般操作
其相关操作类似列表,如查询、切片、循环等。
示例:
![](/assets/blank.gif)
2)Array与列表的区别
1.具有统计功能
如平均值mean()、标准差std()
![](/assets/blank.gif)
2.可以进行向量化计算
- 向量相加
![](/assets/blank.gif)
- 与标量相乘
![](/assets/blank.gif)
- 注意
列表的元素可以是不同的数据类型,而数组Array里面的每一个元素都必须是同一种数据类型。
2.Series
Series相较于Array多了索引,可以在定义的时候指定索引。
示例:
![](/assets/blank.gif)
1)常用操作
- 获取描述统计信息 describe
![](/assets/blank.gif)
- 根据位置获取值 iloc
![](/assets/blank.gif)
- 根据索引获取值
![](/assets/blank.gif)
- 向量相加
![](/assets/blank.gif)
Series中向量是根据相同的索引进行相加的,当相加的两者没有相同的索引时,输出值将是空值NaN。此时可以使用方法dropna来将空值删除
![](/assets/blank.gif)
另外可以采用将缺失值事先进行填充(采用fill_value)的方法。
![](/assets/blank.gif)
二、二维数据结构
在numpy中,使用数组Array来创建二维数据
在pandas中,使用数据框dataframe来创建二维数据
一般来说dataframe更加常用
1.数组Array
示例
![](/assets/blank.gif)
1)一般操作
- 查询元素:[行号,列号]
行号和列号都是从0开始算的,通过相应的行号和列号可以定位到相应的元素
![](/assets/blank.gif)
- 获取某一行所有元素:[对应行的行号, : ]
![](/assets/blank.gif)
- 获取某一列的所有元素: [ :,对应列的列号]
![](/assets/blank.gif)
2)特殊操作
- 数轴参数 axis
默认情况下,对数组Array进行的统计操作都是在所有元素的基础上进行的。在需要按行或列来进行统计计算的时候,需要用到数轴参数。
当axis=1的时候,统计值按行来进行计算
当axis=0的时候,统计值按列来进行计算
![](/assets/blank.gif)
2.数据框 DataFrame
在二维数组上,DataFrame相较于Array有两个优点:
- 每列的数据可以是不同的类型
- 具有索引功能(类似于Series),每行和每列都有索引值
示例
![](/assets/blank.gif)
1)一般操作
iloc属性用于根据位置查询值
- 查询元素:变量名.iloc[元素所在的行,元素所在的列]
![](/assets/blank.gif)
- 获取某一行:变量名.iloc[对应行的行号, : ]
![](/assets/blank.gif)
- 获取某一列:变量名.iloc[:,对应列的列号 ]
![](/assets/blank.gif)
loc属性用于根据索引查询值(更加常用)
- 查询元素:变量名.loc[元素所在的行,需查询的列名]
![](/assets/blank.gif)
- 获取某一行:变量名.loc[对应行的行号, : ]
![](/assets/blank.gif)
- 获取某一列:变量名.iloc[:,对应列的列名]
![](/assets/blank.gif)
查询某几列:变量名[[‘列名1’,‘列名2’]]
![](/assets/blank.gif)
切片功能:指定范围
通过loc方法,也可以切割出从‘购药时间’到‘商品名称’之间的所有列
![](/assets/blank.gif)
### 2)特殊操作
- 建立有序的数据框
直接使用字典结构获得的数据框,其列名的排列顺序有可能是不按照定义时的顺序来进行排列的。因此可以使用OrderedDict来固定顺序
![](/assets/blank.gif)
- 平均值计算
DataFrame是按每列来求平均值的
![](/assets/blank.gif)
- 通过条件判断来筛选出符合要求的数据
![](/assets/blank.gif)
- 查看数据集里面的描述统计信息
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
三、案例
数据分析的五大步骤:提出问题、理解数据、数据清洗、构建模型、数据可视化
本次使用的数据集是朝阳医院的销售数据
1、提出问题
获取月均消费次数、月均消费金额、客单价、消费趋势
2、理解数据
1)读取数据
![](/assets/blank.gif)
2)打印前五行,看看数据集都有哪些参数
![](/assets/blank.gif)
3)查看数据集有几行几列
![](/assets/blank.gif)
4)查看各列的数据类型
![](/assets/blank.gif)
3、数据清洗
数据清洗包括六个步骤:
- 选择子集(选择本次分析所需的列)
- 列名重命名(列名不符合使用习惯等)
- 缺失数据处理
- 数据类型转换
- 数据排序
- 异常值处理
1)选择子集
![](/assets/blank.gif)
2)列名重命名
![](/assets/blank.gif)
3)缺失数据处理
Python的缺失值有3种:
- Python内置的None值
- Pandas中的缺失值NA,表示不可用not available
- 对于数值数据,Pandas使用浮点值NaN(not a number)表示缺失数据。如提示有Float错误,就表明存在缺失值。
因此,缺失值总共有3种:None,NA,NaN
缺失数据处理有两种方法:
- 直接删除缺失数据
- 通过建立模型来补齐缺失值
![](/assets/blank.gif)
4)数据类型转换
- 将字符串转换为数值
![](/assets/blank.gif)
- 将字符串转换为日期格式
需要使用split方法,先将日期和星期分开
![](/assets/blank.gif)
分开之后,销售时间列只有日期值,此时的日期值仍然是字符串,需要将其转换为日期。
![](/assets/blank.gif)
通过转换,销售时间已经由字符串转换为日期,转换过程中不符合日期格式的数值会被转换为空值,需要将其删除。
![](/assets/blank.gif)
5)数据排序
打印排序之前的数据集
![](/assets/blank.gif)
通过代码让数据集按销售日期进行排序
![](/assets/blank.gif)
打印排序后的数据集
![](/assets/blank.gif)
进行排序之后,各行的索引值还是之前的行号,需要将其修改为从0到N按顺序的索引值
![](/assets/blank.gif)
6)异常值处理
使用描述指标,查看哪些数据存在异常
![](/assets/blank.gif)
![](/assets/blank.gif)
对异常值进行处理之后,再使用描述指标查询一次,无异常值
![](/assets/blank.gif)
4、构建模型
业务指标1:月均消费次数=总消费次数/月份数
![](/assets/blank.gif)
业务指标2:月均消费金额 = 总消费金额 / 月份数
![](/assets/blank.gif)
业务指标3:客单价=总消费金额/总消费次数
![](/assets/blank.gif)
业务指标4:消费趋势(绘制折线图)
5、数据可视化
消费趋势和数据可视化将在后期课程学习。
补充知识点:
- None和NaN的区别
![](/assets/blank.gif)
numpy 获取特定数值的索引_入门Numpy、Pandas及案例实践相关推荐
- python花式索引_初探Numpy中的花式索引
Numpy中对数组索引的方式有很多(为了方便介绍文中的数组如不加特殊说明指的都是Numpy中的ndarry数组),比如:基本索引:通过单个整数值来索引数组 import numpy as np arr ...
- MySQL第12天:MySQL索引优化分析之性能优化案例实践
MySQL索引优化分析之性能优化案例实践 执行计划中各select_type含义可以看:MySQL第11天:MySQL索引优化分析之性能分析 https://weibo01.blog.csdn.net ...
- numpy 创建加一行_Python数据分析快速入门--NumPy amp; Pandas
之前为大家分享了python的基本语法,有疑问的小伙伴可以参考下文- 土豆爱数学:零基础如何快速入门pythonzhuanlan.zhihu.com 对python基本语法了解后,就可以尝试用pyt ...
- ElasticSearch创建、修改、获取、删除、索引Indice mapping和Index Template案例
为什么80%的码农都做不了架构师?>>> The best elasticsearch highlevel java rest api-----bboss ElasticSea ...
- python数值运算实例_“每天进步一点点”案例学习python数值操作
这是树哥讲python系列的第四篇文章. 本质上计算机熟悉的是二进制,也就是我们常说的"0,1"代码,所以无论是执行的命令还是数据本身,都必须转化为0和1他们才会认知.而我们熟悉的 ...
- js获取数组最大值的索引_数组中最大值的返回索引
RyanStephen提出了一个问题:Return index of greatest value in an array,或许与您遇到的问题类似. 回答者Ryan给出了该问题的处理方式: This ...
- Python获取手机4K壁纸,一个入门练手的案例
前言 一. 数据来源分析 明确需求, 我们采集网上什么数据内容, 在什么地方 分析我们想要高清原图在什么地方有 浏览器自带工具: 开发者工具 F12 鼠标右键点击 插件 选择 network 刷新网页 ...
- 【Python】Numpy数组的切片、索引详解:取数组的特定行列
[Python]Numpy数组的切片.索引详解:取数组的特定行列 文章目录 [Python]Numpy数组的切片.索引详解:取数组的特定行列 1. 介绍 2. 切片索引 2.1 切片索引先验知识 2. ...
- numpy使用[]语法索引二维numpy数组中指定行列位置的数值内容(access value at certain row and column in numpy array)
numpy使用[]语法索引二维numpy数组中指定行列位置的数值内容(access value at certain row and column in numpy array) 目录
最新文章
- 新版ffmpeg PCM编码到AAC,swr_convert转换采样精度,稍微修改兼容PCM编码为G711A及MP3,记录下。
- 工作119:axios请求封装
- FireFox 继续优化 JS处理性能再度大幅提升
- 记录一下使用vue/vuex+SSR框架遇到的bug
- 【matplotlib】远程服务器使用报错 $DISPLAY
- Qt-lesson2-qss定制/dll封装-20190406
- 合成孔径雷达算法与实现_[SAR笔记0]合成孔径雷达成像算法与实现
- matlab中心化样本矩阵,第二讲实验.doc
- 用java写出死锁的例子_【面试】请写一个java死锁的例子-Go语言中文社区
- 【上交OJ】1002:二哥种花生(二维前缀和+二维差分---模版题)
- C语言:字符数字转int
- Android 放大镜效果实现原理
- 用python编译linux内核,戴子轩/RK3399上编译linux-kernel
- c语言pow函数原型_c语言pow的用法
- java word转图片(word转pdf再转图片)
- Ubuntu burg
- 电脑常用快捷键与指示灯
- 58到家数据库30条军规解读 【转】
- 密集创投迎来爆发期 今年会是链游之年么?
- C语言讲义2018修订版(黑马程序员)