1、数据分析基本的步骤
基本步骤图.png
(1)数据收集和操作主要是对excel、json、xml、sql等数据进行操作。
(2)数据处理主要用到的是数据分析工具pandas。
(3)数据分析主要用到的也是数据分析工具pandas,主要对时间序列数据分析、文本数据分析、图像数据处理及分析。
注意:pandas主要用于数据分析和数据处理。
(4)数据展现主要用到数据可视化(数据可视化也可以在数据分析和数据处理中执行,不一定在最终的数据展示中)
2、数据分析的工具安装和介绍
basic.png
(1)在anaconda上安装python的3点以上的版本
basic.png
(2)查看虚拟环境 conda info --envs
基本操作.png
basic.png
basic.png
(3)做项目需要用到pycharm。
3、Numpy数据结构及向量化
numpy.png
numpy.png
basic.png
注意:标量和矢量不可以进行相应的加减乘除,要把标量广播成矢量才能进行相应的操作(矢量化运算)。
numnpy.png
numpy.png
numpy.png
numpy.png
代码示例:
1、ndarray 多维数组
import numpy as np
# 生成指定维度的随机多维数据
data = np.random.rand(2, 3)
print(data)
print(type(data))
print('维度个数', data.ndim)
print('各维度大小: ', data.shape)
print('数据类型: ', data.dtype)
2、创建ndarray
# list转换为 ndarray
l = range(10)
data = np.array(l)
print(data)
print(data.shape)
print(data.ndim)
# 嵌套序列转换为ndarray
l2 = [range(10), range(10)]
data = np.array(l2)
print(data)
print(data.shape)
3、 np.zeros, np.ones 和 np.empty
# np.zeros
zeros_arr = np.zeros((3, 4))
# np.ones
ones_arr = np.ones((2, 3))
# np.empty
empty_arr = np.empty((3, 3))
# np.empty 指定数据类型
empty_int_arr = np.empty((3, 3), int)
print(zeros_arr)
print('-------------')
print(ones_arr)
print('-------------')
print(empty_arr)
print('-------------')
print(empty_int_arr)
# np.arange()
print(np.arange(10))
4、ndarray数据类型
zeros_float_arr = np.zeros((3, 4), dtype=np.float64)
print(zeros_float_arr)
print(zeros_float_arr.dtype)
# astype转换数据类型
zeros_int_arr = zeros_float_arr.astype(np.int32)
print(zeros_int_arr)
print(zeros_int_arr.dtype)
5、矢量化 (vectorization)
# 矢量与矢量运算
arr = np.array([[1, 2, 3],
[4, 5, 6]])
print("元素相乘:")
print(arr * arr)
print("矩阵相加:")
print(arr + arr)
# 矢量与标量运算
print(1. / arr)
print(2. * arr)
6、索引与切片
# 一维数组
arr1 = np.arange(10)
print(arr1)
print(arr1[2:5])
# 多维数组
arr2 = np.arange(12).reshape(3,4)
print(arr2)
print(arr2[1])
print(arr2[0:2, 2:])
print(arr2[:, 1:3])
# 条件索引
# 找出 data_arr 中 2015年后的数据
data_arr = np.random.rand(3,3)
print(data_arr)
year_arr = np.array([[2000, 2001, 2000],
[2005, 2002, 2009],
[2001, 2003, 2010]])
#is_year_after_2005 = year_arr >= 2005
#print is_year_after_2005, is_year_after_2005.dtype
#filtered_arr = data_arr[is_year_after_2005]
filtered_arr = data_arr[year_arr >= 2005]
print(filtered_arr)
# 多个条件
filtered_arr = data_arr[(year_arr <= 2005) & (year_arr % 2 == 0)]
print(filtered_arr)
7、转置
arr = np.random.rand(2,3)
print(arr)
print(arr.transpose())
8、通用函数
arr = np.random.randn(2,3)
print(arr)
print(np.ceil(arr))
print(np.floor(arr))
print(np.rint(arr))
print(np.isnan(arr))
9、np.where
arr = np.random.randn(3,4)
print(arr)
np.where(arr > 0, 1, -1)
10、常用的统计方法
arr = np.arange(10).reshape(5,2)
print(arr)
print(np.sum(arr))
print(np.sum(arr, axis=0))
print(np.sum(arr, axis=1))
11、np.all 和 np.any
arr = np.random.randn(2,3)
print(arr)
print(np.any(arr > 0))
print(np.all(arr > 0))
12、np.unique
arr = np.array([[1, 2, 1], [2, 3, 4]])
print(arr)
print(np.unique(arr))
4、数据分析的建模(建模在最后一个阶段)
1.png
(1)分类和回归基本上是用来做预测和识别的。
(2)分类、聚类、回归在机器学习上也用到。
2.png
注意:1、分类概念中的属性值就是特征值。(在历史数据、训练样本、样本中获取数据)-----分类是根据数据的特征来进行数据的分类。
3.png
4.png
注意:时序模型强调时间上的关系,而回归不强调。