- 是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律
- 使得数据的价值最大化
- 分析用户的消费行为
- 制定促销活动的方案
- 制定促销时间和粒度
- 计算用户的活跃度
- 分析产品的回购力度
- 分析广告点击率
- 决定投放时间
- 制定广告定向人群方案
- 决定相关平台的投放
- ......
- 数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,以便采取适当的行动
- 保险公司从大量赔付申请数据中判断哪些为骗保的可能
- 支付宝通过从大量的用户消费记录和行为自动调整花呗的额度
- 短视频平台通过用户的点击和观看行为数据针对性的给用户推送喜欢的视频
- 有岗位的需求
- 数据竞赛平台
- 是Python数据科学的基础
- 是机器学习课程的基础
- 提出问题
- 准备数据
- 分析数据
- 获得结论
- 成果可视化
- 基础模块使用学习
- 项目实现
- 金融量化
- 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
- numpy
- pandas(重点)
- matplotlib
- NumPy(Numerical Python) 是 Python 语言中做科学计算的基础库。重在于数值计算,也是大部分Python科学计算库的基础,多用于在大型、多维数组上执行的数值运算。
- 使用np.array()创建
- 使用plt创建
- 使用np的routines函数创建
- 使用array()创建一个一维数组
import numpy as np
arr = np.array([1,2,3])
arr
- 使用array()创建一个多维数组
arr = np.array([[1,2,3],[4,5,6]])
arr
- 数组和列表的区别是什么?
- 数组中存储的数据元素类型必须是统一类型
- 优先级:
- 字符串 > 浮点型 > 整数
arr = np.array([1,2.2,3])
arr
- 将外部的一张图片读取加载到numpy数组中,然后尝试改变数组元素的数值查看对原始图片的影响
import matplotlib.pyplot as plt
img_arr = plt.imread('./1.jpg')
plt.imshow(img_arr)
img_arr = img_arr - 100
plt.imshow(img_arr)
- zero()
- ones()
- linespace()
- arange()
- random系列
np.ones(shape=(3,4))
np.linspace(0,100,num=20)
np.arange(10,50,step=2)
np.random.randint(0,100,size=(5,3))
- shape
- ndim
- size
- dtype
arr = np.random.randint(0,100,size=(5,6))
arr
arr.shape
arr.ndim
arr.size
arr.dtype
type(arr)
- array(dtype=?):可以设定数据类型
- arr.dtype = '?':可以修改数据类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YznhiIYF-1606960956057)(attachment:image.png)]
arr = np.array([1,2,3])
arr.dtype
arr = np.array([1,2,3],dtype='int32')
arr.dtype
arr.dtype = 'uint8'
arr.dtype
- 索引操作和列表同理
arr = np.random.randint(1,100,size=(5,6))
arr
arr[1]
arr[[1,3,4]]
- 切片操作
- 切出前两列数据
- 切出前两行数据
- 切出前两行的前两列的数据
- 数组数据翻转
- 练习:将一张图片上下左右进行翻转操作
- 练习:将图片进行指定区域的裁剪
arr[0:2]
arr[:,0:2]
arr[0:2,0:2]
arr
arr[::-1]
arr[:,::-1]
arr[::-1,::-1]
img_arr = plt.imread('./1.jpg')
plt.imshow(img_arr)
img_arr.shape
plt.imshow(img_arr[:,::-1,:])
plt.imshow(img_arr[::-1,:,:])
plt.imshow(img_arr[66:200,78:300,:])
arr
arr_1 = arr.reshape((30,))
arr_1.reshape((6,5))
- 将多个numpy数组进行横向或者纵向的拼接
- axis轴向的理解
- 0:列
- 1:行
- 问题:
- 级联的两个数组维度一样,但是行列个数不一样会如何?
np.concatenate((arr,arr),axis=1)
arr_3 = np.concatenate((img_arr,img_arr,img_arr),axis=0)
plt.imshow(arr_3)
- sum,max,min,mean
arr
arr.sum(axis=1)
arr.max(axis=1)
- NumPy 提供了标准的三角函数:sin()、cos()、tan()
- numpy.around(a,decimals) 函数返回指定数字的四舍五入值。
- 参数说明:
- a: 数组
- decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
np.sin(2.5)
np.around(3.84,2)
- numpy.amin() 和 numpy.amax(),用于计算数组中的元素沿指定轴的最小、最大值。
- numpy.ptp():计算数组中元素最大值与最小值的差(最大值 - 最小值)。
- numpy.median() 函数用于计算数组 a 中元素的中位数(中值)
- 标准差std():标准差是一组数据平均值分散程度的一种度量。
- 公式:std = sqrt(mean((x - x.mean())**2))
- 如果数组是 [1,2,3,4],则其平均值为 2.5。 因此,差的平方是 [2.25,0.25,0.25,2.25],并且其平均值的平方根除以 4,即 sqrt(5/4) ,结果为 1.1180339887498949。
- 方差var():统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。换句话说,标准差是方差的平方根。
arr[1].std()
arr[1].var()
- NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。一个 的矩阵是一个由行(row)列(column)元素排列成的矩形阵列。
- numpy.matlib.identity() 函数返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为 1,除此以外全都为 0。
np.eye(6)
- 转置矩阵
- .T
arr.T
- 矩阵相乘
- numpy.dot(a, b, out=None)
- a : ndarray 数组
- b : ndarray 数组
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iVFyxlgg-1606960956059)(attachment:image.png)]
- 第一个矩阵第一行的每个数字(2和1),各自乘以第二个矩阵第一列对应位置的数字(1和1),然后将乘积相加( 2 x 1 + 1 x 1),得到结果矩阵左上角的那个值3。也就是说,结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和。
- 线性代数基于矩阵的推导:
- https://www.cnblogs.com/alantu2018/p/8528299.html
a1 = np.array([[2,1],[4,3]])
a2 = np.array([[1,2],[1,0]])
np.dot(a1,a2)