使用 Python 读取 Excel 文件
Python 编程语言以其在数据科学领域的使用而闻名。数据科学通常涉及处理数据并借助曲线图(例如线图、小提琴图、直方图和热图)以及数学计算(例如均值、中值、众数、概率、方差等)进行分析。Python 更合适的是它使文件读取和操作非常无缝。由于数据通常以流行的文件格式表示,例如 xls
、xlsx
、csv
、txt
等,因此使用 Python 处理它们是小菜一碟。
本文将通过一些示例介绍如何使用 Python 读取 excel 文件。例如,我们将考虑一个示例 excel 文件,你可以从此处下载该文件,以便我们都在同一页面上。只需将其重命名为 sample.xls
以使以下代码片段起作用,或更改以下代码片段本身中的文件名。
在 Python 中使用 pandas
库读取 Excel 文件
在 Python 中,我们可以使用 pandas
库来读取 Excel 文件。pandas
模块是一个用 Python 编写的健壮、强大、快速和灵活的开源数据分析和操作库。如果你的机器或虚拟环境中没有安装它,请使用以下命令。
- 安装
pandas
:pip install pandas
或pip3 install pandas
请参阅以下代码以使用 pandas
模块读取 excel 文件。
import xlrd
import pandas
df = pandas.read_excel("sample.xls")
print("Columns")
print(df.columns)
输出:
Columns
Index(['Segment', 'Country', 'Product', 'Discount Band', 'Units Sold',
'Manufacturing Price', 'Sale Price', 'Gross Sales', 'Discounts',
' Sales', 'COGS', 'Profit', 'Date', 'Month Number', 'Month Name',
'Year'],
dtype='object')
使用 Python 中的 xlrd
库读取 Excel 文件
在 Python 中,我们可以使用 xlrd
库来读取 excel 文件。xlrd
模块是一个 Python 库,用于读取和格式化 Excel 文件。如果你的机器或虚拟环境中没有安装它,请使用以下命令。
- 要安装
xlrd
,请使用以下命令。
pip install xlrd
或者,
pip3 install xlrd
使用 xlrd
读取 excel 文件,请参考以下代码。
from xlrd import open_workbook
wb = open_workbook('sample.xls')
sheet = wb.sheet_by_index(0)
sheet.cell_value(0, 0)
columns = []
print("Columns")
for i in range(sheet.ncols):
columns.append(sheet.cell_value(0, i))
print(columns)
输出:
Columns
['Segment', 'Country', 'Product', 'Discount Band', 'Units Sold', 'Manufacturing Price', 'Sale Price', 'Gross Sales', 'Discounts', ' Sales', 'COGS', 'Profit', 'Date', 'Month Number', 'Month Name', 'Year']
下面简单解释一下上面代码的作用。它首先在 open_workbook()
函数的帮助下为 excel 文件创建一个文件描述符。然后它将文件指针重置为 (0,0)
位置或左上角的单元格。接下来,它遍历第一行并将所有列名存储在一个变量中。通常,列名出现在第一行;这就是代码考虑该位置的原因。如果列名位于不同的行上,可以将语句 sheet.cell_value(0, i)
中的 0
值更改为他们希望的任何行号。本质上,(0, i)
代表 y
和 x
坐标,其中 y
是 0
,而 x
是 i
,考虑到原点 (0, 0)
出现在文件的左上角。
在 Python 中通过 Excel 文件执行的任务示例
让我们看一些我们可以对 excel 文件执行的简单任务,以更好地理解这两个库。
打印 Excel 文件的前 3 行
使用 pandas
库
import pandas
df = pandas.read_excel("sample.xls")
count = 3
for index, row in df.iterrows():
print(row, end = "\n\n")
if index == count - 1:
break
输出:
Segment Government
Country Canada
Product Carretera
Discount Band None
Units Sold 1618.5
Manufacturing Price 3
Sale Price 20
Gross Sales 32370.0
Discounts 0.0
Sales 32370.0
COGS 16185.0
Profit 16185.0
Date 2014-01-01 00:00:00
Month Number 1
Month Name January
Year 2014
Name: 0, dtype: object
Segment Government
Country Germany
Product Carretera
Discount Band None
Units Sold 1321.0
Manufacturing Price 3
Sale Price 20
Gross Sales 26420.0
Discounts 0.0
Sales 26420.0
COGS 13210.0
Profit 13210.0
Date 2014-01-01 00:00:00
Month Number 1
Month Name January
Year 2014
Name: 1, dtype: object
Segment Midmarket
Country France
Product Carretera
Discount Band None
Units Sold 2178.0
Manufacturing Price 3
Sale Price 15
Gross Sales 32670.0
Discounts 0.0
Sales 32670.0
COGS 21780.0
Profit 10890.0
Date 2014-06-01 00:00:00
Month Number 6
Month Name June
Year 2014
Name: 2, dtype: object
使用 xlrd
库
from xlrd import open_workbook
wb = open_workbook('sample.xls')
sheet = wb.sheet_by_index(0)
sheet.cell_value(0, 0)
count = 3
for i in range(1, count + 1):
for j in range(sheet.ncols):
print(sheet.cell_value(i, j), end = ", ")
print()
输出:
Government, Canada, Carretera, None, 1618.5, 3.0, 20.0, 32370.0, 0.0, 32370.0, 16185.0, 16185.0, 41640.0, 1.0, January, 2014,
Government, Germany, Carretera, None, 1321.0, 3.0, 20.0, 26420.0, 0.0, 26420.0, 13210.0, 13210.0, 41640.0, 1.0, January, 2014,
Midmarket, France, Carretera, None, 2178.0, 3.0, 15.0, 32670.0, 0.0, 32670.0, 21780.0, 10890.0, 41791.0, 6.0, June, 2014,
打印特定列的值
使用 pandas
库
import pandas
df = pandas.read_excel("sample.xls")
column = df.columns[4]
print(column)
print("-" * len(column))
for index, row in df.iterrows():
print(row[column])
输出:
Units Sold
----------
1618.5
1321.0
2178.0
888.0
2470.0
1513.0
921.0
2518.0
1899.0
1545.0
2470.0
2665.5
958.0
2146.0
345.0
615.0
292.0
974.0
2518.0
1006.0
367.0
883.0
549.0
788.0
2472.0
1143.0
1725.0
912.0
2152.0
1817.0
1513.0
1493.0
1804.0
2161.0
1006.0
1545.0
2821.0
345.0
2001.0
2838.0
2178.0
888.0
...
使用 xlrd
库
from xlrd import open_workbook
wb = open_workbook('sample.xls')
sheet = wb.sheet_by_index(0)
sheet.cell_value(0, 0)
column_index = 4
column = sheet.cell_value(0, column_index)
print(column)
print("-" * len(column))
for row in range(1, sheet.nrows):
print(sheet.cell_value(row, column_index))
输出:
Units Sold
----------
1618.5
1321.0
2178.0
888.0
2470.0
1513.0
921.0
2518.0
1899.0
1545.0
2470.0
2665.5
958.0
2146.0
345.0
615.0
292.0
974.0
2518.0
1006.0
367.0
883.0
549.0
788.0
2472.0
1143.0
1725.0
912.0
2152.0
1817.0
1513.0
1493.0
1804.0
2161.0
1006.0
1545.0
2821.0
345.0
2001.0
2838.0
2178.0
888.0
...