Python读取表格
1. 引言
在日常生活和工作中,我们常常需要处理各种各样的数据。而表格是一种常见的数据结构,它以行和列的形式,将数据按照一定的规则组织起来。
为了对表格中的数据进行分析、统计、可视化等操作,我们通常需要将表格读取到我们的程序中。而Python作为一种功能强大且易学的编程语言,提供了丰富的库和函数来帮助我们读取和处理表格数据。
本文将介绍如何使用Python读取表格,具体包括以下几个方面:
1. 了解常见的表格文件格式
2. 使用pandas库读取不同格式的表格文件
3. 使用openpyxl库读取Excel文件
4. 使用xlrd库读取旧版本的Excel文件
5. 使用csv库读取逗号分隔的文本文件
6. 使用matplotlib库绘制部分读取到的数据
2. 常见的表格文件格式
在开始讲解如何读取表格之前,首先我们需要了解一下常见的表格文件格式。常见的表格文件格式包括Excel、CSV、TSV等。
- Excel文件:以
.xlsx
或.xls
作为文件扩展名,是一种常见的电子表格文件格式。一个Excel文件可以包含多个工作表,每个工作表由多个行和列组成。 - CSV文件:以
.csv
作为文件扩展名,是一种纯文本文件格式,以逗号分隔字段值。每一行表示表格中的一条记录,每个字段对应一个列。 - TSV文件:以
.tsv
作为文件扩展名,是一种与CSV类似的纯文本文件格式,以制表符分隔字段值。与CSV不同的是,TSV使用制表符而不是逗号作为字段分隔符。
3. 使用pandas库读取不同格式的表格文件
pandas是一个功能强大的数据处理库,在读取和处理表格数据方面提供了丰富的函数和方法。下面将介绍如何使用pandas库读取不同格式的表格文件。
首先,我们需要先安装pandas库。在终端或命令提示符中运行以下命令进行安装:
pip install pandas
3.1 读取Excel文件
在使用pandas读取Excel文件之前,我们需要先安装openpyxl库。openpyxl是一个用于读取和写入Excel文件的库,可以与pandas库配合使用。
pip install openpyxl
接下来,我们可以使用pandas的read_excel()
函数来读取Excel文件。下面是一个示例代码:
import pandas as pd
# 读取Excel文件
data = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 输出前5行数据
print(data.head())
运行结果如下所示:
ID Name Age
0 1 Tom 20
1 2 John 18
2 3 Amy 22
3 4 Bob 19
4 5 Ann 21
在上述代码中,我们通过read_excel()
函数来读取名为data.xlsx
的Excel文件中名为Sheet1
的工作表。然后,使用head()
方法输出前5行数据。
3.2 读取CSV文件
读取CSV文件与读取Excel文件类似,也是使用pandas的read_csv()
函数来实现。下面是一个读取CSV文件的示例代码:
import pandas as pd
# 读取CSV文件
data = pd.read_csv('data.csv')
# 输出前5行数据
print(data.head())
运行结果如下所示:
ID Name Age
0 1 Tom 20
1 2 John 18
2 3 Amy 22
3 4 Bob 19
4 5 Ann 21
在上述代码中,我们通过read_csv()
函数来读取名为data.csv
的CSV文件。然后,使用head()
方法输出前5行数据。
3.3 读取TSV文件
读取TSV文件与读取CSV文件类似,同样是使用pandas的read_csv()
函数,但是需要指定delimiter
参数为制表符(\t
)。下面是一个读取TSV文件的示例代码:
import pandas as pd
# 读取TSV文件
data = pd.read_csv('data.tsv', delimiter='\t')
# 输出前5行数据
print(data.head())
运行结果与读取CSV文件的结果相同。
3.4 其他格式的表格文件
除了Excel、CSV、TSV文件外,pandas还支持读取其他格式的表格文件,例如JSON、HDF、HTML等。具体的读取方式和参数设置,请参考pandas官方文档。
4. 使用openpyxl库读取Excel文件
在使用pandas读取Excel文件时,我们依赖于openpyxl库来实现底层的Excel文件读取功能。
除了使用pandas库,我们也可以直接使用openpyxl库来读取Excel文件。下面是一个使用openpyxl库读取Excel文件的示例代码:
from openpyxl import load_workbook
# 加载Excel文件
workbook = load_workbook('data.xlsx')
# 获取第一个工作表
sheet = workbook['Sheet1']
# 读取数据
data = []
for row in sheet.iter_rows(values_only=True):
data.append(row)
# 输出前5行数据
for row in data[:5]:
print(row)
运行结果与使用pandas库读取相同。
在上述代码中,我们首先使用load_workbook()
函数加载名为data.xlsx
的Excel文件,然后通过['Sheet1']
来获取名为Sheet1
的工作表。接着,使用iter_rows()
函数逐行读取工作表中的数据,并使用values_only=True
来获取值而不是单元格对象。最后,将每一行的数据添加到列表data
中,并输出前5行数据。
5. 使用xlrd库读取旧版本的Excel文件
除了使用openpyxl库读取Excel文件外,我们还可以使用xlrd库来读取旧版本的Excel文件(.xls格式)。
首先,我们需要安装xlrd库。在终端或命令提示符中运行以下命令进行安装:
pip install xlrd
下面是一个使用xlrd库读取Excel文件的示例代码:
import xlrd
# 打开Excel文件
workbook = xlrd.open_workbook('data.xls')
# 获取第一个工作表
sheet = workbook.sheet_by_index(0)
# 读取数据
data = []
for row in range(sheet.nrows):
data.append(sheet.row_values(row))
# 输出前5行数据
for row in data[:5]:
print(row)
运行结果与使用openpyxl库读取相同。
在上述代码中,我们首先使用open_workbook()
函数打开名为data.xls
的Excel文件。然后通过sheet_by_index(0)
来获取第一个工作表。接着,使用nrows
属性获取工作表的行数,使用row_values(row)
来读取每一行的数据,并将其添加到列表data
中。最后,输出前5行数据。
6. 使用csv库读取逗号分隔的文本文件
除了支持使用pandas库读取CSV文件之外,我们也可以使用内置的csv库来读取逗号分隔的文本文件。
下面是一个使用csv库读取逗号分隔的文本文件的示例代码:
import csv
# 读取CSV文件
with open('data.csv', 'r') as file:
reader = csv.reader(file)
data = [row for row in reader]
# 输出前5行数据
for row in data[:5]:
print(row)
运行结果与使用pandas库读取相同。
在上述代码中,我们通过打开文件的方式读取名为data.csv
的CSV文件。然后,使用csv.reader()
函数创建一个读取器对象。使用列表推导式将每一行的数据添加到列表data
中。最后,输出前5行数据。
7. 使用matplotlib库绘制部分读取到的数据
一旦我们成功读取了表格数据,我们就可以对其进行各种操作,例如统计分析、可视化等。
下面是一个使用matplotlib库绘制部分读取到的数据的示例代码:
import pandas as pd
import matplotlib.pyplot as plt
# 读取Excel文件
data = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 取前10条数据
data_subset = data.head(10)
# 绘制柱状图
plt.bar(data_subset['Name'], data_subset['Age'])
plt.xlabel('Name')
plt.ylabel('Age')
plt.title('Age Distribution')
plt.show()
运行结果将显示一个柱状图,展示了读取到的前10条数据的姓名和年龄。
在上述代码中,我们使用了之前介绍的方法来读取名为data.xlsx
的Excel文件中的Sheet1
工作表,并使用head(10)
方法取前10行数据。然后,使用matplotlib库的bar()
函数绘制柱状图,xlabel()
和ylabel()
方法设置坐标轴标签,title()
方法设置图表标题,最后使用show()
方法显示图表。
8. 总结
本文介绍了如何使用Python读取表格文件。通过pandas库可以方便地读取和处理Excel、CSV等格式的表格文件,而openpyxl和xlrd库分别提供了读取Excel文件的功能。另外,csv库也提供了读取逗号分隔的文本文件的能力。