꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱
ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客
本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶
个人主页:xiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客
系列专栏:机器学习系列专栏
"探索未来,掌握人工智能"🚀 点击加入我们的AI学习之旅,让技术变得有趣又易懂,点击跳转
我的目标:"团团等我💪( ◡̀_◡́ ҂)"
( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞👍 + 收藏⭐️ + 留言📝+关注(互三必回)!
![](https://img-blog.csdnimg.cn/direct/bac24159272d4888ac26fbca500b84e8.png)
一.数据分析
1. 引言
数据分析师的岗位需求非常大,90%的岗位技能需要掌握Python作为数据分析工具。Python语言的易学性快速开发,拥有丰富强大的扩展库和成熟的框架等特性很好地满足了数据分析师的职业技能要求。
1.1DIKW 体系
DIKW体系是关于数据、信息、知识及智慧的体系,可以追溯至托马斯·斯特尔那斯·艾略特所写的诗-- 《岩石》。在首段,他写道:“我们在哪里丢失了知识中的智慧?又在哪里丢失了信息中的知识?” (Where is the wisdom we have lost in knowledge? / Where is the knowledge we have lost in information?)。
数据工程领域中的DIKW体系
D:Data (数据),是 DIKW 体系中最低级的材料,一般指原始数据,包含(或不包含)有用的信息。
I:Information (信息),作为一个概念,信息有着多种多样的含义。在数据工程里,表示由数据工程 师(使用相关工具)或者 数据科学家(使用数学方法),按照某种特定规则,对原始数据进行整合提 取后,找出来的更高层数据(具体数据)。
K:Knowledge (知识),是对某个主题的确定认识,并且这些认识拥有潜在的能力为特定目的而使用。 在数据工程里,表示对信息进行针对性的实用化,让提取的信息可以用于商业应用或学术研究。
W:Wisdom (智慧),表示对知识进行独立的思考分析,得出的某些结论。在数据工程里,工程师和科 学家做了大量的工作用计算机程序尽可能多地提取了价值(I/K),然而真正要从数据中洞察出更高的 价值,甚至能够对未来的情况进行预测,则需要数据分析师。
1.2数据工程 领域职业划分:
数据工程是一整套对数据(D)进行采集、处理、提取价值(变为 I 或 K)的过程
。
首先介绍一下相关的几种角色:
Data Engineer(数据工程师), Data Scientist(数据科学家),
Data Analyst(数据分析师)
。 这三个角色任务重叠性高,要求合作密切,但各负责的领域稍有不 同。大部分公司里的这些角色都会根据每个人本身的技能长短而身兼数职, 所以有时候比较难以区 分:
数据工程师
: 分析数据少不了需要运用计算机和各种工具自动化数据处理的过程, 包括数据格式转换, 储存, 更新, 查询。 数据工程师的工作就是开发工具完成自动化的过程, 属于 基础设施/工具 (Infrastructure/Tools)层。但是这个角色出现的频率不多 ,因为有现成的MySQL, Oracle等数据库 技术, 很多大公司只需要DBA就足够了。而 Hadoop, MongoDB 等 NoSQL 技术的开源, 更是使在 大数据的场景下都没有太多 数据工程师 的事,一般都是交给 数据科学家 。
数据科学家
: 数据科学家是与数学相结合的中间角色, 需要用数学方法处理原始数据找出肉眼看不到的 更高层数据, 一般是运用 统计机器学习(Statistical Machine Learning)或者 深度学习(Deep Learning)。有人称 Data Scientist 为 编程统计学家
(Programming Statistician),因为他们需要有 很好的统计学基础,但也需要参与程序的开发(基于 Infrastructure 之上),而现在很多很多的数据科 学家 职位都要求身兼
数据工程师
。 数据科学家 是把 D 转为 I 或 K 的主力军。
数据分析师
: 数据工程师和数据科学家做了大量的工作,用计算机程序尽可能多地提取了价值(I/K), 然而真正要从数据中洞察出更高的价值, 则需要依靠丰富的行业经验和洞察力, 这些都需要人力的干 预。 Data Analyst 需要的是对所在业务有深刻了解, 能熟练运用手上的工具(无论是 Excel, SPSS也 好, Python/R也好,工程师给你开发的工具也好,必要时还要能自己充当工程师和科学家,力尽所能 得到自己需要的工具),有针对性地对数据作分析,并且需要把发现的成果向其他职能部门呈现出 来,最终变为行动,这就是把数据最终得出 Wisdom。
2. 什么是数据分析
1.简单介绍
百度百科
:数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成 结论而对数据加以详细研究和概括总结的过程。这一过程也是质量管理体系的支持过程。在实用中数据分析可帮助人们作出判断,以便采取适当行动。是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律 使得数据的价值最大化
1. 分析用户的消费行为
2. 制定促销活动方案
3. 制定促销时间和力度
4. 计算用户的活跃度
5. 分析产品的回购力度
举个例子例如: 分析广告点击率
1. 决定投放时间
2. 制定广告定向人群方案
3. 决定相关平台的投放
数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,以便采取适当的行为:
1. 保险公司从大量理赔申请中判断哪些为骗保的可能
2. 支付宝通过从大量的用户消费记录和行为自动调整花呗的额度
3. 短视频平台通过从用户的点击和观看行为数据针对性的给用户推送喜欢的视频
2.数据分析的过程:
![](https://img-blog.csdnimg.cn/direct/b198b4c728f64bddb5216f7ef65aa94e.png)
1. 数据收集:本地数据或者网络数据的采集与操作.
2. 数据处理:数据的规整,按照某种格式进行整合存储。
3. 数据分析:数据的科学计算,使用相关数据工具进行分析。
4. 数据展现:数据可视化,使用相关工具对分析出的数据进行展示。
3.进行数据分析的介绍
1.数据分析工具
1.SAS:(STATISTICAL ANALYSIS SYSTEM,简称SAS)公司开发的统计分析软件,是一个功能强大的数据库整 合平台。价格昂贵,银行或者大企业才买的起,做离线的分析或者模型用。
2. SPSS:(Statistical Product and Service Solutions,统计产品与服务解决方案)是IBM公司推出的一系列用于统 计学分析运算、数据挖掘、预测分析和决策支持任务的产品,迄今已有40余年的成长历史,价格昂贵。
3. R/MATLAB:适合做学术性质的数据分析,在实际应用上需要额外转换为Python或Scala来实现,而且MATLAB (MathWorks公司出品的商业数学软件)是收费的。
4. Scala:是一门函数式编程语言,熟练使用后开发效率较高,配合Spark适合大规模的数据分析和处理,Scala的 运行环境是JVM。
1. Python:Python在数据工程领域和机器学习领域有很多成熟的框架和算法库,完全可以只用Python就可以构建
以数据为中心的应用程序。在数据工程领域和机器学习领域,Python非常非常流行。
2.数据建模
数据分析建模需要先明确业务需求,然后选择是 描述型分析 还是 预测型分析。
1. 如果分析的目的是描述目标行为模式,就采用描述型数据分析,描述型分析就考虑 关联规则、 序列规则 、聚 类 等模型。
2. 如果是预测型数据分析,就是量化未来一段时间内,某个事件的发生概率。有两大预测分析模型, 分类预 测 和 回归预测。
![](https://img-blog.csdnimg.cn/direct/2a409d5039fc46a29cab067328f50f37.png)
3.分类 vs 回归
分类:是通过已有的训练样本去训练得到一个最优模型,再利用这个模型将输入映射为相应的输出,对输出进行 简单的判断从而实现分类的目的,也就具有了对未知数据进行分类的能力。
回归:是基于观测数据建立变量间适当的依赖关系,以分析数据内在的规律,得到响应的判断。并可用于预报、 控制等问题。
应用:
信用卡申请人风险评估、预测公司业务增长量、预测房价,未来的天气情况等.
原理:
回归:用属性的 历史数据 预测未来趋势。算法首先假设一些已知类型的函数可以匹配目标数据,然后分析匹配 后的误差,确定一个与目标数据匹配程度最好的函数。回归是对真实值的一种 逼近预测。
分
类:将数据映射到 预先定义的 群组或类。算法要求基于数据 特征值 来定义类别,把具有某些特征的数据项映 射到给定的某个类别上。分类并没有逼近的概念,最终正确结果只有一个。 在机器学习方法里,分类属于监督学习。
区别:分类模型采用 离散预测值,回归模型采用 连续的预测值。
4.聚类
聚类:就是将相似的事物聚集在一起,不相似的事物划分到不同的类别的过程。
聚类分析:又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法,同时也是数据掘的一个重要算法。
应用:
根据症状归纳特定疾病、发现信用卡高级用户、根据上网行为对客户分群从而进行精确营销等。
原理:
在没有给定划分类的情况下,根据信息相似度进行信息聚类。
聚类的输入是一组 未被标记的数据,根据样本特征的距离或相似度进行划分。划分原则是保持最大的 组内相似性和最小的组间相似性。 不同于分类,聚类事先 没有任何训练样本,直接对数据进行建模。
聚类分析的目标,就是在相似的基 础上收集数据来分类。 在机器学习方法里,聚类属于无监督学习。
5.时序模型
不管在哪个领域中(如金融学、经济学、生态学、神经科学、物理学等),时间序列(
time series
)数据都是一 种重要的结构化数据形式。在多个时间点观察或测量到的任何事物,都可以形成一段时间序列。时间序列大多都 是固定频率的,数据点将根据某种规律定期出现。
应用:
下个季度的商品销量或库存量是多少?明天用电量是多少?今天的北京地铁13号线的人流情况?
原理:
描述 基于时间或其他序列的 经常发生的规律或趋势,并对其建模。 与回归一样,用已知的数据预测 未来的值,但这些数据的区别是 变量所处时间的不同。重点考察数据之间在 时间维度上的关联性。
6.常见的数据分析应用场景
1.市场营销
1.营销响应分析建模(逻辑回归,决策树)
2. 净提升度分析建模(关联规则)
3. 客户保有分析建模(卡普兰梅尔分析,神经网络)
4. 购物蓝分析(关联分析Apriori)
5. 自动推荐系统(协同过滤推荐,基于内容推荐,基于人口统计推荐,基于知识推荐,组合推荐,关联规则)
6. 客户细分(聚类)
7. 流失预测(逻辑回归)
2.风险管理
1. 客户信用风险评分(SVM,决策树,神经网络)1. 市场风险评分建模(逻辑回归和决策树)
2. 运营风险评分建模(SVM)
3. 欺诈检测(决策树,聚类,社交网络)
二.python使用numpy库的基础用法
![](https://img-blog.csdnimg.cn/direct/e7235e04e2cc4a82918c903f53d17168.jpeg)
1.什么是 numpy
numpy提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于多维数组(矩阵)处理的 库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。本身是由C语言开发是 个很基础的扩展,Python其余的科学计算扩展大部分都是以此为基础。 多用于在大型、多维数组上执行的数值运算:
1. 高性能科学计算和数据分析的基础包
2.. ndarray,多维数组(矩阵),具有矢量运算能力,快速、节省空间
3. 矩阵运算,无需循环,可完成类似Matlab中的矢量运算
4. 线性代数、随机数生成
注意:ndarray的下标从0开始,且数组里的所有元素必须是相同类型
2.使用numpy的环境设置
-
安装Python: 如果你还没有安装Python,可以从Python官网下载并安装。安装时确保将Python添加到环境变量。
-
安装pip(如果尚未安装): pip
是Python的包管理器,用于安装和管理Python库。大多数Python安装都会自带pip
。可以通过在命令行中输入以下命令来检查pip
是否已安装:
pip --version
-
如果pip
未安装,你可以按照官方pip安装指南进行安装。
-
安装NumPy: 使用pip
安装NumPy非常简单。在你的命令行(命令提示符、终端或Anaconda Promt)中输入以下命令:
pip install numpy
这将从Python包索引(PyPI)下载并安装最新版本的NumPy。
-
验证NumPy安装: 安装完成后,你可以通过在Python解释器中输入以下命令来验证NumPy是否正确安装:
import numpy print(numpy.__version__)
如果没有错误消息,并且能够打印出NumPy版本号,那么NumPy已经成功安装。
3. numpy的基本用法
1. 创建数组
NumPy 的主要数据结构是 ndarray
,即 N 维数组。可以通过多种方式创建数组:
# 创建一维数组
a = np.array([1, 2, 3, 4, 5])
# 创建二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
# 创建多维数组
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
2. 数组属性
NumPy 数组有多个属性,如形状(shape)、大小(size)和数据类型(dtype):
# 打印数组的属性
print(a.shape) # 输出: (5,)
print(a.size) # 输出: 5
print(a.dtype) # 输出: int64
print(b.shape) # 输出: (2, 3)
print(b.size) # 输出: 6
3. 切片和索引
NumPy 数组支持切片和索引操作,与 Python 列表类似:
# 索引
print(b[0]) # 输出: [1 2 3]
# 切片
print(b[:, 1]) # 输出: [2 5]
4.广播
NumPy 允许不同大小的数组进行算术运算,这个过程称为广播:
# 创建两个形状不同的数组
x = np.array([1, 2, 3])
y = np.array([[1], [2], [3]])
# 广播后的加法
print(x + y) # 输出: [[2 3 4]
# [3 4 5]
# [4 5 6]]
5.算术运算
NumPy 支持基本的算术运算,如加法、减法、乘法和除法:
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
print(x + y) # 输出: [5 7 9]
print(x - y) # 输出: [-3 -3 -3]
print(x * y) # 输出: [ 4 10 18]
print(x / y) # 输出: [0.25 0.4 0.5 ]
6.统计方法
NumPy 提供了多种统计方法,如求和、平均值、最大值和最小值:
x = np.array([1, 2, 3])
print(np.sum(x)) # 输出: 6
print(np.mean(x)) # 输出: 2.0
print(np.max(x)) # 输出: 3
print(np.min(x)) # 输出: 1
7. 布尔数组
NumPy 支持布尔运算,并可以用于创建布尔数组:
x = np.array([1, 2, 3, 4, 5])
y = np.array([5, 1, 3, 5, 6])
# 比较
bool_array = (x > 2)
print(bool_array) # 输出: [False False True True False]
8.排序
NumPy 数组可以沿着轴进行排序:
x = np.array([3, 1, 4, 2])
print(np.sort(x)) # 输出: [1 2 3 4]
9.线性代数
NumPy 还提供了线性代数的功能,如矩阵乘法:
a = np.array([[1, 2], [3, 4]])
b = np.array([[2, 0], [1, 2]])
# 矩阵乘法
print(np.dot(a, b)) # 输出: [[4 4]
# [10 8]]
这些只是 NumPy 的一些基础用法。NumPy 的功能非常强大,包括但不限于随机数生成、傅里叶变换、高级索引等.
4.使用一个简单的例子使用NumPy 进行数据分析
假设我们有一个包含学生成绩的数组,其中包含缺失值(用 np.nan
表示)根据可视化工具和NumPy,我们可以观察成绩的分布情况,比如成绩是否集中在某个区间,或者是否有成绩异常高或低的学生。例如,如果直方图中某个区间的条形特别高,说明成绩在该区间内集中;如果某个成绩远离大多数成绩,可能是异常值。
import numpy as np
import matplotlib.pyplot as plt
# 创建数据
scores = np.array([82, 76, np.nan, 90, 78, 85, 91, 73, np.nan, 88])
# 处理缺失值,这里选择用平均值填充
mean_score = np.nanmean(scores)
filled_scores = np.where(np.isnan(scores), mean_score, scores)
# 统计分析
average_score = np.mean(filled_scores)
median_score = np.median(filled_scores)
max_score = np.max(filled_scores)
min_score = np.min(filled_scores)
print(f"平均成绩: {average_score:.2f}")
print(f"中位数成绩: {median_score:.2f}")
print(f"最高成绩: {max_score}")
print(f"最低成绩: {min_score}")
# 数据可视化
plt.hist(filled_scores, bins=np.arange(35, 101, 5), alpha=0.75)
plt.title('学生成绩分布')
plt.xlabel('成绩')
plt.ylabel('学生数量')
plt.show()
# 可视化成绩分布
plt.hist(scores_filled, bins=10, alpha=0.75)
plt.title('学生成绩分布')
plt.xlabel('成绩')
plt.ylabel('频率')
plt.show()
这个例子展示了如何使用 NumPy 进行基本的数据分析和可视化。在实际应用中,数据分析可能涉及更复杂的数据清洗、转换、统计建模和可视化技术。对于更高级的数据分析,你可能需要使用如 pandas、SciPy、scikit-learn 等库。