Anacoda&Jupyter DAY 01 数据清洗入门 numpy
·
Anacoda&Jupyter DAY 01 数据清洗工具入门 numpy
一 Jupyter 入门操作
前言:该部分建立在下载并安装 Anacoda Navigator 的基础上使用的操作 其中使用的Jupyter的部分操作也是建立在此 安装后并配置好环境变量即可操作 这里就不详细解释安装和配置了
一 启动程序
- 启动程序
打开cmd
输入 activate root
使用cmd命令提示符(cd等) 进入到需要编辑的项目文件夹
输入 jupyter notebook
二 Ipython的帮助文档
- 使用help
通过以下命令获得帮助文档
如: help(len)
#Help on built-in function len in module builtins:
#len(obj, /)
#Return the number of items in a container.
如此会显示有关于len 函数的相关描述 - 使用? 和 ??
该方法可以应用到自定义变量和自定义函数上来返回帮助文档 此外 使用两个?? 可以把函数的源代码显示出来
如: len?
len??
即可返回帮助文档 - Tab自动补全
使用tab键可以实现自动补全的操作 使用tab会弹出下拉选项 可以拥有提示的功能
三Ipython的魔法命令
- 运行外部python文件
使用以下命令可以运行外部python文件(默认是当前目录 最好加上绝对路径)
%run myscript.ipynb # 改方法相当于运行了外部的python文件
尤其需要注意的是 当我们使用魔法命令执行了一个外部文件的时候 该文件的函数就就能在当前绘画中使用
如在 myscript.ipynb 这个文件内定义了一个函数如下:
def square(n):
return n**2
那么在%run myscript.ipynb 之后 可以直接使用改方法(函数) - 运行计时
-
使用下面的命令运行计时
%time statement
如: %time %run myscript.ipynb -
使用以下命令可以计算平均运算时间
%timeit statement
timeit 会多次运行statement 最后得到一个更为精确的语气运行时间 -
使用两个百分号 可以测试多行代码的平均运行时间
%%timeit
statement1
statement2
statement3
tips: 1. %time 一般用于耗时长的代码段 2. %timeit 一般用于耗时短的代码段
-
- 查看当前回鹘啊中所有的变量与函数名称
-
快速查看当前会话中的所有变量与函数名称
%who -
查看当前回鹘啊所有变量以及变量的详细信息
%whosVariable Type Data/Info
N int 3
square function <function square at 0x000001E2F54F0378> -
返回一个字符串列表 里面的元素是当前会话的所有变量与函数的名称
%who_ls # [‘N’, ‘square’]
-
- 执行Linux命令
在Linux指令之前加入! ,即可在ipython中执行Linux命令
注意: 会将标准输出一字符串的形式返回 - 更多魔法命令
列出所有魔法命令: lsmagic 这里就不详细说明各个魔法命令的具体作用了
四 notebook的快捷键
- 命令模式
- Enter : 转入编辑模式
- Shift+Enter : 运行本单元 选中下个单元
- Ctrl + Enter : 运行本单元
- Alt + Enter : 运行本单元 在下面插入一单元
- Y : 单元转入代码模式
- M : 单元转入markdown模式
- A : 在上方插入新单元 above
- B : 在下方插入新单元 below
- 编辑模式 Enter键启动
- Tab : 代码补全或者缩进
- Shift - Tab : 提示
- Ctrl + A : 全选
- Ctrl + Z : 复原
二 numpy get start
数据分析三剑客
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
一 创建array
- 使用numpy.array() 由 list 创立
注意:- numpy默认的ndarray的所有元素的类型是相同的
- 如果传进来的列表中包含不同的类型 则统一为同一类型 优先级 str>float>int
操作1:
l = [1,4,5,6,3]
n = np.array(l)
print(n)
操作2:
display(n,l) # 可以显示多个
操作3:
n = np.array([1,3.14,‘0’])
1# 关注数组格式优先级
- 使用np的routines函数创建
- np.ones((3,4)) # 创立3*4的全是1的数组 二维数组
- np.zeros((3,4)) # 创立3*4的全是0的数组 二维数组
- np.fill((3,4),8) # 创立3*4的全是数字8的数组 # 这里填充的数字可以由用户自定义
- np.eye(6,6,dtype = int) # 创立6*6的数组 对角线为1 其余为0
- np.eye(6,6,k=2,dtype = int) # 创立6*6数组 k为偏移量 正数为向右偏移 负数为向左偏移
- np.linspace(0,100,num = 51,dtype = float,retstep = True,endpoint = False) # 创建0至100的等差数列 num表示一共有51个数字 dtype表示设定输出的数组中的数字为浮点数 retstep=True 表示输出等差数列的公差 endpoint = True 表示加入最后一个数(后面为闭区间)
- np.arange(0,10,2) # 表示创建以0为始 10为开区间 步长为2的一维数组
- np.random.randint(3,10) 随机整数数列[3,10)
- np.random.randint(3,10,size=(2,4)) # 随机创建2*4的二维数组 数字区间为整数区间[3,10)
- np.random.randn(10) # 标准正态分布 一共十个数字组成的一维数组 (随机数 以0为中心)
- np.random.normal(170,5,size =(3,4)) 标准正态分布 以170为中心 5为偏移量
- np.random.random(size = (4,5)) # 创建一个4*5的数组 数字区间为(0,1)
二 ndarray属性
4个必记的参数 : ndim维度 ,shape形状 , size总长度 , dtype元素类型
三 ndarray 的基本操作
- 索引
一维与列表完全一致 多维同理
如: n = np.arange.randint(0,10,size = (4,5))
[[4 8 9 5 6]
[2 5 5 6 6]
[4 7 7 5 5]
[8 4 1 7 6]]- n[3][1] # 4
- n[3,1] # 4
- n[3,:] # array([8, 4, 1, 7, 6])
- n[:,3] # array([5, 6, 5, 7])
- 三维数组 和 数据修改 同列表
- 切片
一维与列表完全一致 多维同理
如: n = np.random.randint(0,100,size = (5,6))
array([[52, 87, 30, 67, 79, 47],
[13, 75, 76, 8, 97, 70],
[28, 40, 76, 74, 12, 9],
[62, 55, 92, 26, 77, 17],
[77, 29, 77, 40, 92, 84]])
1. # 上下翻转
n[::-1]
array([[60, 10, 54, 8, 26, 57],
[ 6, 49, 26, 75, 63, 45],
[61, 43, 20, 29, 88, 35],
[84, 30, 73, 55, 37, 10],
[52, 83, 55, 52, 51, 68]])
2. # 左右翻转
n[:,::-1]
array([[68, 51, 52, 55, 83, 52],
[10, 37, 55, 73, 30, 84],
[35, 88, 29, 20, 43, 61],
[45, 63, 75, 26, 49, 6],
[57, 26, 8, 54, 10, 60]]) - 变形
使用reshape,注意参数是一个tuple- n = np.arange(10)
np.reshape(n,(2,5)) # 更改一维数组维2*5的二维数组 - n = np.arange(10).reshape((2,5))
- 遇到比较长的数组 可以使用:
n.reshape((-1,3)) # 这里表示为行数自动匹配 每一列3个数字
- n = np.arange(10)
- 级联
使用np.concatenate() 级联需要注意的点- 级联的参数是列表 : 一定要加中括号 或者小括号
- 维度必须相同
- 形状相符
- 级联的方向默认是shape这个tupele第一个值代表的维度方向
- 可以通过axis参数改变级联的方向
tips: 如果要使用上下级联 那么级联的两个数组必须是二维以上数组 因为np.concatenate()的级联 不会创造高维度的数组 (vshape可以) 所以为了防止报错 在两个符合标准的一维数组在使用该方法之前需要处理一下数据 使用 n1 = n[np.newaxis,:]的方法可以创造二维数组 如将:[1 2 4 5 7 8]变成[[1 2 4 5 7 8]] - 水平级联 np.concatenate((n1,n2),axis = 1)
- 垂直级联 np.concatenate((n1,n2),axis = 0)
- hp.hstack(水平级联) 和 hp.vstack(垂直级联)
处理自己 进行维度的变更
- 拆分
np.split(n,3,axis = 0) # 第一个是需要拆分的数组名 3指的是拆分为三份
np.vsplit() 垂直拆分
np.hsplit() 水平拆分
np.arrary_split() 可以实现非等分拆分 - 副本(拷贝)
由于数组和列表的储存方式类似 所以我们需要使用
n1 = n.copy() 进行深拷贝 不然改变其中之一将会一起改变
四 ndarray的聚合操作
- 求和np.sum
n = np.arange(10)
np.sum(n)
45
n1 = np.arange(10).reshape(2,5)
np.sum(n1,axis=1)
array([10, 35]) - 最大最小值:np.max/ np.min
同理
更多推荐
所有评论(0)