zoukankan      html  css  js  c++  java
  • 入门实践,Python数据分析

    1-2 Anaconda和Jupyter notebook介绍

    很多人学习python,不知道从何学起。
    很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
    很多已经做案例的人,却不知道如何去学习更加高深的知识。
    那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
    QQ群:1097524789

    Anaconda是什么

    1 最著名的Python数据科学平台
    2 750流行的Python&R包
    3 跨平台:windows,Mac,Linux
    4 condaL:可扩展的包管理工具
    5 免费分发
    6 非常活跃的社区
    
    
    复制代码

    Anaconda的安装

    1 下载地址:https://www.anaconda.com/download/
    2 检验是否安装成功
    cd ~/anaconda
    anaconda bin/conda --version
    
    复制代码

    Conda的Environment管理

    1 创建一个新的environment
    conda create --name python34 python=3.4
    
    2 激活一个environment 
    activate python34  # for Windows
    source activate python34  # for linuc & Mac
    
    3 退出一个environment
    deactivate python34  # for Windows
    source deactivate python34
    
    4 删除一个environment
    conda remmove --name python34 --all
    
    复制代码

    Conda的package的管理

    1 Conda的包管理有点类似pip 
    2 安装一个Python包
    conda install numpy
    
    3 查看已安装的Python包
    conda list
    conda list -n python34  # 查看指定环境安装的Python包
    
    4 删除一个Python包
    conda remove -n python34 numpy
    
    复制代码

    什么是iPython

    • 一个强大的交互式shell
    • 是jupyter的kernel
    • 支持交互式数据分析和可视化

    什么是Jupyter Notebook

    • 前身是IPython notebookl
    • 一个开源的web application
    • 可以创建和分享包含代码,视图,注释的文档、
    • 可以用于数据统计,分析,建模,机器学习等领域

    notebook的文件格式(.ipynb)

    • 由Ipython Notebook 定义的一种格式(json)
    • 可以读取在线数据,CSV/XLS文件
    • 可以转化为其他格式,(py,html.pdf,md等)

    NBViewer

    • 一个online的ipynb格式notebook展示工具
    • 可以通过URL分享
    • Github集成了NBViewer
    • 通过转换器轻松集成到Blogs Emails,Wikis,Books

    实验室环境

    1. 在Windows/Mac/Linux上安装Anaconda
    2. 在使用Python3.6作为基础环境
    3. 使用Jupyter Notebook 作为编程IDE

    1-4 Anaconda在windows上安装演示

    www.anaconda.com/products/in…

    安装之后,按住win

    点击jupyter botebook

    浏览器输入localhost:8888

    1-5 Anaconda在Linux上的安装演示

    # 在linux机器中
    
    wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh
        
    sh Anaconda3-2020.02-Linux-x86_64.sh
    
    # 进入命令号
    1 按回车
    2 yes
    3 选择安装目录,这个时候目录不变,回车
    需要两分钟
    4 安装完之后需要选择什么什么玩意,选择yes
    
    在根目录中会看见一个anaconda的文件夹,进入文件夹可以看到很多目录
    cd ~/anaconda3
    cd bin
    
    可以很多的文件夹
    ./anaconda --version  # 查看conda版本号
    
    ./jupyter notebook --no-browser  # 在本地运行jupyter
    
    #要是抛错Running as root is not recommended. Use --allow-root to bypass.
     ./jupyter notebook --no-browser --allow-root
    
    # 但是这样只能本地访问jupyter,如何实现远程访问呢?
    ssh端口转发
    # 在本地执行端口转发命令
    ssh -N -f -L localhost:8888:localhost:8888 root@{ip地址}
    >>>password
    
    
    # 本地浏览器执行localhost:8888,就可以看见linux上的jupyter的页面了
    执行print('hello world')
    
    # jupyter执行命令行
    :ifconfig
        
       
    复制代码

    1-6 Jupyter-notebook的使用演示

    进入jupeter浏览器中之后
    点击new-->Terminal,显示命令行界面
    
    # 换目录执行jupeter,并把当前目录当做工作目录
    /root/anaconda3/bin/jupyter notebook --no-browser --allow-root
    
    
    
    复制代码

    第2章 Numpy入门

    2-1 数据科学领域5个常用Python库

    numpy
    scipy
    Pandas
    Matplotlib
    Scikit-learn
    复制代码

    Number

    数据处理里面最基础的库

    1. N维数组(矩阵),快速高效,矢量数学运算
    2. 高效的index,不需要循环
    3. 开源免费跨平台,运行效率足以和C/Matlab媲美

    Scipy

    1. 依赖于Numpy
    2. 专为科学和工程设计
    3. 实现了多种常用科学计算:线性代数,傅里叶变换,信号和图像处理

    Pandas

    1. 结构化数据分析利器(依赖Numpy)
    2. 提供了多种高级数据结构:Time-Series,DataFrame,Panel
    3. 强大的数据索引和处理能力

    Matplotlib

    1. Python 2D绘图领域使用最广泛的套件
    2. 基本能取代Matlab的绘图功能(散点,曲线,柱形等)
    3. 通过mplot3d可以绘制精美的3D图

    Scikit-learn

    1. 机器学习的Python模块
    2. 建立在Scipy之上,提供了常用的机器学习算法:聚类,回归
    3. 简单易学的API接口

    2-2 数学基础回顾之矩阵运算

    基本概念

    1. 矩阵:是指1xn或者nx1的矩阵
    2. 标量:1x1的矩阵
    3. 数组:N维的数组,是矩阵的延伸

    特殊矩阵

    矩阵加减运算

    1. 相加,相减的两个矩阵必须要有相同的行和列
    2. 行和列对应元素相加减

    数组乘法(点乘)

    矩阵乘法

    清华大学出版的线性代数

    http://www.wdfxw.net/goDownFiles.aspx?key=92039718
    复制代码

    2-3 Array的创建及访问

    import munpy as np
    # create from python list
    list_1 = [1,2,3,4]
    
    array_1 = np.array(list_1)  # 生成一个一维数组
    
    list_2 = [6,7,8,9]
    array_2 = np.array([list_1,list_2])  # 创建一个二维数组
    
    print(array_2)
    print(array_2.size)  #数组里元素的个数
    print(array_2.shape)  # 查看矩阵或数组的维数
    print(array_2.dtype)  #数组元素的类型
    
    
    array_4 = np.arange(1,10,2)  # 使用arange创建数组
    print(array_4)  # array([1, 3, 5, 7, 9])
    np.zeros(5)  # 全0矩阵 array([0., 0., 0., 0., 0.])
    
    np.zeros([2,3])  # 多维全0矩阵
    array([[0., 0., 0.],
           [0., 0., 0.]])
    
    
    np.eye(5)  # 单位矩阵
    array([[1., 0., 0., 0., 0.],
           [0., 1., 0., 0., 0.],
           [0., 0., 1., 0., 0.],
           [0., 0., 0., 1., 0.],
           [0., 0., 0., 0., 1.]])
    
    
    
    # 数组的访问
    a = np.arange(10)
    print(a)  # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    a[2]  # 2
    a[1:5]  # array([1, 2, 3, 4])
    b = np.array([[1,2,3,4],[5,6,7,8]])  # 矩阵
    b[1,0]  # 矩阵取值(第二个数组第一个值)  # 5
    c = np.array([[1,2,3],[4,5,6],[7,8,9]])
    c[:2,1:]  # 第一个元素是行,第二个元素是列
    #array([[2, 3],[5, 6]])
    
    
    
    复制代码

    2-4 数组与矩阵运算

    快速创建数组

    import numpy as np
    
    np.random.randn(10)  # 创建一个十维数组,且是动态分布的
    
    """
    array([-0.7512065 ,  0.97527973, -1.24433992,  0.86890475, -0.51251532,
           -0.02522675, -0.40664444,  0.66399272, -0.94669869,  1.52843227])
    """
    np.random.randint(10)  # 返回一个10以内的随机整数
    
    np.random.randint(10, size=(2,3))  #返回一个值在10以内的2x3的数组  
    """
    array([[1, 8, 1],
           [6, 1, 8]])
    """
    
    np.random.randint(10,size=20).reshape(4,5)  #返回一个大小为20的4x5的整数随机数组
    """
    array([[6, 6, 4, 8, 9],
           [0, 9, 1, 0, 8],
           [6, 2, 6, 1, 3],
           [5, 4, 8, 9, 2]])
    """
    
    
    复制代码

    数组的运算

    a = np.random.randint(10,size=20).reshape(4,5)
    b = np.random.randint(10,size=20).reshape(4,5)
    # 生成的a,b都是一个元素值小于10,数量为20的一个4x5的多维数组
    
    a+b  # 多维数组相加减就是对应位置元素值相加
    a-b  # 多维数组相加减就是对应位置元素值相减
    a * b # 多维数组相乘就是对应位置元素值相乘
    a / b # 多维数组相乘就是对应位置元素值做除法--有的时候会抛错,是因为如果数学运算中0不能做除数
    
    
    
    复制代码

    矩阵

    矩阵的命令其实跟数组差不多
    np.mat([[1,2,3],[4,5,6]])  #创建一个矩阵
    """
    matrix([[1, 2, 3],
            [4, 5, 6]])
    """
    
    # 数组转化为矩阵
    a = np.array([1,2,3])
    np.mat(a)  # matrix([[1, 2, 3]])
    
    
    
    复制代码

    矩阵的运算

    A = np.mat(np.random.randint(10,size=20).reshape(4,5))
    B = np.mat(np.random.randint(10,size=20).reshape(4,5))
    A+B  # 元素相加
    A-B # 元素值相减
    
    # 矩阵的乘法运算要求第一个值得行和第二个值的列数量一致
    A = np.mat(np.random.randint(10,size=20).reshape(4,5))
    B = np.mat(np.random.randint(10,size=20).reshape(5,4))
    
    A * B
    """
    matrix([[ 59, 137,  69,  80],
            [ 77, 174, 124, 142],
            [ 48, 128,  44, 124],
            [ 54, 121, 102,  94]])
    """
    
    
    
    复制代码

    Array常用函数

    import numpy as np
    
    a = np.random.randint(10, size=20).reshape(4,5)
    np.unqiue(a)  # 数组里面的唯一值
    
    sum(a)  #将矩阵的所有的列的和重新组合成一个数组
    """
    matrix([[21, 16, 24, 17,  9]])
    """
    
    sum(a[0])  # 计算某一行的值
    sum(a[:,0])  # 计算某一列的值
    
    A.max()  #查看数组中最大值
    
    a.max(a[0])  # 查看第一行的最大值
    a.max(a[:,0])  # 查看第一列的最大值
    
    
    复制代码

    使用pickle序列化Numpy array

    import numpy as np
    x = np.arange(10)
    
    # 将数组保存到硬盘
    f = open('x.pk1','wb') 
    pickle.dump(x,f)
    
    # 读取硬盘中的数组 
    f = open('x.pk1','rb')
    pickle.load(f)
    
    
    np.save('one_array',x)  # 将数组序列化到硬盘
    np.load('one_array.npy')  # 读取文件
    
    a = np.arange(10)
    b = np.arange(20)
    np.savez('two_array.npz',a=a,b=b)  # 一个文件保存多个数组
    c = np.load('two_array.npz')  # 取数组
    c['a']
    c['b']
    复制代码
  • 相关阅读:
    linux python2.6升级2.7
    Kafka介绍及安装部署
    kafka搭建
    Zookeeper 集群的安装及高可用性验证已完成!
    grafana初体验
    mac 密码重置
    制作 macOS High Sierra U盘
    运维监控篇Zabbix简单的性能调优
    zabbix主动模式设置
    OpenCV入门:(六:基础画图函数)
  • 原文地址:https://www.cnblogs.com/shann001/p/13140471.html
Copyright © 2011-2022 走看看