数据摄取:表格格式与清理
立即解锁
发布时间: 2025-09-07 01:59:18 阅读量: 14 订阅数: 21 AIGC 


数据清洗的艺术与实践
# 数据摄取:表格格式与清理
## 1. 表格格式概述
大量数据以表格格式存在,表格格式即具有行和列的格式。从理论上讲,如果有“关系”的概念,每个结构化数据集合都可以用多个“扁平”或“表格”集合来表示。自 1970 年以来,关系数据库管理系统(RDBMS)取得了巨大成功,世界上很大一部分数据存储在 RDBMS 中,另一大部分数据则以非关系型但仍是表格形式存在,其中的关系可以临时但不繁琐地推断出来。
数据摄取主要关注使数据变“脏”的结构或机械问题,后续会更多关注数据的内容或数值问题。本章将讨论包括 CSV、电子表格、SQL 数据库和科学数组存储格式等表格格式,最后会介绍数据框的一些通用概念,数据科学家通常使用数据框来处理表格数据。
### 1.1 数据清理准备
运行标准的设置代码,引入 Python 和 R 库,为数据清理做准备:
```python
from src.setup import *
%load_ext rpy2.ipython
```
```R
%%R
library(tidyverse)
```
## 2. 数据整理
### 2.1 整洁数据的概念
Hadley Wickham 和 Garrett Grolemund 在《R for Data Science》中推广了“整洁数据”的概念。整洁数据将变量(表格的列,也称为特征或字段)与观测值(表格的行,也称为样本)仔细分开,每个单元格中有一个数据项。然而,实际遇到的数据往往不是这样排列的,需要进行规范化处理。
### 2.2 示例:学生成绩数据
以小学班级学生成绩数据为例,原始数据如下:
```python
students = pd.read_csv('data/students-scores.csv')
students
```
| Last Name | First Name | 4th Grade | 5th Grade | 6th Grade |
| --- | --- | --- | --- | --- |
| Johnson | Mia | A | B+ | A- |
| Lopez | Liam | B | B | A+ |
| Lee | Isabella | C | C- | B- |
| Fisher | Mason | B | B- | C+ |
| Gupta | Olivia | B | A+ | A |
| Robinson | Sophia | A+ | B- | A |
这种数据布局便于人类阅读和可视化,但当班级升入 7 年级或获取 3 年级信息时,需要更改列的数量和位置,而不是简单地添加行。实际上,年级是一个值,而不是变量。
为了使数据更适合分析,需要将其整理为整洁数据。在 Pandas 中,可以使用 `DataFrame.melt()` 方法:
```python
students.melt(
id_vars=["Last Name", "First Name"],
var_name="Level",
value_name="Score"
).set_index(['First Name', 'Last Name', 'Level'])
```
在 R 的 Tidyverse 中,可以使用 `pivot_longer()` 函数实现类似的操作:
```R
%%R
studentsR <- read_csv('data/students-scores.csv')
studentsR %>%
pivot_longer(c('4th Grade', '5th Grade', '6th Grade'),
names_to = "Level",
values_to = "Score")
```
### 2.3 数据整理操作的逆操作
要将整理后的数据恢复原状,可以使用 R 中的 `pivot_wider()` 函数,在 Pandas 中有 `.pivot()`、`.pivot_table()` 和 `.groupby()` 结合 `.unstack()` 等方法。
## 3. CSV 文件
### 3.1 CSV 文件概述
逗号分隔值(CSV)文件等分隔文本文件无处不在,它们是每行包含多个值,并用逗号等半保留字符分隔这些值的文本文件。CSV 文件通常是在其他表格表示之间传输数据的交换格式,很多数据从始至终都是 CSV 格式。
读取分隔文件的速度不是最快也不是最慢,对于大多数数据科学家处理的小数据集(通常指少于 100k 行)来说,速度不是主要问题。
### 3.2 CSV 文件的优缺点
#### 优点
- 几乎可以在文本编辑器中轻松打开并理解,也可以使用命令行工具进行处理,在没有专业读取器和库的情况下,几乎可以完全手动修复。
#### 缺点
- 是第二容易出现结构问题的格式,虽然所有
0
0
复制全文
相关推荐









