Python 学习第 15 天,从今天开始,我们将进入 "数据分析" 的学习阶段。╰(*°▽°*)╯
今天,大致了解一下关于 "数据" 的基础知识,作为 Python 实战的引入。
一、数据分类
1. 定性数据
描述事物的性质,规定事物类别的文字描述性数据。
**(1) 定类数据:**各类别之间呈并列关系,没有大小之分,没有定量信息无法进行四则运算;
如,性别(男、女)、颜色(红、黄、蓝、绿)
**(2) 定序数据:**数据之间可以进行排序,有大小之分,但也无法进行四则运算。
如,产品质量(合格、不合格)、等级(优秀、良好、及格、不及格)
2. 定量数据
以数量形式存在的属性,并因此可以对其进行测量。
**(1) 定距数据:**具有间距特征的变量,有单位,没有绝对零点(即 "0' 代表数值),可以做加减运算,不能做乘除运算;
如,温度(-18℃、0℃、20℃)、年龄(3岁、10岁、18岁)
**(2) 定比数据:**有测量单位,也有绝对零点的数据(即 "0" 代表没有),可以进行加减乘除。
如,营业额(10000元)、土地面积(1 万公顷)
二、统计指标
1. 描述 "集中趋势"
**(1) 平均数:**所有数据之和 ÷ 数据的个数
**缺点:**对异常值(极大、极小值)比较敏感,即如果数据中出现一个比普遍数值大很多或小很多的数,其平均值就会显著被拉高或降低
**(2) 中位数:**将一组数据从小到大排序,如果数据总数是奇数,选最中间的 1 个数作为 "中位数",如果是偶数,取最中间的 2 个数的平均值作为 "中位数"。
**(3) 众数:**一组数据中出现最多的 1 个或多个数据。
2. 描述 "离散趋势"
**(1) 极差:**相距最远的两个点之间的距离,即 "最大值 - 最小值"。极差越大,数据间的差异越大;
**(2) 方差:**每个数据与 "平均值" 之差的平方和 ÷ 数据的个数。
**(3) 标准差:**方差的开方。用于描述一组数据的波动大小。
**(4) 平均差:**每个数据与 "平均值" 之差的绝对值之和 ÷ 数据的个数。平均差越大,数据越分散,反之越集中
3. 描述 "分布形态"
将数据用图表绘制后,图表呈现的趋势。

三、异常值识别与处理
"异常值" 就是明显的离群值,它可能是统计时出现的笔误,也可能是脱离大多数数据正常现象。但无论是哪种情况导致的异常值,都会对一些统计指标的计算带来影响。所以,我们需要将其找出,具体情况具体分析与处理。
在统计学中,常用于判断 "异常值" 的方法有:箱线图法、正态分布图法
四、数据分析步骤
**1. 明确问题:**明确分析该组 / 类数据的需求与目的;
**2. 理解数据:**获取数据、探索数据;
**3. 数据清洗:**处理异常值;
**4. 统计分析与可视化:**将清晰后的数据用统计学的方法进行分析,再用合适的图表进行展示;
**5. 结论与建议:**对分析结果、图表进行总结与建议。
五、Excel 在数据分析中的应用
Excel 适用于分析数据量较小的数据库。
Excel 文件的后缀有:.xls,.xlsx(比 . xls 文件能存储的数量更大),.csv(实际上以一种文本格式,但在数据分析中常用)。
1. 公式与函数
(1) 点击录入结果的单元格;
(2) 输入 "=";
(3) 引用单元格 / 区域 / 名称;
(4) 输入运算符 / 选择函数;
(5) 点击 "回车",得到计算结果。
|----------------------------------------------|-------------------------------------------------------------|
| 函数 | 功能 |
| sum() | 求和 |
| average() | 求均值 |
| max() | 找最大值 |
| min() | 找最小值 |
| count() | 统计数据个数 |
| counta() | 统计非空数据个数 |
| ABS() | 返回绝对值 |
| Round(number, num_digits) | 保留 number 的 num_digits 位小数 |
| left(text, number) | 返回 text 中最左边 number 个字符 |
| right(text, number) | 返回 text 中最右边 number 个字符 |
| mid(text, number 1, number 2) | 在 text 中从 number 1 起返回 number 2 个字符 |
| len(text) | 返回 text 中有几个字符 |
| SUBSTITUTE | 用新文本替代旧文本 |
| search | 在一个文本值中查找另一个文本值(不区分大小写) |
| find | 在一个文本值中查找另一个文本值(区分大小写) |
| IF(logical_text, v1, v2) | 条件判断,当 logical_text 为真时,返回 v1,反之返回 v2 |
| AND(logical_text 1, logical_text 2, ...... ) | 当所有 logical_text 为真时,返回 True,有一个 logical_text 为假时,返回 False |
| OR(logical_text 1, logical_text 2, ...... ) | 至少有一个 logical_text 为真时,返回 True,所有 logical_text 为假时,返回 False |
| NOT(logical_text) | 当 logical_text 为真时,返回 False,当 logical_text 为假时,返回 True |
| YEAR(date) | 计算 date 的年份值 |
| MONTH(date) | 计算 date 的月份值 |
| DAY(date) | 计算 date 的天数值 |
| DATE(year, month, day) | 返回对应的日期 |
| TODAY() | 返回系统的当前日期 |
| NOW() | 返回系统的当前日期和时间 |
| datedif("开始日期", "结束日期", "y/m/d") | 返回两个日期之间的时间间隔 "y" 年,"m" 月,"d' 天 |