数据分析基础-jupyter notebook-Anaconda-Numpy

数据分析介绍

1、数据分析是什么?
2、数据分析能干什么?
3、为什么利用Python进行数据分析?
4、数据分析过程概述
5、常用库简介

1、数据分析是什么?

  数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程;

在我们如今这个时代,相信大多数人都能明白数据的重要性,数据就是信息,而数据分析就是可以让我们发挥这些信息功能的重要手段。  

2、数据分析能干什么?

对于数据分析能干什么其实我们可以简单的举几个例子:

1、淘宝可以观察用户的购买记录、搜索记录以及人们在社交媒体上发布的内容选择商品推荐

2、股票可以根据相应的数据选择买进卖出

3、今日头条可以将数据分析应用到新闻推送排行算法当中

4、爱奇艺可以为用户提供个性化电影推荐服务

其实数据分析不仅可以完成像以上这样的推荐系统,在制药行业也可运用数据分析来预测什么样的化合物更有可能制成高效药物等

所以说数据分析绝对是未来所有公司不可或缺的岗位,目前社会上获取数据方式太多了,这么多的数据,只要我们拥有数据分析的技能,绝对可以应付任何岗位上的工作。

3、为什么利用Python进行数据分析

"""
1、Python的代码语法简单易学
2、Python可以很容易的整合C、C++等语言的代码
3、Python有大量用于科学计算的库
4、Python不仅可以用于研究和原型构建,同时也适用于构建生产系统

"""

数据整理

整理数据主要分为三步:

# (1)、收集数据

通过多种途径拿到数据,导入到Jupyter Notebook# (2)、评估数据

这一步主要是需要找出数据是否存在质量或者结构等方面的问题

# (3)、清理数据

通过修改、替换、删除等方式保证数据质量高、结构好

数据分析常用库简介

  Python数据分析需要安装的第三方扩展库有:Numpy、Pandas、SciPy、Matplotlib、Scikit-Learn、Keras、Gensim、Scrapy等

常用库简介

  Numpy

    Numpy是Numerical Python的简写,主要可以用来做Python数值计算。它提供了多种数据结构、算法以及大部分涉及Python数值计算所需的接口。

  • 快速、高效的多维数组对象ndarray
  • 基于元素的数组计算以及直接对数组执行数学运算的函数
  • 用于读写硬盘上基于数组的数据集的工具
  • 线性代数运算、傅里叶变换,以及随机数生成
  • 用于将C、C++、Fortran代码集成到python的工具
  • Pandas

    Pandas使我们进行数据分析的一个主要工具。它所包含的数据结构和数据处理工具的设计使得Python中进行数据清洗和分析非常快捷。pandas一般也是和其他数值计算工具一起使用的,

支持大部分Numpy语言风格的数组计算。pandas和numpy最大的区别就是pandas是用来处理表格型或者异质性数据的,而Numpy则刚好相反,它更适合处理同质型的数值类数组数据

matplotlib

  matplotlib是最流行的用于绘制数据图表的python库。

Scipy

    Scipy是科学计算领域针对不同标准问题域的包集合。提供了强大的科学计算方法(矩阵分析、信号分析、数理分析等)

IPython和Juypyter notebook

    IPython是一个加强版的Python解释器,Jupyter notebook是一种基于Web的代码笔记本,最初也是源于IPython项目。

IPython的使用

安装

 简单的使用:可以临时的书写检验一些代码的功能。

 jupyter notebook的使用

两种安装和和启动方式:

# a.  命令行安装:
                pip3 install jupyter
            启动
                C:Usersoldboy>jupyter notebook
    
            缺点:
                必须手动去安装数据分析包 
        
        # b.  anaconda: 软件
                优点: 包含了数据分析的基础包 大概 200 个左右的科学运算包

命令行安装

 使用:

 enter回车后类似加载server服务端,加载启动该软件

也可以用其他浏览器登录连接启动,但需要输入token或password验证

切换到目录文件夹下启动:jupyter notebook,启动即可获取该文件下的所有内容。

 创建python3进入界面

以上的打开以及使用包比较麻烦,建议安装Anaconda使用

 # anaconda: 软件
                优点: 包含了数据分析的基础包 大概 200 个左右的科学运算包

数据分析开发环境部署

Anaconda
下载安装
配置环境变量
管理包
管理环境
运行anaconda
补充

1、Anaconda

  Anaconda是Python的一个开源的发行版本,里面包含了很多科学计算相关的包,它和Python的关系就像linux系统中centos和Ubuntu的关系一样,不冲突,你可以同时在电脑上安装这两个东西。那至于为什么我已经在电脑上安装了pycharm还要安装这个Anaconda呢,主要有以下几点原因:

(1)Anaconda附带了一大批常用数据科学包,它附带了conda、Python和 150 多个科学包及其依赖项。因此你可以用Anaconda立即开始处理数据。

(2)管理包。Anaconda 是在 conda(一个包管理器和环境管理器)上发展出来的。在数据分析中,你会用到很多第三方的包,而conda(包管理器)可以很好的帮助你在计算机上安装和管理这些包,包括安装、卸载和更新包。

(3)管理环境。为什么需要管理环境呢?比如你在A项目中用到了Python2,而新的项目要求使用Python3,而同时安装两个Python版本可能会造成许多混乱和错误。这时候conda就可以帮助你为不同的项目建立不同的运行环境。还有很多项目使用的包版本不同,比如不同的pandas版本,不可能同时安装两个pandas版本。你要做的应该是在项目对应的环境中创建对应的pandas版本。这时候conda就可以帮你做到。

总结:Anaconda解决了官方Python的两大痛点:

(1)提供了包管理功能,Windows平台安装第三方包经常失败的场景得以解决

(2)提供环境管理功能,解决了多版本Python并存、切换的问题。

接下来就需要了解Anaconda如何进行安装

按照上面的路径点击下载,下载完成后就可以一路点击下一步完成安装,如果中间需要修改安装路径可以自己改一下。

安装成功之后我们会发现,多出来几个应用

  • Anaconda Navigtor :用于管理工具包和环境的图形用户界面,后续涉及的众多管理命令也可以在 Navigator 中手工实现。
  • Jupyter notebook :基于web的交互式计算环境,可以编辑易于人们阅读的文档,用于展示数据分析的过程。
  • qtconsole :一个可执行 IPython 的仿终端图形界面程序,相比 Python Shell 界面,qtconsole 可以直接显示代码生成的图形,实现多行代码输入执行,以及内置许多有用的功能和函数。
  • spyder :一个使用Python语言、跨平台的、科学运算集成开发环境。

安装Anaconda自带的应用:

 配置环境变量

  如果是Windows环境的话就需要在控制面板系统和安全系统高级系统设置环境变量用户变量PATH当中添加anaconda的安装目录的Scripts文件夹。

验证:
打开命令行输入conda --version,如果能输出版本号就对了

jupyter notebook的使用

打开并创建一个python3文件

一些常用的快捷键操作

 # jupyter notebook:
        
        """
    快捷键:
        
            1. 运行当前代码并选中下一个单元格  shift+enter
            2. 运行当前的单元格  crtl + enter
              
              绿色: 编辑模式
              蓝色: 命令行模式
              
            3. 在单元格的上方添加一个单元格 , 按esc进入命令行模式,接下来按 a (above) 添加
            4. 在单元格的上方添加一个单元格 , 按esc进入命令行模式,接下来按 b (below) 添加

            5. 删除一个单元格, 按esc进入命令行模式, 接下来,按 dd(delete) 删除

            6. 代码和markdown的切换,  按esc进入命令行模式, 接下来,按 m 切换    
        """

 文件的后缀名默认为

常用快捷键的简单使用:

 

Numpy 

简介
ndarray
通用函数
其他

1、简介

  Numpy是高性能科学计算和数据分析的基础包。它也是pandas等其他数据分析的工具的基础,基本所有数据分析的包都用过它。NumPy为Python带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组。它将常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环,放到C语言的运算中,明显地提高了程序的运算速度。

安装:

# pip install numpy

应用方式:

  这是官方认证的导入方式,可能会有人说为什么不用from numpy import *,是因为在numpy当中有一些方法与Python中自带的一些方法,例如maxmin等冲突,为了避免这些麻烦大家就约定俗成的都使用这种方法

 # import numpy as np

2、ndarray -多维数组对象

  Numpy的核心特征就是N-维数组对——ndarray.

3、为什么要是用ndarray?

  接下来我们可以通过具体的实例来展示一下ndarray的优势。

现在有这样一个需求:

# 已知若干家跨国公司的市值(美元),将其换算为人民币

按照Python当中的方法

第一种:是将所有的美元通过for循环依次迭代出来,然后用每个公司的市值乘以汇率
第二种:通过map方法和lambda函数映射

这些方法相对来说也挺好用的,但是再来看通过ndarray对象是如何计算的

 通过ndarray这个多维数组对象可以让这些批量计算变得更加简单,当然这只它其中一种优势,接下来就通过具体的操作来发现。

(2)有一个购物车,购物车中有商品的数量和价格,求总价?

 (3)列表形式

4、创建ndarray对象

# np.array()

Numpy常用属性

 1、T数组的转置

# T:转置
li1 = [
    [1,2,3],
    [4,5,6]
] 
a = np.array(li1)
a.T
执行结果:
array([[1, 4],
       [2, 5],
       [3, 6]])
就相当于是将行变成列,列变成行,它也是一个比较常用的方法

2、数据类型

 整型:int32只能表示(-2**31,2**31-1),因为它只有32个位,只能表示2**32个数

无符号整型:
只能用来存正数,不能用来存负数

补充:
astype()方法可以修改数组的数据类型

3、ndarray-创建

 几个简单的示例:

 

当不会一些属性方法是可以查看帮助文档和例子

 

 例子:

索引和切片

  数组和标量(数字)之间运算

# li1 = [
    [1,2,3],
    [4,5,6]
] 
a = np.array(li1)
a * 2
运行结果:
array([[ 2,  4,  6],
       [ 8, 10, 12]])
       

同样大小数组之间的运算

# l2数组
l2 = [
    [1,2,3],
    [4,5,6]
]
a = np.array(l2)

# l3数组
l3 = [
    [7,8,9],
    [10,11,12]
]
b = np.array(l3)

a + b  # 计算

执行结果:
array([[ 8, 10, 12],
       [14, 16, 18]])

索引

# 将一维数组变成二维数组
arr = np.arange(30).reshape(5,6) # 后面的参数6可以改为-1,相当于占位符,系统可以自动帮忙算几列
arr

# 将二维变一维
arr.reshape(30)

# 索引使用方法
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29]])
现在有这样一组数据,需求:找到20
列表写法:arr[3][2]
数组写法:arr[3,2]  # 中间通过逗号隔开就可以了

切片

arr数组
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29]])
arr[1:4,1:4]   # 切片方式
执行结果:
array([[ 7,  8,  9],
       [13, 14, 15],
       [19, 20, 21]])
切片不会拷贝,直接使用的原视图,如果硬要拷贝,需要在后面加.copy()方法

 

原文地址:https://www.cnblogs.com/Gaimo/p/11970686.html