数据分析概念
数据采集、数据处理、数据可视化来发现数据的规律并进行分析,撰写报告
数据分析-->偏向于业务,注重于解决具体的问题
数据挖掘-->利用数据、利用所学python知识进行数据价值的挖掘
认识数据
--数据--数据对象
--数据集--多个数据对象的集合
--行代表着不同的样本,列代表着不同特征
--数据的属性
--标称属性--其值是一些符号或者事物的名称
--如头发的颜色,如人的姓名
--二元属性
--特殊的标称属性--只有两种结果的标称属性
--对称的二元属性--两种结果重要性一样--如男女
--非对称的二元属性--两种结果重要性不一样--如是否患病
--序列属性--其可能的值之间具有意义的序或者秩评定(ranking),但是相继值之间的差是未知的
--如:身高的高、中、矮:如颜值的帅、中等、不帅:如成绩的优良中差
--数值属性--具有真实数值的属性
--离散属性--离散的、类别的
--具有有限或者无限可数个值。
--可以用或者不用整数表示。
--连续属性
--连续的小数
统计指标
--更好的识别数据的性质,把握数据全貌、查看的走势、及分布范围
--如:均值、众数、分位数、最大值、最小值等统计指标
数据可视化
--更加直观的去把握数据全貌、走势、波动
--折线图、柱状图、直方图、饼图、散点图、箱线图、雷达图
认识数据处理
--为什么要进行数据处理
--数据是杂乱无章的--由于人、机为的数据的丢失、异常、不一致等数据问题
--没有高质量的数据处理,就没有高质量的结果
--数据处理操作
--数据清洗
--1,缺失值处理
--2,异常值处理
--3,数据的统一化
--数据合并
--进行数据的拼接
--数据规约
--去除量级的影响
--标准化
--数据转化
--将非数值型的类别数据转化为数据值型数据
--将连续型的数据离散成类别型数据
行列式--本质是具体的值
对角线,a12到a21到虚连线称为副对角线,于是二阶行列式便是主对角线的两元素之积减去副对角线上两元素之积所得的差
|a11 a12|
|a21 a22|
a11*a22-a21*a22
二元一次方程组
3x1-2x2=12
2x1+x2=1
D代表系数项
D=|3 -2|
| 2 1|
D1代表常数项
D1=|12 -2|
|1 1 |
D2=|3 12|
|2 1 |
D=3*1-(-2)=7<>0
D1=12*1-(-2)*1=14
D2=3*1-2*12=-21
x1=D1=2
——
D
x2=D2=-3
——
D
三阶行列式
定义1设有9个数排成3行3列的数表
a11 a12 a13
a21 a22 a23
a31 a32 a33
画圆法
第一条正对角线的相乘+第二条正对角线的,不足则找远离它的一个数相乘+第三条正对角线也同上,然后减去反正对角线的元素
画线法
a11 a12 a13 a11 a12
a21 a22 a23 a21 a22
a31 a32 a33 a31 a32
将原来的增加第一列与第二列
然后运用
正对角线元素相乘-反对角线元素
只有一列的矩阵称为列矩阵,又称为列向量
两个矩阵的行数相等、列数也相等,称为同型矩阵
元素都是零的矩阵称为零矩阵,记做0,不同型的零矩阵是不同的
矩阵1
只有当两个矩阵是同型矩阵时,才可进行加法运算
矩阵的减法可以理解为矩阵加上负矩阵
数与矩阵相乘
设A、B为m*n矩阵,入、u为数
(入 u)A=入(u A);
(入+u)A=入A+uA;
入(A+B)=入A+入B.
矩阵加法与数乘矩阵统称为矩阵的线性运算
矩阵与矩阵相乘
只有当第一个矩阵(左矩阵)的列数等于第二个矩阵(右矩阵)的行数时,两个矩阵才能相乘。
例:
A=[4 -1 2 1]
1 1 0 3
0 3 1 4
与B=[1 2]
0 1
3 0
-1 2
A-->(3,4)====>(3,2)
B-->(4,2)
AB=[]
A第一行乘以B第一列放在AB第一行第一列的位置,A第一行乘以B第二列放在AB第一行第二列的位置
A第二行乘以B第一列放在AB第二行第一列的位置,A第二行乘以B第二列放在AB第二行第二列的位置,A第一行乘以B第一列放在AB第一行第一列的位置,
A第三行乘以B第一列放在AB第三行第一列的位置
A第三行乘以B第二列放在AB第三行第二列的位置
最后生成一个3行2列的矩阵
矩阵的转置
定义 --把矩阵A的行换成同序数的列得到一个新矩阵,叫做A的转置矩阵,记做在A的上方加上T.
例如:
A=[1 2 0]
3 -1 1
的转置矩阵为
AT=[1 3]
2 -1
0 1
行列互换
极坐标 走一圈为2π弧度
矩阵
m*s数表,用中括号括起来
对角矩阵
除过对角线之外的所有的矩阵元素都为0
如果对角矩阵的对角线上全部为1,那么,该矩阵被称为单位矩阵,记为E
矩阵的运算
矩阵与矩阵的相加
对应位置元素进行想加
注意:同型矩阵
不同型的零矩阵上不相同的
矩阵与数的相乘
矩阵的每一个元素与数进行相乘
矩阵与矩阵的相乘
规则
左矩阵的列数必须等于右矩阵的行数,生成一个左矩阵行、右矩阵列的矩阵
矩阵的属性
转置
行列互换
矩阵的逆
如果矩阵可逆,那么矩阵*矩阵的逆=E
代码
"""
numpy ---科学计算库
结构核心:
ndarray对象:
存储多维数组
单一数据类型
内存是连续的
两种存储风格:
C风格 ---C语言风格----按行优先存储
F风格 ---fortran语言风格 ----按列优先存储
"""
数组的属性
import numpy as np
# 将列表转化为 数组
# arr = np.array([1, 2, 3, 4])
# arr = np.array([[1, 2, 3, 4], [5, 6, 7, 0]])
arr = np.array([[[1, 2, 3, 4], [5, 6, 7, 0]],[[1, 2, 3, 4], [5, 6, 7, 0]]])
print("arr:\n", arr)
print("arr 的类型:\n", type(arr))
# ndarray对象属性
# ndim shape size dtype itemsize
print("arr 的维度:\n", arr.ndim)
print("arr 的形状:\n", arr.shape)
# print("arr 的元素的个数:\n", arr.size)
# print("arr 的元素的类型:\n", arr.dtype)
# print("arr 的每一个元素的大小:\n", arr.itemsize)
数组的创建
import numpy as np
# 创建数组
# 使用列表转化数组
# arr = np.array([1,2,3,4])
# print("arr:\n",arr)
# print("arr的类型:\n",type(arr))
# 使用arange来创建数组
# 参数1 开始位置
# 参数2 结束位置,不包含结束位置
# 参数3 步长
# 如果开始值为0,且步长为1,那么开始与步长可以省略
# arr = np.arange(0, 5, 1)
# arr = np.arange(5)
# print("arr:\n", arr)
# print("arr的类型:\n", type(arr))
# 创建等差数组
# 参数1 开始值
# 参数2 结束值,包含结束值
# 参数3 生成数组的元素的个数
# arr = np.linspace(0, 5, 4)
# print("arr:\n", arr)
# print("arr的类型:\n", type(arr))
# 创建等比数组
# 参数1 开始值
# 参数2 结束值
# 参数3 生成数组的元素的个数
# 参数base ---默认是10,生成10^开始,10^结束的等比数组
# arr = np.logspace(0,2,3,base=2)
# print("arr:\n",arr)
# print("arr的类型:\n",type(arr))
# 创建元素全部为0的数组
# 参数 生成数组的形状
# arr = np.zeros(shape=(2,2))
# print("arr:\n",arr)
# print("arr的类型:\n",type(arr))
# 创建全部为1 的数组
# arr = np.ones(shape=(2,2))
# print("arr:\n",arr)
# print("arr的类型:\n",type(arr))
# diag --创建一个类似于对角矩阵的数组
# arr = np.diag(v=[1,2,3,4],k=0)
# arr = np.diag(v=[1,2,3,4],k=1)
# arr = np.diag(v=[1, 2, 3, 4], k=-1)
# 当v 为一维的时候
# 当k=0,给定的v 就在对角位置
# 当k>0,给定的v 顺着反对角向上移动k个位置
# 当k<0,给定的v 顺着反对角向下移动k个位置
# x = np.array(x)
# print("x:\n", x)
# arr = np.diag(v=x, k=0)
# arr = np.diag(v=x, k=1)
# arr = np.diag(v=x, k=-1)
# arr = np.diag(v=x, k=5)
# arr = np.diag(v=[[[1, 2, 3], [4, 5, 6], [7, 8, 9]],[[1, 2, 3], [4, 5, 6], [7, 8, 9]]], k=5) # 错误的,v的值只能是一维或者2维
# 当v 为2 维的时候
# 当k=0,取v 的对角线
# 当k>0,取对角线向上走k个的结果
# 当k<0,取对角线向下走k个的结果
# print("arr:\n", arr)
# print("arr的类型:\n", type(arr))
# eye ---创建一个类似于单位矩阵的数组
# arr = np.eye(N=2)
# 当只传N时,会创建一个N行,N列的单位矩阵的数组
# arr = np.eye(N=2,M=3)
# 当NM都传且不相等时,先创建较小的单位矩阵数组,然后在多出的行、或者多出列位置补0
# arr = np.eye(N=3,M=2)
# arr = np.eye(N=3,M=2,k=0)
# arr = np.eye(N=3,M=2,k=-1)
# k可以参考diag里面的k进行理解
# print("arr:\n", arr)
# # print("arr的类型:\n", type(arr))
# 创建随机数组
# rand 和 random_sample 和random是一样的
# 创建一个均匀分布的小数数组,随机数在[0,1)之间
# 参数 可以是生成数组的元素个数,也可以是生成数组的行列数
# arr = np.random.rand(10)
# arr = np.random.rand(2,2,3)
# arr = np.random.rand((2,3)) # 错误的,不可以传递形状
# print("arr:\n", arr)
# print("arr的类型:\n", type(arr))
# 创建符合标准正态分布的数组
# 同 standard_normal一样
# 参数可以是元素个数,也可以是生成数组的行列数,不能是形状
# arr = np.random.randn(2,3) ---等学完直方图就可以验证
# print("arr:\n", arr)
# print("arr的类型:\n", type(arr))
# 生成随机整数数组
# 生成[low,high)的数组
# size 可以是元素个数,也可以是生成数组的形状
# arr = np.random.randint(low=0,high=1,size=10)
# arr = np.random.randint(low=0,high=1,size=(2,3))
# arr = np.random.randint(low=0, high=1, size=[2, 3])
# print("arr:\n", arr)
# print("arr的类型:\n", type(arr))
# 生成指定范围内的随机小数的均匀数组
# 生成[low,high)的指定范围的随机均匀分布的小数
# size --可以数组的元素的个数---也可以是数组的形状
arr = np.random.uniform(low=1,high=10,size=(5,5))
print("arr:\n", arr)
print("arr的类型:\n", type(arr))