数据分析是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律
使得数据的价值最大化
分析用产的消费行为
制定促销活动的方案。制定促销时间和粒度。计算用户的活跃度。分析产品的回购力度。分析广告点击率
决定投放时间制定广告定向人群方案。决定相关平台的投放
数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,以便采取适当的行动
保险公司从大量赔付申请数据中判断哪些为骗保的可能支付宝通过从大量的用户消费记录和行为自动调整花呗的额度短视频平台通过用户的点击和观看行为数据针对性的给用户推送喜欢的视频
数据分析实现流程:
(1) 提出问题; (2)准备数据; (3) 分析数据; (4) 获得结论; (5) 成果可视化
数据分析三剑客
2 环境配置anaconda
开发环境介绍:anaconda官网:https://www .anaconda.com/集成环境:集成好了数据分析和机器学习中所需要的全部环境注意:安装目录不可以有中文和特殊符号
jupyter
-jupyter就是anaconda提供的一个基于浏览器的可视化开发工具jupyter的基本使用启动:在终端中录入∶jupyter notebook的指令,按下回车-新建:python3:anaconda中的一个源文件cell有两种模式:
code:编写代码markddwn:编写笔记
快捷键
A 在当前cell的上方插入新的cellB 在当前cell的下方插入新cellx 删除当前cellm 将当前cell修改为markdown模式y 将当前cell修改为code模式tab 代码自动补全shift + enter:执行当前cellshift + tab:打开帮助文档 3 numpy模块
numpy主要是为pandas中提供数据的,重在数值计算,是大部分科学计算的基础。
# 一维列表 a = [1,2,3] # 二维列表 b = [[1,2],[3,4]]
在Anaconda的集成开发环境中,自动安装的有numpy库。
import numpy as np arr = np.array([1,2,3]) arr2D = np.array([[1,2,3],[3,4,5]])3.1 数组跟列表的区别
列表中的元素的类型可以是不同的;数组中所有元素的都是具有相同的数据类型的数据类型优先级:字符串 > 浮点型 > 整型
import numpy as np li = [1,2.2,"three"] arr = np.array(li) print(li) print(arr) print(type(li)) print(type(arr))
[1, 2.2, 'three'] ['1' '2.2' 'three']
案例:
将外部的一张图片读取加载到numpy数组中,然后尝试改变数组元素的数值查看对原始图片的影响
import matplotlib.pyplot as plt
img_arr = plt.imread("./test.jpg")
plt.imshow(img_arr)
img_arr = img_arr - 20 plt.imshow(img_arr)3.2 几个特殊的数组
np.ones() :根据指定维度生成多维0数组np.zeros():根据指定维度生成多维1数组np.linspace(start, end, num):根据指定的个数和起始终止数值,生成等差数列np.arange(start, end, step):根据指定的步长和起始终止数值,生成等差数列np.random.randint(start, end, size=(row,col))
import numpy as np np.ones(shape=(3,4)) np.zeros(shape=(3,4)) np.linspace(0,100,num=10) np.arange(10,20,step=2.1) np.random.randint(20, 50, size=(5,6))3.3 几个常用的属性
arr.shape:数组的形状arr.ndim:数组的维度arr.size:数组元素的个数arr.dtype:获取和修改数组元素的类型,通过修改元素类型缩减数据占用的内存type(arr):数组的数据类型, 3.4 索引和切片操作
arrR = np.random.randint(10,100, size=(5,6)) # 获取第2行,索引从零开始 arrR[1] # 获取前两行,索引从零开始 arrR[0:2] # 获取前两列,索引从零开始 arrR[:,0:2] # 获取前两行的前两列,索引从零开始 arrR[0:2,0:2] # 将数组的行倒置 arrR[::-1] # 将数组的列倒置 arrR[:,::-1] # 将数组所有元素倒置 arrR[::-1,::-1]
案例:将一个图片执行列翻转、裁剪
import matplotlib.pyplot as plt
img_R = plt.imread("./test.jpg")
plt.imshow(img_R[:,::-1,:])
数组变形:reshape
# 变形为一维数组 arrR.reshape((30,)) # 变形为多维数组 arrR.reshape((6,5))3.5 级联操作
只能是同一维度的数组的拼接
# 在行方向拼接 np.concatenate((arrR,arrR),axis=0) # 在列方向拼接 np.concatenate((arrR,arrR),axis=1)
案例:图片的拼接
plt.imshow(np.concatenate((img_R,img_R),axis=1))3.6 聚合操作与数学函数
print(arrR.sum()) print(arrR.sum(axis=0)) print(arrR.max()) print(arrR.max(axis=0)) print(arrR.min()) print(arrR.min(axis=0)) print(arrR.mean()) print(arrR.mean(axis=0))
标准的三角函数:
print(np.sin(arrR)) print(np.cos(arrR)) print(np.tan(arrR))
取值函数:
print(np.around(3.9782, decimals=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)。换句话说,标准差是方差的平方根。
print(np.amin(arrR, axis=1)) print(np.amax(arrR, axis=1)) print(np.ptp(arrR, axis=1)) print(np.std(arrR, axis=1)) print(np.var(arrR, axis=1)) print(arrR[1].ptp()) print(arrR[1].std()) print(arrR[1].var())3.7 矩阵运算
# 标准的单位矩阵 mat = np.eye(6) # 转置 print(arrR.T) # 矩阵乘法 arr1 = np.array([[2,1],[4,3]]) arr2 = np.array([[1,2],[1,0]]) np.dot(arr1,arr2)



