什么是数据分析?
1.是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律,使得数据的价值最大化。
- 分析用户的消费行为
—— 制定促销活动的方案
——制定促销时间和力度
——计算用户的活跃度
——分析产品的回购力度
- 分析广告点击率
——决定投放时间
——制定广告定向人群方案
——决定相关平台的投放
2.数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,一边采取适当的行动
- 保险公司从大量赔付申请数据中判断哪些行为为骗保的可能
- 支付宝通过从大量的用户消费记录和行为自动调整花呗的额度
- 短视频平台通过用户的点击和观看行为数据针对性的给用户推送喜欢的视频
为什么要学习数据分析
- 有岗位的需求——数据竞赛平台
- 是Python数据科学的基础
- 是机器学习的课程的基础
数据分析实现流程
- 提出问题
- 准备数据
- 分析数据
- 获得结论
- 成果可视化
课程内容介绍
- 基础模块使用学习
- 项目实现
- 金融量化
开发环境介绍
- anaconda
——官网:https://www.anaconda.com
——集成环境:数据分析和机器学习中所需要的全部环境 - 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模块
- NumPy(Numerical Python)是Python语言中做科学计算的基础库。重在于数值计算,也是大部分python科学计算库的基础,多用于在大型、多维数组上执行的数值运算。
- numpy的创建:
—— - 使用np.array()创建
—— - 使用ply创建
—— - 使用np的routines函数创建
—— - 使用array()创建一个一(多)维数组
import numpy as np
#创建一个一维的numpy数组
np.array([1,2,3])
#创建一个二维的numpy数组
np.array([[1,2,3],[2,3,4]])
—— - 将外部的一张图片读取加载到numpy数组中,然后尝试改变数组元素的数值,查看对原始图片的影响
import matplotlib.pyplot as plt
img_arr = plt.imread('./dd.jpg')#将图片数据加载到数组中
print(img_arr)
img = plt.imshow(img_arr)
plt.show()
#imshow()接收一张图像,只是画出该图,并不会立刻显示出来。
#imshow后还可以进行其他draw操作,比如scatter散点等。
#所有画完后使用plt.show()才能进行结果的显示。
常用方法:
—— - ones()
>>> np.ones(shape=(2,3))#shape表示数组的形状
array([[1., 1., 1.],
—— - linespace()
>>> np.linspace(0,100,num = 20)#返回一个一维等差数组
array([ 0. , 5.26315789, 10.52631579, 15.78947368,
21.05263158, 26.31578947, 31.57894737, 36.84210526,
42.10526316, 47.36842105, 52.63157895, 57.89473684,
63.15789474, 68.42105263, 73.68421053, 78.94736842,
84.21052632, 89.47368421, 94.73684211, 100. ])
—— - arange()
>>> np.arange(0,100,step=5)
array([ 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80,
85, 90, 95])
—— - random
>>> np.random.randint(0,100,size=(10,))#创建一维随机数组
array([80, 43, 86, 23, 65, 18, 20, 26, 74, 52])
>>> np.random.randint(0,100,size=(3,4))#创建二维随机数组
array([[27, 61, 96, 76],
[22, 79, 87, 24],
[85, 14, 80, 42]])
常见属性:
arr.shape()#返回数组的形状
arr.ndim()#返回数组的维度
arr.size()#返回元素个数
arr.dtype#数组元素的数据类型
>>> arr = np.random.randint(0,100,size=(3,4))
>>> arr
array([[21, 50, 74, 22],
[25, 17, 37, 55],
[32, 88, 66, 53]])
>>> arr.size
12
>>> arr.shape
(3, 4)
>>> arr.dtype
dtype('int32')
>>> arr.dtype='float32'#修改数组的数据类型
>>> arr.dtype
dtype('float32')
>>> arr.ndim
2
>>> type(arr)
<class 'numpy.ndarray'>
切片操作:
>>> arr
array([[94, 15, 54, 76],
[37, 39, 57, 52],
[64, 81, 3, 69]])
#切出数组的前两行
>>> arr[0:2]
array([[94, 15, 54, 76],
[37, 39, 57, 52]])
#切出数组前两列
>>> arr[:,0:2]
array([[94, 15],
[37, 39],
[64, 81]])
#切出前两行的前两列
>>> arr[0:2,0:2]
array([[94, 15],
[37, 39]])
#数组的行倒置
>>> arr[::-1]
array([[64, 81, 3, 69],
[37, 39, 57, 52],
[94, 15, 54, 76]])
#数组的列倒置
>>> arr[:,::-1]
array([[76, 54, 15, 94],
[52, 57, 39, 37],
[69, 3, 81, 64]])
#数组的行列均倒置
>>> arr[::-1,::-1]
array([[69, 3, 81, 64],
[52, 57, 39, 37],
[76, 54, 15, 94]])
将图片进行裁剪
plt.imshow(img_arr[:,::-1])#将图片进行左右翻转
plt.imshow(img_arr[::-1,:])#将图片进行上下翻转
切割:
plt.imshow(img_arr[85:395,85:320])##图片裁剪的功能
变形reshape:
>>> arr = np.random.randint(0,100,size=(3,4))
>>> arr
array([[53, 37, 99, 21],
[54, 11, 57, 64],
[28, 16, 67, 30]])
#二维变一维
>>> arr1 = arr.reshape(12,)
>>> arr
array([53, 37, 99, 21, 54, 11, 57, 64, 28, 16, 67, 30])
#一维变二维
>>> arr2=arr1.reshape(2,-1) # -1自动计算
>>> arr2
array([[53, 37, 99, 21, 54, 11],
[57, 64, 28, 16, 67, 30]])
级联操作
——将多个numpy数组进行横向或者纵向的拼接(维度不一致的数组不可以级联,;行数不一样只能进行纵向级联;列数不一样只能进行横向级联)
- axis轴向的理解
-0:列
-1:行
np.concatenate((arr,arr1),axis=1)
- 实现一个图片的九宫格
>>> img_arr = plt.imread('./dd.jpg')
>>>img_3 = np.contatenate((img_arr,img_arr,img_arr),axis=1)
>>>img_9 = np.concatenate((img_3,img_3,img_3),axis=0)
>>> img = plt.imshow(img_9)
>>> plt.show()
常用的聚合操作
sum,max,min,mean(均值)
>>> arr
array([[53, 37, 99, 21],
[54, 11, 57, 64],
[28, 16, 67, 30]])
>>> arr.sum(axis=0)
array([135, 64, 223, 115])
>>> arr.max(axis=1)
array([99, 64, 67])
>>> arr.min(axis=0)
array([28, 11, 57, 21])
>>> arr.mean(axis=0)
array([45. , 21.33333333, 74.33333333, 38.33333333])
常用的数学函数
- numpy提供了标准的三角函数:sin()/cos()/tan()…
- numpy.around(a,decimals=int)函数返回指定数字的四舍五入值。
—— - 参数说明:
—— - - - - a:数组
—— - - - - decimals:舍入的小数位数。默认值为零。如果为负数,证书将四舍五入到小数点左侧的位置。
常用的统计函数
- 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).换句话说,标准差是方差的平方根。
矩阵相关
-
numpy中包含了一个矩阵库(nump.matlib),该模块中的函数返回的是一个矩阵,而不是ndarray对象。一个的矩阵是一个由行(row)和列(column)元素排列组成的矩形阵列。
-
numpy.matlib.identity()函数返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)的元素均为,除此以外全都为0.
-
转置矩阵:arr.T
>>> arr array([[53, 37, 99, 21], [54, 11, 57, 64], [28, 16, 67, 30]]) >>> arr.T array([[53, 54, 28], [37, 11, 16], [99, 57, 67], [21, 64, 30]])
-
矩阵相乘
—— - numpy.dot(a,b,out=None)
—— —— - a:ndarray 数组
—— —— - b:ndarray 数组
总结Numpy重点:
- 数组的创建方式
- numpy的切片,
- numpy变形,
- 转置,
- 矩阵乘法,
- 标准差,
- 聚合函数