Fork me on GitHub

统计学学习笔记(二)数据整理与展示

这是崔斯特的第十八篇原创文章

这是统计学的第二篇笔记,主要记录了如何整理数据与展示数据,书本上是这样说,但是我觉得现在人们会更多的叫做数据清洗与数据可视化。命名无所谓,掌握方法就好。

下面是正文。

可以接着这里看哦 统计学学习笔记(一)


数据整理与展示

3.1 数据的预处理

3.1.1 数据审核

  • 概念:检查数据是否有错误
  • 对于通过调查取得的原始数据,主要从完整性和准确性两个方面去审核
  • 对于通过其他渠道获得的二手数据,主要审核数据的适用性和时效性

3.1.2 数据筛选

  • 删除某些不符合要求的数据和有明显错误的数据
  • 将符合某种特定条件的数据筛选出来,而将不符合特定条件的数据予以剔除
  • Excel举例

3.1.3 数据排序

  • 概念:按一定顺序将数据排列,以便于研究者通过数据发现一些明显的特征或趋势,找到解决问题的线索
  • 通过数据类型选择排序方式:字母型数据、汉字型数据、数值型数据

这个好像也叫做数据清洗

3.2 品质数据的整理与展示

3.2.1 频数与频数分布

  • 落在某一特定类别中的数据个数,成为频数
  • 把各个类别及落在其中的相应频数全部列出,并用表格形式表现出来,成为频数分布

好像不止表格吧

  • 一个总体(或样本)中各个部分的数据与全部数据之比,成为比例
  • 将比例乘以100得到的数值,成为百分比或百分数用%表示
  • 总体(或样本)中各不同类别数值之间的比值,成为比率

3.2.2 品质数据的展示

  1. 条形图
  2. 饼图
  3. 环形图

3.3 数值型数据的整理与展示

3.3.1 数据分组

  • 根据统计分析的需要,将原始数据按照某种标准划分成不同的组别,成为数据分组
  • 在组距分组中,一个组的最小值称为下限,一个组的最大值称为上限
  • 每一组的上限和下限之间的中间值称为组中值

3.3.2 数值型数据的图示

  • 分组数据看分布:直方图(histogram)
  • 未分组数据看分布:茎叶图和箱型图
  • 多变量数据的展示:雷达图

3.4 使用图表的注意事项

优秀图表特征:

  1. 显示数据
  2. 让读者把注意力放在图表内容上
  3. 避免歪曲
  4. 强调数据之间的比较
  5. 服务于一个明确的目的
  6. 有对图形的描述统计和文字说明

优秀图形应当:

  1. 精心设计,有助于洞察问题的实质
  2. 使复杂的观点得到简明、确切、高效的阐述
  3. 能在最短的时间内、以最少的笔墨给读者提供大量的信息
  4. 是多维的
  5. 表述数据的真实情况

品质数据

您应该会和我一样提问,什么是品质数据?

品质数据:对产品或商品进行各种化学、物理、力学等试验后所得出的数据。

  1. 品质数据:对产品或商品进行各种化学、物理、力学等试验后所得出的数据。
  2. 品质型数据:按品质标志分组所得到数据,包括分类数据和顺序数据,他们在整理和图形展示上的方法大体相同。

本文中提到的品质数据应该是后者

数据可视化

这里重点说下数据图表的选择。

就我自己的工作中,比较常用的就是直方图、折线图与饼图,词云图(如果算的话)。教材中也说了很多没用过的图,这个东西还是要根据自己的具体业务来操作。

这里推荐一个很好的网站,图表使用

这个网站有多好,你一看便知,不多解释。

数据清洗

有人说:一个分析项目基本八成时间在洗数据。那么什么是清洗数据。

数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。与问卷审核不同,录入后的数据清理一般是由计算机而不是人工完成。

数据清洗的方法

  1. 解决不完整数据( 即值缺失)的方法
  2. 错误值的检测及解决方法
  3. 重复记录的检测及消除方法
  4. 不一致性( 数据源内部及数据源之间)的检测及解决方法
  5. 转换构造
  6. 数据压缩

老规矩,还是放一点代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib.path as path
fig, ax = plt.subplots()
# Fixing random state for reproducibility
np.random.seed(19680801)
# histogram our data with numpy
data = np.random.randn(1000)
n, bins = np.histogram(data, 50)
# get the corners of the rectangles for the histogram
left = np.array(bins[:-1])
right = np.array(bins[1:])
bottom = np.zeros(len(left))
top = bottom + n
# we need a (numrects x numsides x 2) numpy array for the path helper
# function to build a compound path
XY = np.array([[left, left, right, right], [bottom, top, top, bottom]]).T
# get the Path object
barpath = path.Path.make_compound_path_from_polys(XY)
# make a patch out of it
patch = patches.PathPatch(barpath)
ax.add_patch(patch)
# update the view limits
ax.set_xlim(left[0], right[-1])
ax.set_ylim(bottom.min(), top.max())
plt.show()

直方图绘制

参考