今天我们来了解一下在数据分析领域最为常见一种文件格式:CSV 文件,然后我们再将上一篇文章案例中抓取到的数据保存到 CSV 文件中。
1、什么是CSV文件?
CSV(Comma-Separated Values) 是一种使用逗号分隔来实现存储表格数据的文本文件。
我们都知道表格有多种形式的存储,比如 Excel 的格式或者数据库的格式。CSV 文件也可以存储表格数据,并且能够被多种软件兼容,比如 Excel 就能直接打开 CSV 文件的表格,很多数据库软件也支持导入 CSV 文件。除了兼容性好之外,CSV 格式还是所有能存储表格的格式中最简单的一种。
比如我们新建一个文件,名称改为:info.csv,在文件中输入以下数据:
姓名,年龄,籍贯,部门
小明,22,河北,IT部
小亮,25,广东,IT部
小E,23,四川,财务部
保存成功后,我们使用excel打开这个csv文件,可以看到:
打开后的展示样式与excel基本一样,在这里,我们需要注意csv文件的一些事项:
- 表格中的一行,对应 CSV 文件中的一行;
- 一行中不同单元格的内容,在 CSV 文件中用逗号分隔;
- 务必保证每行的逗号数量是一致的(对应表格中每行的单元格一致)。
在了解csv的格式后,下面我们再来看一下Python中关于csv的模块。
2、Python中的csv模块
了解了 CSV 文件的基本概念,今天我们来看如何使用 Python 来操作 CSV 文件。因为对于数据分析场景而言,最常见的操作就是读取和写入。
(1)从csv文件中读取内容
现在我们来读取上面的info.csv文件内容。
现在VS CODE 中新建一个cell,导入csv模块
import csv
要读取 CSV 文件,我们需要用到 CSV 模块中的 DictReader 类,DictReader 可以将每一行以字典的形式读出来,key 就是表头,value 就是对应单元格的内容。代码如下:
# 通过 open 函数打开 info.csv ,并将文件对象保存在 fo 中
fo = open("info.csv ")
# 通过打开 CSV 文件的文件对象作为参数来创建 DictReader 类的对象,存在 reader 变量中
reader = CSV.DictReader(fo)
# 调用 reader 对象的 fieldnames 属性,获取 CSV 文件中表格的表头
headers = reader.fieldnames
# 关闭文件
fo.close()
# 打印表头的信息
print(headers)
输出如下:
['姓名', '年龄', '籍贯', '部门']
接下来,我们尝试获取表格的实际内容。
# 打开 info.csv
fo = open("info.csv ")
# 创建 DictReader 对象
reader = CSV.DictReader(fo)
# 创建列表,用于存储读到的行
row_list = []
# 使用遍历循环,直接对 reader 对象进行遍历
# 每次执行循环时,row 变量都存储了当前行的内容
for row in reader:
# 直接将 row 变量添加到行列表中
row_list.append(row)
# 关闭文件
fo.close()
# 打印第一行的表格数据
print(row_list[0])
打印的结果显示:
{'姓名': '小明', '年龄': '22', '籍贯': '河北', '部门': 'IT部'}
可以看到,我们拿到了第一行的内容,并且是以字典的形式,字典把每个单元格的内容和表头联系了起来,表头是 key,而具体内容就是 value。每行都是这样的一个字典,所有字典都存储在 row_list 列表中。
接下来,我们来演示对于 row_list 列表的常见操作:打印某一行、某一列的值。
print("打印年龄一列的内容:")
# 遍历循环 row_list,d 为循环变量
for d in row_list:
# 因为 d 是字典,直接打印 key 为 年龄的值即可。
print(d["年龄"])
# 打印一个换行
print("")
print("打印第三行的内容:")
d = row_list[2]
print("姓名:", d["姓名"])
print("年龄:",d["年龄"])
print("籍贯:",d["籍贯"])
print(&