numpy基础

1.numpy创建数组及基础属性

numpy是数据处理的基础,pandas也是基于numpy的,首先是numpy数组的创建。
一般我们默认导入了一下库

import numpy as np
import pandas as pd

1.numpy创建数组及基础属性

arr=np.array([[1,2,3],[4,5,6],[7,8,9]])

本文使用的编译环境是jupyter notebook,python3.7。如果想要安装jupyter可以参考我的另一篇文章点击此处不过只要是python3的版本都可以运行,也可以选择自己喜欢的编译器,不影响程序运行
在这里插入图片描述

numpy的核心特征之一就是N-维数组对象----ndarray。一个ndarray的每个元素均为相同类型
numpy的基础属性:shape ,dtype ,ndim, size
每一个数组都有一个shape属性用来表征数组每一维度的数量;每个数组都有一个dtype属性用来描述数组的数据类型。ndim返回数组的维数。size返回数组元素个数。
在这里插入图片描述

2.数组的特点

数组可以进行矢量运算,比如如果想把list的每个元素平方,用list ** 2这样的运算会报错,而数组不会
在这里插入图片描述

3.创建常见数组

除了np.array还有很多函数可以创建新数组,例如np.zeros可以一次行创建全0数组,ones可以一次性创建全1数组,empty则可以创建没有初始化的数组(np.empty有时会返回未初始化的垃圾值)。
在这里插入图片描述eye创建对角线全为1的二维数组
在这里插入图片描述np.logspace(start=开始值,stop=结束值,num=元素个数,base=指定对数的底, endpoint=是否包含结束值)base默认为10
在这里插入图片描述在这里插入图片描述np.linspace()创建等差数列 ,(start=开始值,stop=结束值,num=元素个数)
在这里插入图片描述

np.diag() 创建对角数组
在这里插入图片描述

arange是Python内建函数range的数组版
在这里插入图片描述Numpy没有特别指明的话,默认的数据结构是float64

4.数组数据类型

数据类型,即dtype也称元数据,表示数据的数据
在这里插入图片描述
数据类型的转化,可以用astype方法显式的转换数组的数据类型,也可以直接用函数转换。

在这里插入图片描述

5.生成随机数

生成无约束条件的随机数
在这里插入图片描述生成指定shape的均匀随机数
在这里插入图片描述生成符合正太分布的随机数
在这里插入图片描述random具体函数用法
在这里插入图片描述

6.一维数组索引

在这里插入图片描述单个元素索引
在这里插入图片描述
连续元素切片特点是左闭右开

在这里插入图片描述只取了前两位,因为取不到2
在这里插入图片描述注意[]内都是切片的,返回的维度不会发生改变,如上图,而将索引和切片混合就可以得到低纬度的切片。如
在这里插入图片描述同时注意切片和索引的区别(切片会保留原数据的结构)
在这里插入图片描述虽然返回的是同一个元素,但是维度不同,切片返回的是一个数组,是一个矢量

7.布尔索引

举个例子就非常容易明白了
在这里插入图片描述只有索引为True的会返回,所以可以根据这一特点筛选想要的数据
在这里插入图片描述注意Python的关键字and和or对布尔数组并没有用,请使用&(and)和 |(or)来代替。

8. 多维数组的索引

  1. 多维数组的索引
    首先用reshape函数重构一个多维数组
    在这里插入图片描述这是一个二维数组,假如我们要取12这个元素,那么我们要找出12所在的行列索引,中间用逗号隔开
    在这里插入图片描述
    对二维数组的切片与一维数组类似
    在这里插入图片描述也可以逻辑索引和切片混合
    在这里插入图片描述

9.实际问题

9.实际问题
求解距离距离矩阵
在这里插入图片描述代码
在这里插入图片描述

10.数组的转置和换轴

转置是一种特殊的数据重组形式,可以返回底层数据的视图而不需要复制任何内容。
在这里插入图片描述还有就是数组的展平ravel函数flatten函数等

在这里插入图片描述还有一些其他的用法
在这里插入图片描述在这里插入图片描述这里只介绍部分用法
在这里插入图片描述数组的换轴,transpose方法可以接收包含轴编号的元组,具体用法点击此处

11.Numpy矩阵介绍

首先是矩阵的生成
在这里插入图片描述

  • mat函数mat可以从字符串或者列表中生成,其中字符串的表示中,矩阵的行与行之间用分号隔开,行内的元素之间用空格隔开(也可以用逗号)。
  • numpy.matrix(data, dtype=None, copy=True)如果date是字符串则将其解释为以逗号或空格分隔列的矩阵,以及分隔行的分号。

矩阵运算
在这里插入图片描述

矩阵的属性
在这里插入图片描述在这里插入图片描述

12.通用函数介绍

在这里插入图片描述一元通用函数:

函数名描述
abs,fabs逐元素的计算整数 浮点数或复数的绝对值
sqrt计算每个元素的平方根
exp计算每个元素的自然指数值

二元通用函数

函数名描述
multiply将数组的对应元素相乘
add将数组的对应元素相加
subtract在第二个数组中,将第一个数组中的包含的元素去除

在这里插入图片描述这部运算涉及到下面要讲的广播机制

13数组广播机制

广播描述了算法如何在不同形状的数组之间进行运算,它是一个强大的功能。
广播机制的原则是:如果对于每个结尾维度(及从尾部开始的),轴长度都匹配或者其中一个是1,两个数组就是可以兼容广播的。
下面举一个反例
像这种就是不能广播的

在这里插入图片描述一维数组【1,2,3】会向下进行广播,变成和二维数组相同的shape,然后对应元素相加
在这里插入图片描述然后是二维数组的广播
在这里插入图片描述注意这两数组都是二维数组,不过第二个数组只有一列,数组向右进行广播

在这里插入图片描述在这里插入图片描述

14Numpy读写二进制文件

实际情况中使用较少
在这里插入图片描述在这里插入图片描述保存多个数组到一个文件中,注意不能直接print输出文件内容,而要指明查看的文件中的具体数据对象
在这里插入图片描述

15Numpy读写文本文件

在这里插入图片描述delimiter:指定文件分割符
在这里插入图片描述

pandas基础

1Pandas简介

pandas有两个常用的数据结构:Serise和DataFrame。
Serise是一种一维的有数据标签的数组型对象,DataFrame二维数据表,既有行索引也有列索引
pandas在数据分析处理中有非常重要的地位,具有一下特点:
在这里插入图片描述

2.pandas读取文本文件

1.文本文件读取
在这里插入图片描述一般使用pd.read_csv读取csv文件,read_table读取文本文件。两者的参数基本相同
在这里插入图片描述在这里插入图片描述注意读取文件的时候一定要清楚文件的分割符是什么,以及文件的编码格式:utf-8,utf-16,gbk,gb2312,gb18030。后三种是多用于中文的解码
如果编码格式不对的话就会出现乱码的情况,如下
在这里插入图片描述加上编码格式
在这里插入图片描述如果数据中没有列名称读取数据可以设置参数header=None
在这里插入图片描述
数据量过大,以下图片均为部分数据展示
在这里插入图片描述

3存储数据框

在这里插入图片描述在这里插入图片描述在这里插入图片描述数据保存会默认传递index
在这里插入图片描述左边比原数据多了一列从0开始的index
在这里插入图片描述

如果想保留原数据可以设参数index=None
在这里插入图片描述不要列名称可以使用header=None
在这里插入图片描述读取和存储的时候都有header参数,注意区分

4.pandas读取excel文件

1.excel文件读取
在这里插入图片描述在这里插入图片描述在这里插入图片描述想要读取不同的表只需要设置参数sheet_name
在这里插入图片描述

5将数据框存储为excel文件

在这里插入图片描述这样保存数据左边也会出现一列从0开始的index,可以加参数index
在这里插入图片描述s

6.构建数据框

一维序列,类比列表,但是每个元素具有名称。如果从DataFrame中取出一列返回的数据结构就是Series。
在这里插入图片描述也可以直接用字典构建Series
在这里插入图片描述创建DataFrame,可以用列表充当data
在这里插入图片描述可以指定index和列名称(columns)

在这里插入图片描述也可以用字典创建DataFrame,这样的话字典的键就会充当类名称,值就是数据源
在这里插入图片描述

还可以创建一些特殊的DataFrame,如果不传入data参数,就会创建缺失值型的数据框
在这里插入图片描述还可以创建全零
在这里插入图片描述

7.查看数据框的常用属性

查看DataFrame的常见属性
在这里插入图片描述在这里插入图片描述

8. 按行列顺序访问数据框中的元素

在这里插入图片描述首先就是单列数据访问
在这里插入图片描述访问任意两列
在这里插入图片描述如果你只需要看数据的前几行可以
在这里插入图片描述看数据的后几行
在这里插入图片描述
如果想访问数据框中某个特定的元素,iloc函数指明元素所在的行列
在这里插入图片描述取某一行或者某一列
在这里插入图片描述行列顺序访问也可使用切片的方法
注意获取到的数据的数据结构
在这里插入图片描述因为df.iloc[:,0:1] 左右都是索引,维度不变。

9.按行列名称访问数据框中的元素

当数据框的数量较大的时候,按顺序访问较为麻烦,这时后可以采用按行列名称访问数据框中的元素。
先构建一个新的数据框
在这里插入图片描述使用loc函数进行名称的访问
在这里插入图片描述注意按照行列名称进行访问的时候,切片df.loc['a':'c','C']是闭区间,从‘a’到‘c’,因为按位置索引的时候可以判断3前面的数是2,而计算机无法判断‘c’前面的一个数是什么。

10.修改数据框中的元素

在这里插入图片描述例如

在这里插入图片描述对整列数据进行修改,有两种方式
在这里插入图片描述

增加数据
在这里插入图片描述

11.删除数据框的元素

删除某行或某列需要用到pandas提供的方法drop
在这里插入图片描述注意默认inplace=False,不对原数据修改
在这里插入图片描述如果想要修改原数据
在这里插入图片描述删除行
在这里插入图片描述

12.描述分析数据框中的元素

数值型特征的描述性统计-----Numpy中的描述性统计函数。
pandas库基于Numpy,自然也可以用这些函数对数据框进行描述性统计。
在这里插入图片描述首先构建数据框
在这里插入图片描述每一行的均值
在这里插入图片描述用pandas自带的方法的形式
在这里插入图片描述了解数据的整体分布情况
在这里插入图片描述还可以统计每一列元素的计数结果,也就是统计这一列每个元素的出现次数
在这里插入图片描述

13.转换成时间类型数据

pands时间相关的类
在多数情况下,对时间类型数据进行分析的前提就是将原本为字符串的时间转换为标准时间类型。pandas继承了NumPy库和datetime库的时间相关模块,提供了6种时间相关的类。
在这里插入图片描述Timestamp作为时间类中最基础的,也是最为常用的类型,在多数情况下,时间相关的字符串都会转换成为Timestamp。pandas提供了to_datetime函数,能够实现这一目标
首先我们的数据是点击此处
提取码p53u
在这里插入图片描述'lock_time’不是我们想要的时间类型
在这里插入图片描述

除了将数据字原始DataFrame中直接转换为Timestamp格式外,还可以将数据单独提取出来将其转换
为DatetimeIndex或者PeriodIndex。
转换为PeriodIndex的时候需要注意,需要通过freq参数指定时间间隔,常用的时间间隔有Y为年,M为月,D为日,H为小时,T为分钟,S为秒。两个函数可以用来转换数据还可以用来创建时间序列数据,其参数非常类似。
在这里插入图片描述参数设置
在这里插入图片描述

14.时间类型数据的常用操作

Timestamp类常用属性
在多数涉及时间相关的数据处理,统计分析的过程中,需要提取时间中的年份,月份等数据,使用对应的Timestamp类属性就能够实现这一目的。
在这里插入图片描述
比如获取当前时间的年份,对单个数据的操作是
在这里插入图片描述
如果想要对一列进行操作
在这里插入图片描述还可以进行时间的加减
在这里插入图片描述

15.groupby分组操作

首先读入我们的数据,数据在上面的网盘链接里
在这里插入图片描述从中提取三列数据,以’order_id’为分组依据
在这里插入图片描述分组后的结果是不能直接访问的,需要进行agg操作

16.agg操作

比如对数据进行求均值
在这里插入图片描述
还可以同时进行多种操作
在这里插入图片描述还可以采用字典的形式,对不同列进行不同的函数处理
在这里插入图片描述你也可以自定义函数操作
在这里插入图片描述

17.透视表

透视表是数据分析中进行数据分类聚合的重要工具
index:行索引
aggfunc:聚合方法(np.sum等)默认是np.mean

在这里插入图片描述columns是列索引
values是要统计的数据
在这里插入图片描述透视表的详解可以看这里这里

18.交叉表

透视表一般用于统计出现的次数
在这里插入图片描述
pandas 的更多操作点击

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐