Anacoda&Jupyter DAY 01 数据清洗工具入门 numpy

一 Jupyter 入门操作

前言:该部分建立在下载并安装 Anacoda Navigator 的基础上使用的操作 其中使用的Jupyter的部分操作也是建立在此 安装后并配置好环境变量即可操作 这里就不详细解释安装和配置了

一 启动程序
  1. 启动程序
    打开cmd
    输入 activate root
    使用cmd命令提示符(cd等) 进入到需要编辑的项目文件夹
    输入 jupyter notebook
二 Ipython的帮助文档
  1. 使用help
    通过以下命令获得帮助文档
    如: help(len)
    #Help on built-in function len in module builtins:
    #len(obj, /)
    #Return the number of items in a container.
    如此会显示有关于len 函数的相关描述
  2. 使用? 和 ??
    该方法可以应用到自定义变量和自定义函数上来返回帮助文档 此外 使用两个?? 可以把函数的源代码显示出来
    如: len?
    len??
    即可返回帮助文档
  3. Tab自动补全
    使用tab键可以实现自动补全的操作 使用tab会弹出下拉选项 可以拥有提示的功能
三Ipython的魔法命令
  1. 运行外部python文件
    使用以下命令可以运行外部python文件(默认是当前目录 最好加上绝对路径)
    %run myscript.ipynb # 改方法相当于运行了外部的python文件
    尤其需要注意的是 当我们使用魔法命令执行了一个外部文件的时候 该文件的函数就就能在当前绘画中使用
    如在 myscript.ipynb 这个文件内定义了一个函数如下:
    def square(n):
    return n**2
    那么在%run myscript.ipynb 之后 可以直接使用改方法(函数)
  2. 运行计时
    1. 使用下面的命令运行计时
      %time statement
      如: %time %run myscript.ipynb

    2. 使用以下命令可以计算平均运算时间
      %timeit statement
      timeit 会多次运行statement 最后得到一个更为精确的语气运行时间

    3. 使用两个百分号 可以测试多行代码的平均运行时间
      %%timeit
      statement1
      statement2
      statement3
      tips: 1. %time 一般用于耗时长的代码段 2. %timeit 一般用于耗时短的代码段

  3. 查看当前回鹘啊中所有的变量与函数名称
    1. 快速查看当前会话中的所有变量与函数名称
      %who

    2. 查看当前回鹘啊所有变量以及变量的详细信息
      %whos

      Variable Type Data/Info
      N int 3
      square function <function square at 0x000001E2F54F0378>

    3. 返回一个字符串列表 里面的元素是当前会话的所有变量与函数的名称
      %who_ls # [‘N’, ‘square’]

  4. 执行Linux命令
    在Linux指令之前加入! ,即可在ipython中执行Linux命令
    注意: 会将标准输出一字符串的形式返回
  5. 更多魔法命令
    列出所有魔法命令: lsmagic 这里就不详细说明各个魔法命令的具体作用了
四 notebook的快捷键
  1. 命令模式
    1. Enter : 转入编辑模式
    2. Shift+Enter : 运行本单元 选中下个单元
    3. Ctrl + Enter : 运行本单元
    4. Alt + Enter : 运行本单元 在下面插入一单元
    5. Y : 单元转入代码模式
    6. M : 单元转入markdown模式
    7. A : 在上方插入新单元 above
    8. B : 在下方插入新单元 below
  2. 编辑模式 Enter键启动
    1. Tab : 代码补全或者缩进
    2. Shift - Tab : 提示
    3. Ctrl + A : 全选
    4. Ctrl + Z : 复原

二 numpy get start

数据分析三剑客
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

一 创建array
  1. 使用numpy.array() 由 list 创立
    注意:
    1. numpy默认的ndarray的所有元素的类型是相同的
    2. 如果传进来的列表中包含不同的类型 则统一为同一类型 优先级 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# 关注数组格式优先级
  2. 使用np的routines函数创建
    1. np.ones((3,4)) # 创立3*4的全是1的数组 二维数组
    2. np.zeros((3,4)) # 创立3*4的全是0的数组 二维数组
    3. np.fill((3,4),8) # 创立3*4的全是数字8的数组 # 这里填充的数字可以由用户自定义
    4. np.eye(6,6,dtype = int) # 创立6*6的数组 对角线为1 其余为0
    5. np.eye(6,6,k=2,dtype = int) # 创立6*6数组 k为偏移量 正数为向右偏移 负数为向左偏移
    6. np.linspace(0,100,num = 51,dtype = float,retstep = True,endpoint = False) # 创建0至100的等差数列 num表示一共有51个数字 dtype表示设定输出的数组中的数字为浮点数 retstep=True 表示输出等差数列的公差 endpoint = True 表示加入最后一个数(后面为闭区间)
    7. np.arange(0,10,2) # 表示创建以0为始 10为开区间 步长为2的一维数组
    8. np.random.randint(3,10) 随机整数数列[3,10)
    9. np.random.randint(3,10,size=(2,4)) # 随机创建2*4的二维数组 数字区间为整数区间[3,10)
    10. np.random.randn(10) # 标准正态分布 一共十个数字组成的一维数组 (随机数 以0为中心)
    11. np.random.normal(170,5,size =(3,4)) 标准正态分布 以170为中心 5为偏移量
    12. np.random.random(size = (4,5)) # 创建一个4*5的数组 数字区间为(0,1)
二 ndarray属性

4个必记的参数 : ndim维度 ,shape形状 , size总长度 , dtype元素类型

三 ndarray 的基本操作
  1. 索引
    一维与列表完全一致 多维同理
    如: 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]]
    1. n[3][1] # 4
    2. n[3,1] # 4
    3. n[3,:] # array([8, 4, 1, 7, 6])
    4. n[:,3] # array([5, 6, 5, 7])
    5. 三维数组 和 数据修改 同列表
  2. 切片
    一维与列表完全一致 多维同理
    如: 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]])
  3. 变形
    使用reshape,注意参数是一个tuple
    1. n = np.arange(10)
      np.reshape(n,(2,5)) # 更改一维数组维2*5的二维数组
    2. n = np.arange(10).reshape((2,5))
    3. 遇到比较长的数组 可以使用:
      n.reshape((-1,3)) # 这里表示为行数自动匹配 每一列3个数字
  4. 级联
    使用np.concatenate() 级联需要注意的点
    1. 级联的参数是列表 : 一定要加中括号 或者小括号
    2. 维度必须相同
    3. 形状相符
    4. 级联的方向默认是shape这个tupele第一个值代表的维度方向
    5. 可以通过axis参数改变级联的方向
      tips: 如果要使用上下级联 那么级联的两个数组必须是二维以上数组 因为np.concatenate()的级联 不会创造高维度的数组 (vshape可以) 所以为了防止报错 在两个符合标准的一维数组在使用该方法之前需要处理一下数据 使用 n1 = n[np.newaxis,:]的方法可以创造二维数组 如将:[1 2 4 5 7 8]变成[[1 2 4 5 7 8]]
    6. 水平级联 np.concatenate((n1,n2),axis = 1)
    7. 垂直级联 np.concatenate((n1,n2),axis = 0)
    8. hp.hstack(水平级联) 和 hp.vstack(垂直级联)
      处理自己 进行维度的变更
  5. 拆分
    np.split(n,3,axis = 0) # 第一个是需要拆分的数组名 3指的是拆分为三份
    np.vsplit() 垂直拆分
    np.hsplit() 水平拆分
    np.arrary_split() 可以实现非等分拆分
  6. 副本(拷贝)
    由于数组和列表的储存方式类似 所以我们需要使用
    n1 = n.copy() 进行深拷贝 不然改变其中之一将会一起改变
四 ndarray的聚合操作
  1. 求和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])
  2. 最大最小值:np.max/ np.min
    同理
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐