数据分析基础numpy、pandas

数据分析基础

使用工具Jupyter

基本指令

1.使用?进行查询帮助

下面展示一些 内联代码片

len?
#??可以打印函数源码
len??
#tab可以进行代码补全,按住shift,快速按两下tab可查看函数参数提示

ipython的魔术语法

# %run + 脚本目录  ---执行脚本
# %time ---执行一次命令的时间
#%timeit ---平均时间
!dir---查看目录

Numpy基础

导包

#导入相关包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
np.__version__

读取图片

a=plt.imread('C:/Users/Desktop/1111.jpg')
a#a为ndarray类型,可以理解为矩阵
plt.imshow(a)#显示图片用matplotlib.pyplot

创建ndarray

1.使用np.array 由python list 创建
l=[1.0,2,3,4,5]
n=np.array(l)#用列表初始化ndarray
display(l)#列表
display(n)#ndarray
#注意ndarray会自动将内部数据转化为统一格式,优先级:str>float>int
2.使用np的routines函数创建

1)使用np.ones创建

np.ones(shape=(3,4),dtype=np.float32)#三行四列,元素皆为1

2)使用np.zeros创建

np.zeros(shape=(5,6),dtype=np.int16)#五行六列,元素皆为0

3)使用np.full创建

np.full(shape=(3,4),fill_value=9,dtype=np.int16)

4)使用np.eye生成对角线为1的ndarray

np.eye(5,6,k=-2)#k代表对角线上的坐标

对应产生的结果为(k代表对角线偏移量,负数代表左下,正数代表右上)
在这里插入图片描述
5) 使用np.linspace 创建ndarray—对某个线段等分,加上retstep返回一个元组

np.linspace(0,100,num=25,endpoint=False,retstep=True)
#endpoint即区间端点是否包含,num表示25等分

6) 使用np.arange创建ndarray

np.arange(0,100,4)

结果如下:
在这里插入图片描述
7)使用np.random.randint创建ndarray

np.random.randint(0,200,size=(2,3,4,3))
#各个元素为0-200的随机数

8)正态分布np.random.normal:loc为均值,scale为形状,size为ndarray的形状

np.random.normal(loc=10,scale=3,size=(1000,3))

9)标准正态分布np.random.normal

np.random.randn(2,3,4)

结果如下:
在这里插入图片描述
10)利用np.random.random生成0-1左闭右开的随机数

np.random.random(size=(1,2,2))

ndarray的属性

ndim维度,shape形状,size元素的个数,dtype元素类型
可直接用.调用查看,例如

n=np.random.randint(1,3,size=(3,4,5))
n.size

ndarray的基本操作

1.索引

1)先创建一个ndarray

n1=np.random.randint(0,100,size=(3,4,2))
n1

n1显示结果为:
在这里插入图片描述
2)进行索引

n1[1,2,0]#结果为97,注意下标从0开始,故结果为97
2.切片

1)正常切片

n1[1:3,0:1]#不同维度的切片用,分隔

结果为:
在这里插入图片描述
2)切片反转

#切片技巧
n1[::-1]#对第一个维度反转
n1[:,::-1]#对第二个维度反转
3.变形

先创建一个ndarray

n2=np.random.randint(0,100,size=(4,5))
n2

结果为:
在这里插入图片描述
现在进行reshape

n2.reshape(5,4)#要求元素总数一致

结果:在这里插入图片描述

4.级联

级联类似于将两个ndarray进行横向或者纵向拼接

n1=np.random.randint(0,100,size=(4,5))
n2=np.random.randint(0,100,size=(6,5))
display(n1,n2)
np.concatenate((n1,n2),axis=0)#垂直级联
#也可以用np.hstack和np.vstack进行水平和垂直级联,这样就不需要指定axis了

结果:
在这里插入图片描述

5.切分

切分和切片很像,不同的是切分返回的是一个list(将ndarray放到一个list中)

n=np.random.randint(0,100,size=(6,6))
n

结果如下:
在这里插入图片描述

np.split(n,[2,4],axis=0)#返回一个包含ndarray的列表,[2,4]代表从2,4索引位置切开 
#也可以用np.hsplit和np.vsplit进行水平和垂直级联

结果为:
在这里插入图片描述

ndarray的聚合操作

聚合操作和数据库的聚合操作类似,基本上就是求和、计数、取平均等等
先创建一个ndarray

n=np.random.ranint(1,10,size=(3,4))
n
1.求和
n.sum()#求所有元素总和
n.sum(axis=0)#求所有行元素总和,返回一个ndarray
n.max(axis=1)#求所有列元素总和,返回一个ndarray
2.笛卡尔积

可使用np.product()进行笛卡尔积

3.NaN说明

NaN refers to Not a Number.
NaN一般用于表示numpy,pandas里面的空数据;
如果数据中存在一个nan,则聚合结果总是nan

n3=np.array([1,2,3,np.nan,4])
n3.sum()#nan
np.nansum(n3)#将nan视为0

ndarray的矩阵操作

1.ndarray的矩阵操作
n=np.random.randint(1,10,size=(3,4))
n

结果为:
在这里插入图片描述

n+1#矩阵的每一个元素加一
2.广播机制(broadcast mechanism)

当运算的ndarray的shape不一样的时候,numpy就会启动广播机制,目的是让运算的两个ndarray的shape变成一样,从而可以计算
规则一:为缺失的维度补1
规则二:假定缺失元素用已有值填充

m=np.ones(shape=(2,3))
n=np.arange(3)
display(m,n)

结果为:
在这里插入图片描述

m+n

结果为:
array([[1., 2., 3.],
[1., 2., 3.]])
现在详细叙述其机制:
step1:m

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值