Anaconda在官网就可以下载,网址:https://www.anaconda.com/download/  ,官网上可以选择各个操作系统的安装包。

双击下载下来的.exe文件就可以安装了

数据分析之NumPy,pandas,Matplotlib

安装时将两个选项都选上,将安装路径写入环境变量,然后等待安装完成就可以了。

数据分析之NumPy,pandas,Matplotlib

安装完成后,打开Windows的命令行窗口:按Win+R键打开窗口,输入cmd。打开Windows的命令提示符输入conda list 就可以查询现在安装了哪些库,常用的numpy, scipy等安装上就可以啦~

        —     输入 conda --version 验证并查看版本

        —     输入 conda list 命令可以看已经安装的python包

        —     输入 jupyter notebook, 直接浏览器打开,可以在上面写,执行

如果你还有什么包没有安装上,可以运行conda install ***  来进行安装(***为需要的包的名称)。如果某个包版本不是最新的,运行 conda update *** 就可以更新了

  • anaconda
    • 官网:https://www.anaconda.com/
    • 集成环境:集成好了数据分析和机器学习中所需要的全部环境
      • 注意:
        • 安装目录不可以有中文和特殊符号
  • jupyter
    • jupyter就是anaconda提供的一个基于浏览器的可视化开发工具
  • jupyter的基本使用
    • 启动:在终端中录入:jupyter notebook的指令,按下回车
    • 新建:
      • python3:anaconda中的一个源文件
      • cell有两种模式:
        • code:编写代码
        • markdown:编写笔记
    • 快捷键:
      • 添加cell:a或者b
      • 删除:x
      • 修改cell的模式:
        • m:修改成markdown模式
        • y:修改成code模式
      • 执行cell:
        • shift+enter
      • tab:自动补全
      • 代开帮助文档:shift+tab

IPython

数据分析之NumPy,pandas,Matplotlib

数据分析之NumPy,pandas,Matplotlib

 数据分析之NumPy,pandas,Matplotlib

 数据分析之NumPy,pandas,Matplotlib

  • IPython:交互式的Python命令行
  • 安装:pip3 install ipython
  • 使用:ipython
  • 快捷键:
    1. TAB键自动完成
    2. ?:内省、命名空间搜索      a?      a.append?     a.*pp*?
    3. !:执行系统命令    !cd
  • 魔术命令:以%开始的命令
    1. %run:执行文件代码
    2. %paste:执行剪贴板代码
    3. %timeit:评估运行时间    %timeit a.sort()
    4. %pdb:自动调试 %pdb on      n      %pdb off
  • 使用命令历史    _
  • 获取输入输出结果
  • 目录标签系统
  • IPython Notebook

数据分析之NumPy,pandas,Matplotlib

数据分析之NumPy,pandas,Matplotlib

NumPy模块

NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。

  • 安装方法:pip3 install numpy
  • 引用方式:import numpy as np
  • NumPy的主要功能:
    1. ndarray,一个多维数组结构,高效且节省空间
    2. 无需循环对整组数据进行快速运算的数学函数
    3. 读写磁盘数据的工具以及用于操作内存映射文件的工具
    4. 线性代数、随机数生成和傅里叶变换功能
    5. 用于集成C、C++等代码的工具

一、ndarray多维数组对象

  • 创建ndarray:np.array(array_like)
  • ndarray是多维数组结构,与列表的区别是:
    1. 数组对象内的元素类型必须相同
    2. 数组大小不可修改

1、ndarray常用属性

数据分析之NumPy,pandas,Matplotlib

  • T 数组的转置(对高维数组而言)
  • dtype 数组元素的数据类型
  • size 数组元素的个数
  • ndim 数组的维数
  • shape 数组的维度大小(以元组形式)

2、ndarray数据类型

  • 布尔型:bool_
  • 整型:int_ int8 int16 int32 int64
  • 无符号整型:uint8 uint16 uint32 uint64
  • 浮点型:float_ float16 float32 float64
  • 复数型:complex_ complex64 complex128

3、ndarray创建

  • array() 将列表转换为数组,可选择显式指定dtype
  • arange() range的numpy版,支持浮点数
  • linspace() 类似arange(),第三个参数为数组长度
  • zeros() 根据指定形状和dtype创建全0数组
  • ones() 根据指定形状和dtype创建全1数组
  • empty() 根据指定形状和dtype创建空数组(随机值)
  • eye() 根据指定边长和dtype创建单位矩阵

4、ndarray索引和切片

  • 数组和标量之间的运算:
    1. a+1     a*3     1//a     a**0.5     a>5
  • 同样大小数组之间的运算:
    1. a+b     a/b     a**b     a%b       a==b
  • 数组的索引:
    1. 一维数组:a[5]
    2. 多维数组:
      1. 列表式写法:a[2][3]
      2. 新式写法:a[2,3] (推荐)
  • 数组的切片:
    1. 一维数组:a[5:8]     a[4:]     a[2:10] = 1
    2. 多维数组:a[1:2, 3:4]     a[:,3:5]     a[:,1]
    3. 与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。 【解决方法:copy()】
    4. copy()方法开源创建数组的深拷贝

5、布尔型索引

问题:给一个数组,选出数组中所有大于5的数。
答案:a[a>5]
原理:
a>5会对a中的每一个元素进行判断,返回一个布尔数组
布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组

问题2:给一个数组,选出数组中所有大于5的偶数。
问题3:给一个数组,选出数组中所有大于5的数和偶数。
答案:
a[(a>5) & (a%2==0)]
a[(a>5) | (a%2==0)

6、花式索引*

问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
答案:a[[1,3,4,6,7]]

问题2:对一个二维数组,选出其第一列和第三列,组成新的二维数组。
答案:a[:,[1,3]]

二、NumPy:通用函数

ceil:向上取整 3.6 -》4 3.1-》4 -3.1-》-3

floor:向下取整:3.6-》3 3.1-》3 -3.1-》-4

round:四舍五入:3.6-》4 3.1-》3 -3.6-》-4

trunc(int):向零取整(舍去小数点后) 3.6-》3 3.1-》3 -3.1-》-3

arr = np.arange(10)
arr.sum()#45  求和
arr.mean()#4.5 平均值
arr.cumsum()  #array([ 0,  1,  3,  6, 10, 15, 21, 28, 36, 45], dtype=int32) #等差数列 
arr.std() #、求标准差

通用函数:能同时对数组中所有元素进行运算的函数
常见通用函数:
一元函数:abs(绝对值), sqrt(开方), exp, log, ceil, floor, rint, trunc, modf(分别取出小数部分和整数部分), isnan, isinf, cos, sin, tan
二元函数:add, substract, multiply, divide, power, mod, maximum, mininum,

三、补充知识:浮点数特殊值

浮点数:float
浮点数有两个特殊值:
nan(Not a Number):不等于任何浮点数(nan != nan)
inf(infinity):比任何浮点数都大

NumPy中创建特殊值:np.nan    np.inf
在数据分析中,nan常被用作表示数据缺失值

四、数学和统计方法

sum    求和
cumsum 求前缀和
mean    求平均数
std    求标准差
var    求方差
min    求最小值
max    求最大值
argmin    求最小值索引
argmax    求最大值索引

五、随机数生成

随机数生成函数在np.random子包内
常用函数
rand        给定形状产生随机数组(0到1之间的数)
randint        给定形状产生随机整数
choice        给定形状产生随机选择
shuffle        与random.shuffle相同
uniform        给定形状产生随机数组
数据分析之NumPy,pandas,Matplotlib
import numpy as np
import random
a=[random.uniform(10.0,20.0) for i in range(3)]
print(a)
a=np.array(a)  #将列表转换成数组
print(a)
x=10
print(a*x) #数组里面的每一项乘以10
print(a.size,a.dtype)#size 数组元素的个数 #dtype 数组元素的数据类型


b=np.array([[1,2],[11,22],[99,99]])
print(b.shape) #shape 数组的维度大小(以元组形式)
print(b.T) #T 数组的转置(对高维数组而言)


c=np.array([[[1,2,3],[666,777,888]],[[11,22,33],[55,66,77]]])
print(c.shape)
print(c.ndim) #ndim 数组的维数


d=np.zeros(10)
print(d)
d=np.zeros(10,dtype='int') #可以加dtype指定类型,默认是float
print(d)
d=np.ones(10)
print(d)


d=np.empty(10)  ##注意内存残留
print(d)
d=np.arange(2,10,3)
print(d)
d=np.arange(2,10,0.3) ##步长可以是小数
print(d)

d=np.linspace(1,10,3) ##最后一个参数是分成多少份数,也就是数组长度,步长是一样的
print(d)

d=np.eye(10)
print(d)

a=np.arange(10)
print(a,a+1,a*3) #每一列加1,每一列乘以3
b=np.arange(10,20)
print(b,a+b) #对应列相加,前提是数组长度一样
a[0]=100
print(a>b) #每一列的比较返回布尔,整体返回布尔列表

a=np.arange(15)
print(a)
a=np.arange(15).reshape((3,5))  #生成一个3行5列的二维数组
print(a,a.shape)
print(a[0][0],a[0,0]) # 推荐a[0,0]的写法


a=np.arange(15)
b=np.arange(10)
c=a[0:4]
d=b[0:4].copy() #这样就不影响b,这个是复制出来了一份
c[0]=20  #对c进行修改同样会影响到a,是出于省空间的考量,其实只是把地址指向了a的前4项
d[0]=20
print(a,b,c,d)


a=np.arange(15).reshape((3,5))
print(a[0][0:2],a[1,0:2])
print(a[0:2]) #默认是按行切
print(a[0:2,0:2]) #逗号前面是行,后面是列,得到的还是二维数组

print(a[1:4,2:4])
print(a[1:,2:4])


a=[random.randint(0,10) for i in range(20)]
print(list(filter(lambda x:x>5,a)))
a=np.array(a)
print(a>5) #[False False ... True  True]
print(a[a>5])  #a>5会把列表的每一项先转换成True和False

#方式1:
b=a[a>5]
print(b[b%2==0],'所有大于5的偶数')
#方式2:
print(a[(a>5) & (a%2==0)])#记得加括号,&的优先级比较高

print(3 and 4,3 & 4)
print(a[(a>5) | (a%2==0)])#大于5或者偶数

a=np.arange(4)
print(a)
print(a[[True,True,False,False]]) #是True的才显示


a=np.arange(10,20)
print(a)
print(a[[1,3,4]],'花式索引') #

a=np.arange(20).reshape(4,5)
print(a[0,2:4])
print(a[0,a[0]>2])

print(a[[1,3],[1,3]])# 注意:这个是取出(1,1)和(3,3)位置上的数,
print(a[[1,3],:][:,[1,3]]) # 花式索引要这样操作

a=np.arange(-5,5)
print(np.abs(a))
print(abs(a))
# print(np.sqrt(a))

import math
a=1.6
print(math.trunc(a),math.ceil(a),round(a),math.floor(a))
print(np.trunc(a),np.ceil(a),np.round(a),np.floor(a))

print(np.modf(a))#把整数和小数部位分开,返回一个元组,元组第一个值是小数部分,第二个值是整数部分

#nan(Not a Number):不等于任何浮点数(nan != nan)
#inf(infinity):比任何浮点数都大
print(float('nan'),float('inf')) #nan inf
print(np.nan == np.nan) #False
print(np.isnan(np.nan)) #True
print(~ np.isnan(np.nan)) #False
print(not np.isnan(np.nan)) #False

print(np.inf == np.inf) #True


a=np.arange(0,5)
b=5/a #inf
c=a/a #nan
print(b,)
print(c[~np.isnan(c)])  #去掉nan
print(b[~np.isinf(b)])  #去掉inf


a=np.array([3,4,5,6,7])
b=np.array([2,5,3,7,4])
print(np.maximum(a,b))
print(a.sum())
print(a.mean())

"""
方差是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。
1,2,3,4,5
方差: ((1-3)**2+(2-3)**2+(3-3)**2+(4-3)**2+(5-3)**2)/5
标准差:方差再开方 
sqrt(((1-3)**2+(2-3)**2+(3-3)**2+(4-3)**2+(5-3)**2)/5)
"""



a=np.arange(0,10,0.2)
print(a.var(),a.std()) #方差 标准差
print(a.mean()-a.std(),a.mean()+a.std())
print(a.mean()-2*a.std(),a.mean()+2*a.std())

print(a.argmax()) #取最大数的索引

a=np.random.randint(0,10,10) #第三个参数是数组长度
a=np.random.randint(0,10,(3,5)) #第三个参数三行五列
a=np.random.randint(0,10,(3,5,4)) #第三个参数三行五列
a=np.random.rand(10) #####代表个数  不是random.random
print(a)

# x=np.linspace(-10,10,10000)
# y=x**2
# import matplotlib.pyplot as plt
# plt.plot(x,y)
# plt.show()
View Code

相关文章: