怎么提升数据分析能力——功法篇(上)

本文探讨了如何通过提升分析思路,运用金字塔思维、MECE原则以及人脑记忆技巧,解决数据分析师在工作中遇到的问题,如快速出热水的酒店案例和优化打击感的游戏设计,还提供了评估MMO玩家社交能力的小练习。

这篇文章适合做了一段时间数据分析工作,开始思考怎么继续提升自己的分析师、运营或者是实习了一段时间的同学,这时的你也许会想几个问题:

为什么我做出来的分析总觉得没有别人的那么高级?
老板为什么总说我的分析“太浅了”?
数据分析师每天的工作就是取数做需求?

这时候不妨问一问自己,每天占用你最多工作时间的是什么?
请添加图片描述
这是新手数据分析师最容易犯的一个问题:将过多的时间用于提取、计算、整理和阅读数据,而对分析思路不够重视

本文说的功法,就是如何提升你的分析思路。

金字塔思维

金字塔思维是一种经典的思维模型,它要求你建立一件事情的层次结构,像一座金字塔一样由下而上逐层归纳总结,或者是由上而下逐层拆分

MECE原则

MECE,是Mutually Exclusive Collectively Exhaustive 的简称,中文意思是“相互独立,完全穷尽”。对于一个议题,能够做到不重叠、不遗漏的分类,而且能够借此有效把握问题的核心,并解决问题的方法。其中:

相互独立(ME):横向来看,同一层的每个分类之间应该是不重叠,能够完全实现解耦的
完全穷尽(CE):纵向来看,每个分类的下一层应该能够完全穷尽这个分类所有方面

MECE是金字塔原理的核心,当你建立起一个思维的金字塔时,不妨试试用这个原则来检验一下你的金字塔是否完善

人脑记忆的3、5、7

这是让你的金字塔建起来更加合理的另一个重要原则

人的大脑总是很容易记住3个以内的东西,部分人能够较好的记住5个东西,当事物超过7个时大部分人没有办法记住

试想想,如果你要去买东西,当清单上只有面粉、糖、铅笔时,你是非常容易记住的;但如果再加上便利贴、剪刀、梨、鸡蛋、西瓜、胶水呢?

当面对繁杂的事物时,我们不妨用3、5、7的方式建立一个简单的金字塔:
请添加图片描述

这样是不是要更容易理解了呢?

概念介绍完了,接下来我们看看要怎么用金字塔原理

酒店是怎么实现3秒出热水的?

在这里插入图片描述

看到这个问题,你可能会想要抢答:预先存很多热水、高功率的热水器等等。但请注意,我们现在正在学习如何提升你的分析思路,在你回答之前不妨问问自己,你的答案是通过什么样的思路想出来的?

可以试试从水的输送链路出发,水供应到用户的手上可以简单的抽象为:
请添加图片描述

要实现出热水,我们理论上可以选择在任何一个环节进行加热

请添加图片描述
要实现3秒出水,其实每个环节都有相应的方案实现,但拥有各自的优劣势,因此我们可以再加上各自的优劣势
至此,一个金字塔就建立起来了。结合实际的场景,假设你是一家酒店的经理,你的客户抱怨热水需要等待太长时间,我们就可以基于此来进行分析并提供解决方案

怎么优化动作游戏的打击感?

在这里插入图片描述

用类似例子1的方法,我们可以第一步将打击感抽象为:用户操作->系统响应->用户感知,然后再一一进行补充。但很多时候,我们是很难做到直接构建出第一层的金字塔模型的。这时候我们不妨用一个笨方法:枚举和归类
首先我们列举出能想到的跟打击感有关的所有东西
请添加图片描述

然后,再试着将他们进行归类。根据我们从一个电子设备能得到的反馈我们可以试着从声音、图像和交互的角度来进行归类
请添加图片描述
这样就是一个简单的金字塔模型。如果我们继续枚举,找到足够多和“好的打击感”有关的东西,我们就能建立起一个完整的金字塔
请添加图片描述

小练习

怎么评估一个MMO玩家的社交能力?

### PL/SQL 的基本使用方法 PL/SQL 是一种强大的过程化语言,主要用于开发 Oracle 数据库中的存储过程、函数、触发器和包。以下是关于 PL/SQL 基本使用方法的一些重要知识点: #### 1. **PL/SQL 结构** PL/SQL 程序通常由三个部分组成:声明部分(可选)、执行部分(必选)和异常处理部分(可选)。 ```sql DECLARE -- 变量声明区域 BEGIN -- 执行逻辑区域 EXCEPTION -- 异常处理区域 END; ``` 这种结构使得开发者可以清晰地定义变量、编写逻辑并捕获可能发生的错误。 #### 2. **变量与数据类型** PL/SQL 支持多种内置的数据类型,例如 `NUMBER`、`VARCHAR2` 和 `DATE` 等。还可以通过 `%TYPE` 或 `%ROWTYPE` 来引用表列的类型[^2]。 示例代码: ```plsql DECLARE v_employee_id employees.employee_id%TYPE; -- 定义与表字段相同类型的变量 v_salary NUMBER(8, 2); -- 数字型变量 BEGIN SELECT employee_id, salary INTO v_employee_id, v_salary FROM employees WHERE rownum = 1; DBMS_OUTPUT.PUT_LINE('Employee ID: ' || v_employee_id || ', Salary: ' || v_salary); END; ``` #### 3. **控制结构** PL/SQL 提供了丰富的控制结构来实现条件判断和循环操作。常用的有 `IF...THEN...ELSE` 和 `LOOP` 系列语句。 ##### IF 判断 ```plsql DECLARE v_grade CHAR(1) := 'A'; BEGIN IF v_grade = 'A' THEN DBMS_OUTPUT.PUT_LINE('Excellent'); ELSIF v_grade = 'B' THEN DBMS_OUTPUT.PUT_LINE('Good'); ELSE DBMS_OUTPUT.PUT_LINE('Unknown Grade'); END IF; END; ``` ##### 循环 ```plsql DECLARE i INT := 1; BEGIN LOOP EXIT WHEN i > 5; -- 当满足退出条件时跳出循环 DBMS_OUTPUT.PUT_LINE('Iteration: ' || i); i := i + 1; END LOOP; END; ``` --- ### PL/SQL 编程技巧 为了提高 PL/SQL 开发效率和性能,以下是一些常见的编程技巧: #### 1. **批量处理** 利用游标或集合操作减少单条记录的操作次数,提升性能。例如,可以通过 `FORALL` 实现批量化 DML 操作。 ```plsql DECLARE TYPE emp_ids_t IS TABLE OF employees.employee_id%TYPE INDEX BY PLS_INTEGER; emp_ids emp_ids_t; BEGIN SELECT employee_id BULK COLLECT INTO emp_ids FROM employees WHERE department_id = 10; FORALL i IN INDICES OF emp_ids UPDATE employees SET salary = salary * 1.1 WHERE employee_id = emp_ids(i); COMMIT; END; ``` #### 2. **索引表与嵌套表** 合理使用索引表(Index-by Table)或嵌套表(Nested Table),可以在内存中缓存大量数据以加速计算。 ```plsql DECLARE TYPE nested_table_type IS TABLE OF VARCHAR2(100); my_nested_table nested_table_type := nested_table_type(); BEGIN my_nested_table.EXTEND(3); my_nested_table(1) := 'Value1'; my_nested_table(2) := 'Value2'; my_nested_table(3) := 'Value3'; FOR i IN 1..my_nested_table.COUNT LOOP DBMS_OUTPUT.PUT_LINE(my_nested_table(i)); END LOOP; END; ``` #### 3. **异常处理** 良好的异常处理机制可以帮助程序更好地应对意外情况。建议为常见错误设置自定义消息。 ```plsql BEGIN INSERT INTO non_existent_table VALUES (1); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error Code: ' || SQLCODE || ', Error Message: ' || SQLERRM); END; ``` #### 4. **优化查询** 尽量避免在循环内部多次调用数据库操作,而是采用绑定变量或子查询的方式一次性完成任务。这有助于降低上下文切换开销。 --- ### 示例:创建一个简单的存储过程 下面是一个完整的存储过程示例,展示了如何封装业务逻辑以便重复使用。 ```plsql CREATE OR REPLACE PROCEDURE update_employee_salary ( p_department_id IN employees.department_id%TYPE, p_percentage_increase IN NUMBER DEFAULT 10 ) AS BEGIN UPDATE employees SET salary = salary * (1 + p_percentage_increase / 100) WHERE department_id = p_department_id; COMMIT; END; / ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值