六、数据整理
译者:飞龙
“数据整理”通常是指将原始数据,转换为可用于你感兴趣的分析的可用形式,包括加载,聚合和格式化。
注意:在整个笔记本中,我们将使用 '!' 运行 shell 命令cat
,来打印出示例数据文件的内容。
Python I/O
Python 有一些基本的 I / O (输入/输出)工具。
这是 I / O 的官方 Python 文档。
# 查看示例数据文件
!cat files/dat.txt
'''
First line of data
Second line of data
'''
# 首先,显式打开文件对象进行读取
f_obj = open('files/dat.txt', 'r')
# 然后,你可以遍历文件对象,抓取每行数据
for line in f_obj:
# 请注意,我正在删除每行末尾的新行标记('\n')
print(line.strip('\n'))
# 完成后,必须关闭文件对象
f_obj.close()
'''
First line of data
Second line of data
'''
# 由于打开和关闭文件基本上总是在一起,因此有一个快捷方式来完成它们
# 使用 'with' 关键字打开文件,文件对象将在代码块的末尾自动关闭
with open('files/dat.txt', 'r') as f_obj:
for line in f_obj:
print(line.strip('\n'))
'''
First line of data
Second line of data
'''
Python 的 I / O是一种非常“低级”的读取数据文件的方法,并且通常需要大量工作来整理读取文件的细节 - 例如,在上面的示例中,明确地处理新行字符。
只要你有合理的结构化数据文件,使用标准化的文件类型,你就可以使用更高级的函数来处理很多这些细节 - 例如,将数据直接加载到 pandas 数据对象中。
Pandas I/O
Pandas 有一系列函数,可以将标准文件类型的整个文件自动读取到 pandas 对象中。
这是 I / O 的官方 Pandas 文档。
import pandas as pd
# Tab 补全来检查所有可用的读取函数
pd.read_
文件类型
存在许多不同的标准化(和非标准化)文件类型,其中可以存储数据。在这里,我们将从检查 CSV 和 JSON 文件开始。
CSV 文件
“逗号分隔值”文件存储数据,以逗号分隔。把它们想象成列表。
这是维基百科中 CSV 文件的更多信息。
# 我们来看一下 csv 文件(以纯文本打印)
!cat files/dat.csv
'''
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
'''
Python 中的 CSV 文件
# Python 有一个专门用于处理 csv 的模块
import csv
# 我们可以使用 csv 模块读取我们的文件
with open('files/dat.csv') as csvfile:
csv_reader = csv.reader(csvfile, delimiter=',')
for row in csv_reader:
print(', '.join(row))
'''
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
'''
Pandas 中的 CSV 文件
# Pandas 也具有直接加载 csv 数据的函数
pd.read_csv?
# 让我们读入我们的 csv 文件
pd.read_csv(open('files/dat.csv'), header=None)
0 | 1 | 2 | 3 | |
---|---|---|---|---|
0 | 1 | 2 | 3 | 4 |
1 | 5 | 6 | 7 | 8 |
2 | 9 | 10 | 11 | 12 |
JSON 文件
JavaScript 对象标记文件可以存储层次化键/值对。把它们想象成字典。
这是来自 wikipedia 的 JSON 文件的更多信息。
# 我们来看一下 json 文件(以纯文本打印)
!cat files/dat.json
'''
{
"firstName": "John",
"age": 53
}
'''
# 将 json 看做与字典相似
d = {'firstName': 'John', 'age': '53'}
print(d)
# {'firstName': 'John', 'age': '53'}
Python 中的 JSON 文件
# Python 还有一个用于处理 json 的模块
import json
# 加载 json 文件
with open('files/dat.json') as dat_file:
dat = json.load(dat_file)
# 检查加载的数据类型
print(type(dat))
# <class 'dict'>
Pandas 中的 JSON 文件
# Pandas 还支持读取 json 文件
pd.read_json?
# 你可以使用 pandas 读取 json 格式的字符串
# 请注意,这里我指定将其作为 pd.Series 读取,因为只有一行数据
pd.read_json('{ "first": "Alan", "place": "Manchester"}', typ='series')
'''
first Alan
place Manchester
dtype: object
'''
# 用 pandas 读入我们的 json 文件
pd.read_json(open('files/dat.json'), typ='series')
'''
age 53
firstName John
dtype: object
'''