个性化阅读
专注于IT技术分析

Python Excel教程:权威指南

本文概述

Python Excel教程:权威指南1

使用Python和Excel进行数据科学

你可能已经知道Excel是Microsoft开发的电子表格应用程序。你可以使用此易于访问的工具在表中组织, 分析和存储数据。而且, 该软件已在全球许多不同的应用领域中广泛使用。

而且, 无论你是否喜欢, 这都适用于数据科学。

你有时需要处理这些电子表格, 但也不一定总是要继续使用它。因此, Python开发人员已实现了不仅可以读取, 写入和操作这些文件, 而且还可以读取许多其他类型的文件的方法。

今天的教程将为你提供一些有关如何使用Excel和Python的见解。它将为你提供软件包的概述, 你可以使用这些软件包在Python的帮助下将这些电子表格加载并写入文件。你将学习如何使用pandas, openpyxl, xlrd, xlutils和pyexcel等软件包。

(尝试此交互式课程:使用Python导入数据, 以使用Python处理CSV和Excel文件。)

Python Excel教程:权威指南2

数据是你的起点

当你开始进行数据科学项目时, 通常会使用收集到的数据(可能是通过网络抓取)来工作, 但通常可能会使用从其他地方(例如Kaggle, Quantl等)下载的数据集。

但通常, 你还会在Google或其他用户共享的存储库中找到数据。这些数据可能在Excel文件中, 或者保存到扩展名为.csv的文件中, …有时似乎无限可能。但是, 只要有数据, 第一步就是要确保你使用的是定性数据。

对于电子表格, 你应该证实它是定性的, 因为你不仅可能要检查此数据是否可以回答你所想到的研究问题, 而且还希望你是否可以信任该电子表格所保存的数据。

检查电子表格的质量

要检查电子表格的整体质量, 可以查看以下清单:

  • 电子表格是否代表静态数据?
  • 电子表格会混合数据, 计算和报告吗?
  • 电子表格中的数据是否完整且一致?
    • 你的电子表格是否具有系统的工作表结构?
    • 你检查电子表格中的实时公式是否有效?

此问题列表是为了确保你的电子表格不会违反行业中公认的最佳做法。当然, 上面的列表并不详尽:你可以遵循许多通用规则, 以确保电子表格不是丑小鸭。但是, 上面要解决的问题与你要确保电子表格是否定性最相关。

电子表格数据的最佳做法

在使用Python阅读电子表格之前, 你还需要考虑调整文件以符合一些基本原则, 例如:

  • 电子表格的第一行通常保留给标题, 而第一列则用于标识采样单位。
  • 避免名称, 值或带有空格的字段。否则, 每个单词将被解释为一个单独的变量, 从而导致与数据集中每行元素数量有关的错误。考虑使用:
    • 下划线,
    • 破折号
    • 驼峰式大小写, 其中每个文本部分的首字母大写, 或
    • 串联词
  • 短名称优先于长名称。
  • 尽量避免使用包含符号的名称, 例如?, $, %, ^, &, *, (, ), -, #, ?、、 <, >, /, |, \, [, ], {, 和};
  • 删除你在文件中所做的所有注释, 以避免多余的列或不适用项添加到文件中;和
  • 确保数据集中的任何缺失值都用NA表示。

接下来, 在进行了必要的更改之后或对数据进行了彻底检查之后, 请确保已保存所做的更改。这样, 你可以稍后重新访问数据以进行编辑, 添加更多数据或更改它们, 同时保留可能用于计算数据的公式等。

如果你使用的是Microsoft Excel, 则会看到有很多选项可以保存文件:除了默认扩展名.xls或.xlsx之外, 你还可以转到”文件”标签, 然后点击”保存”为”, 然后选择列为”另存为类型”选项的扩展名之一。保存数据科学数据集的最常用扩展名是.csv和.txt(作为制表符分隔的文本文件)。根据你选择的保存选项, 数据集的字段由制表符或逗号分隔, 这将构成数据集的”字段分隔符”。

现在已经检查并保存了数据, 你可以开始准备工作区了!

准备工作区

准备工作区是确保开始良好的第一步。第一步是检查你的工作目录。

在终端中工作时, 你可以先导航到文件所在的目录, 然后启动Python。这也意味着你必须确保文件位于你要使用的目录中!

但是, 也许更重要的是, 如果你已经开始了Python会话并且对正在使用的目录一无所知, 则应考虑执行以下命令:


# Import `os` 
import os

# Retrieve current working directory (`cwd`)
cwd = os.getcwd()
cwd

# Change directory 
os.chdir("/path/to/your/folder")

# List all files and directories in current directory
os.listdir('.')

很好, 是吗?

你会发现这些命令不仅对加载数据至关重要, 而且对进一步分析也至关重要。现在, 让我们继续:你已经完成所有检查, 保存了数据并准备了工作区。

你已经可以开始使用Python读取数据了吗?

安装软件包以读取和写入Excel文件

不幸的是, 你仍然需要再做一件事。

即使你还不知道导入数据所需的软件包, 也必须确保在需要的时候准备好一切来安装这些软件包。

其他工作区准备:pip

因此, 你需要安装pip和setuptools。如果你安装的Python 2> = 2.7.9或Python 3> = 3.4, 则无需担心, 因为通常你已经准备好了。在这种情况下, 只需确保已升级到最新版本即可。

为此, 请在终端中运行以下命令:


# For Linux/OS X
pip install -U pip setuptools

# For Windows
python -m pip install -U pip setuptools

如果尚未安装pip, 请运行python get-pip.py脚本(可在此处找到)。此外, 如果你需要更多帮助以正确安装所有组件, 则可以按照页面上的安装说明进行操作。

安装Anaconda

如果你使用Python进行数据科学, 则可以考虑的另一种选择是安装Anaconda Python发行版。这样一来, 你就可以轻松快速地开始进行数据科学, 因为你不必担心单独安装进行数据科学所需的软件包。

如果你是初学者, 这尤其方便, 但是即使对于经验丰富的开发人员, 这也是一种快速测试某些内容而无需单独安装每个软件包的方法。

Anaconda包含100个最流行的Python, R和Scala软件包, 用于数据科学以及几个开源开发环境, 例如Jupyter和Spyder。如果你想在本教程之后开始使用Jupyter Notebook, 请转至此页面。

你可以在这里安装Anaconda。按照说明进行安装, 就可以开始了!

将Excel文件加载为Pandas DataFrames

这就是设置环境所需要做的一切!

现在, 你可以开始导入文件了。

在Pandas软件包的帮助下, 与文件进行数据科学合作时, 通常会使用这些文件来导入文件。 Pandas库基于NumPy构建, 并为Python编程语言提供了易于使用的数据结构和数据分析工具。

(有抱负的)数据科学家经常使用这个强大而灵活的库, 将其数据转换为可高度表达其分析结果的数据结构。

如果你已经可以通过Anaconda使用Pandas, 则可以使用pd.Excelfile()将文件加载到Pandas DataFrames中:


# Import pandas
import pandas as pd

# Assign spreadsheet filename to `file`
file = 'example.xlsx'

# Load spreadsheet
xl = pd.ExcelFile(file)

# Print the sheet names
print(xl.sheet_names)

# Load a sheet into a DataFrame by name: df1
df1 = xl.parse('Sheet1')

如果你没有安装Anaconda, 则只需执行pip install pandas即可在你的环境中安装Pandas软件包, 然后执行上面的代码块中包含的命令。

小菜一碟吧?

要读取.csv文件, 你具有类似的功能以将数据加载到DataFrame中:read_csv()。这是如何使用此功能的示例:


# Import pandas
import pandas as pd

# Load csv
df = pd.read_csv("example.csv") 

默认情况下, 此函数将考虑的定界符是逗号, 但是如果需要, 可以指定其他定界符。转到文档, 找出可以指定哪些其他参数以使导入成功!

请注意, 还有read_table()和read_fwf()函数可将一般定界文件和固定宽度格式行的表读入DataFrames。对于第一个功能, 默认的定界符是制表符, 但你可以再次覆盖此定界符并指定其他分隔符。此外, 还有其他功能可用于在DataFrames中获取数据:你可以在此处找到它们。

如何将Pandas DataFrames写入Excel文件

假设分析完数据后, 你想将数据写回到新文件中。还有一种使用to_excel()函数将Pandas DataFrames写回到文件的方法。

但是, 在使用此功能之前, 如果要将数据写入.xlsx文件中的多个工作表, 请确保已安装XlsxWriter:


# Install `XlsxWriter` 
pip install XlsxWriter

# Specify a writer
writer = pd.ExcelWriter('example.xlsx', engine='xlsxwriter')

# Write your DataFrame to a file     
yourData.to_excel(writer, 'Sheet1')

# Save the result 
writer.save()

请注意, 在上面的代码块中, 你使用ExcelWriter对象输出DataFrame。

换句话说, 可以将writer变量传递给to_excel()函数, 还可以指定工作表名称。这样, 你可以将包含数据的工作表添加到现有工作簿中:你可以使用ExcelWriter将多个(略有不同)DataFrame保存到一个工作簿中。

这一切都意味着, 如果你只想将一个DataFrame保存到文件中, 则也可以不安装XlsxWriter软件包。然后, 你只需不指定将传递给pd.ExcelWriter()函数的引擎参数。其余步骤保持不变。

与用于读取.csv文件的函数类似, 你还具有to_csv()函数, 可将结果写回到以逗号分隔的文件中。再次使用与读取文件时相同的方式工作:


# Write the DataFrame to csv
df.to_csv("example.csv")

如果要用制表符分隔文件, 也可以将\ t传递给sep参数以使其清楚。请注意, 还有许多其他功能可用于输出文件。你可以在这里找到所有这些。

用于解析Excel文件并将其写回Python的程序包

除了你可能会经常使用的Pandas软件包来加载数据外, 你还可以使用其他软件包来用Python获取数据。我们对可用软件包的概述基于此页面, 其中包括可用于在Python中处理Excel文件的软件包列表。

在下面的内容中, 你将借助一些真实但简单的示例来了解如何使用这些软件包。

使用虚拟环境

安装这些软件包的一般建议是在没有系统软件包的Python virtualenv中进行安装。你可以使用virtualenv创建隔离的Python环境:它创建一个文件夹, 其中包含使用Python项目所需软件包的所有必需可执行文件。

要开始使用virtualenv, 首先需要安装它。然后, 转到要放置项目的目录。在此文件夹中创建一个virtualenv, 并在需要时加载特定的Python版本。然后, 你激活虚拟环境。之后, 你可以开始加载其他软件包, 开始使用它们, 等等。

提示:完成后, 别忘了停用环境!


# Install virtualenv
$ pip install virtualenv

# Go to the folder of your project
$ cd my_folder

# Create a virtual environment `venv`
$ virtualenv venv

# Indicate the Python interpreter to use for `venv`
$ virtualenv -p /usr/bin/python2.7 venv

# Activate `venv`
$ source venv/bin/activate

# Deactivate `venv`
$ deactivate

请注意, 刚开始使用Python进行数据科学项目时, 虚拟环境乍一看似乎有些麻烦。而且, 尤其是当你只考虑一个项目时, 你可能根本看不清为什么根本需要虚拟环境。

但是请考虑一下, 当你同时运行多个项目并且不希望它们共享同一Python安装时, 这将是多么容易。或者, 当你的项目有冲突的要求时, 虚拟环境将派上用场!

现在, 你终于可以开始安装和导入已阅读的要加载到电子表格数据中的软件包。

如何使用openpyxl读取和写入Excel文件

如果要读取和写入.xlsx, xlsm, xltx和xltm文件, 通常建议使用此软件包。

使用pip安装openpyxl:你已经在上一节中看到了如何做!

安装此软件包的一般建议是在没有系统软件包的Python虚拟环境中进行安装。你可以使用虚拟环境创建隔离的Python环境:它创建一个文件夹, 其中包含使用Python项目所需的软件包所需的所有可执行文件。

转到项目所在的目录, 然后重新激活虚拟环境venv。然后继续使用pip安装openpyxl以确保你可以使用它读写文件:


# Activate virtualenv
$ source activate venv

# Install `openpyxl` in `venv`
$ pip install openpyxl

既然你已经安装了openpyxl, 就可以开始加载数据了。

但是那是什么数据呢?

包含你要在Python中获取的数据的工作簿包含以下表格:

工作表1 工作表2 工作表3

如你所见, load_workbook()函数将文件名作为参数, 并返回一个代表该文件的工作簿对象。你可以通过运行type(wb)进行检查。请记住, 确保你位于电子表格所在的正确目录中。否则, 导入时会出现错误!


# Import `load_workbook` module from `openpyxl`
from openpyxl import load_workbook

# Load in the workbook
wb = load_workbook('./test.xlsx')

# Get sheet names
print(wb.get_sheet_names())

请记住, 你可以在os.chdir()的帮助下更改工作目录。

你会看到上面的代码块返回了你在Python中加载的工作簿的工作表名称。接下来, 你可以使用此信息来检索工作簿的单独工作表。

你还可以使用wb.active查看当前处于活动状态的工作表。如下面的代码所示, 你还可以使用它从工作簿中加载另一个工作表:


# Get a sheet by name 
sheet = wb.get_sheet_by_name('Sheet3')

# Print the sheet title 
sheet.title

# Get currently active sheet
anotherSheet = wb.active

# Check `anotherSheet` 
anotherSheet

你会发现, 使用这些工作表对象, 你一见钟情。但是, 你可以使用方括号[]从工作簿工作表的某些单元格中检索值, 并向其中传递要从中检索值的确切单元格。

请注意, 这似乎与选择, 获取和索引NumPy数组和Pandas DataFrames非常相似, 但这并不是你要做的所有事情来获取值。你需要添加属性值:


# Retrieve the value of a certain cell
sheet['A1'].value

# Select element 'B2' of your sheet 
c = sheet['B2']

# Retrieve the row number of your element
c.row

# Retrieve the column letter of your element
c.column

# Retrieve the coordinates of the cell 
c.coordinate

如你所见, 除了值之外, 还有其他属性可用于检查单元格, 即行, 列和坐标。

  • row属性将返回2;
  • 将column属性添加到c将得到’B’, 并且
  • 坐标将返回” B2″。

你还可以使用cell()函数检索单元格值。传递行和列参数, 并向这些参数添加与你要检索的单元格的值相对应的值, 当然, 不要忘记添加属性值:


# Retrieve cell value 
sheet.cell(row=1, column=2).value

# Print out values in column 2 
for i in range(1, 4):
     print(i, sheet.cell(row=i, column=2).value)

请注意, 如果你未指定属性值, 则会返回<Cell Sheet3.B1>, 它不会告诉你有关该特定单元格中包含的值的任何信息。

你会看到在range()函数的帮助下使用了for循环, 可以帮助你打印出第2列中具有值的行的值。如果这些特定的单元格为空, 则只需返回None。如果你想进一步了解for循环, 请考虑参加我们的数据科学中级Python课程。

此外, 你还可以调用一些特殊函数来获取其他某些值, 例如get_column_letter()和column_index_from_string。

这两个函数已经或多或少地说明了你可以使用它们检索的内容, 但为清楚起见, 最好将它们明确化:尽管你可以使用前者检索列的字母, 但可以进行反向操作或获取a的索引当你将一封信传递给后者时, 该列。你可以在下面查看其工作方式:


# Import relevant modules from `openpyxl.utils`
from openpyxl.utils import get_column_letter, column_index_from_string

# Return 'A'
get_column_letter(1)

# Return '1'
column_index_from_string('A')

你已经检索了在特定列中具有值的行的值, 但是如果要打印文件的行而不只是关注单个列, 该怎么办?

当然, 你可以使用另一个for循环!

例如, 你说要集中在” A1″和” C3″之间的区域, 第一个指定要聚焦区域的左上角, 第二个指定要聚焦区域的右下角。

该区域将是你在下面的第一行代码中看到的所谓的cellObj。然后, 你说对于该区域中的每个单元格, 你将打印该单元格中包含的坐标和值。在每一行的末尾, 你将打印一条消息, 表明该cellObj区域的行已被打印。


# Print row per row
for cellObj in sheet['A1':'C3']:
      for cell in cellObj:
              print(cells.coordinate, cells.value)
      print('--- END ---')

再次注意, 区域的选择与选择, 获取和索引列表以及NumPy数组元素非常相似, 在这里你还使用方括号和冒号:表示要获取值的区域。此外, 上述循环还很好地利用了单元格属性!

为了使上面的说明和代码更加直观, 你可能需要检查一下循环结束后返回的结果:


('A1', u'M')
('B1', u'N')
('C1', u'O')
--- END ---
('A2', 10L)
('B2', 11L)
('C2', 12L)
--- END ---
('A3', 14L)
('B3', 15L)
('C3', 16L)
--- END ---

最后, 你可以使用一些属性来检查导入结果, 即max_row和max_column。这些属性当然是确保你正确加载数据的一般方法, 但是它们仍然可以而且将很有用。


# Retrieve the maximum amount of rows 
sheet.max_row

# Retrieve the maximum amount of columns
sheet.max_column

这一切都非常好, 但是我现在几乎可以听到你的想法, 这似乎是处理这些文件的一种非常困难的方法, 尤其是在你仍然想操纵数据的情况下。

必须有一些容易的事情, 对吧?

你是对的!

openpyxl支持Pandas DataFrames!你可以使用Pandas包中的DataFrame()函数将工作表的值放入DataFrame中:


# Import `pandas` 
import pandas as pd

# Convert Sheet to DataFrame
df = pd.DataFrame(sheet.values)

如果要指定标题和索引, 则需要添加一些代码:


# Put the sheet values in `data`
data = sheet.values

# Indicate the columns in the sheet values
cols = next(data)[1:]

# Convert your data to a list
data = list(data)

# Read in the data at index 0 for the indices
idx = [r[0] for r in data]

# Slice the data at index 1 
data = (islice(r, 1, None) for r in data)

# Make your DataFrame
df = pd.DataFrame(data, index=idx, columns=cols)

接下来, 你可以开始使用Pandas软件包必须提供的所有功能来处理数据。但是请记住, 你处于虚拟环境中, 因此, 如果该软件包尚不存在, 则需要通过pip重新安装。

要将Pandas DataFrames写回到Excel文件, 可以轻松使用utils模块中的dataframe_to_rows()函数:


# Import `dataframe_to_rows`
from openpyxl.utils.dataframe import dataframe_to_rows

# Initialize a workbook 
wb = Workbook()

# Get the worksheet in the active workbook
ws = wb.active

# Append the rows of the DataFrame to your worksheet
for r in dataframe_to_rows(df, index=True, header=True):
    ws.append(r)

但这绝对不是全部! openpyxl软件包为你提供了将数据写回到Excel文件, 更改单元格样式或使用仅写模式的高度灵活性, 这使其成为你经常使用电子表格时肯定需要了解的软件包之一。

提示:在此处详细了解如何更改单元格样式, 更改为只写模式或该软件包如何与NumPy一起使用。

现在, 让我们还检查一些其他软件包, 你可以使用这些软件包在Python中获取电子表格数据。

在结束本节之前, 请记住, 完成操作后不要忘记停用虚拟环境!

你准备好发现更多吗?

读取和格式化Excel文件:xlrd

如果你想从扩展名为.xls或.xlsx的文件中读取数据并格式化数据, 则此软件包非常理想。


# Import `xlrd`
import xlrd

# Open a workbook 
workbook = xlrd.open_workbook('example.xls')

# Loads only current sheets to memory
workbook = xlrd.open_workbook('example.xls', on_demand = True)

当你不想考虑整个工作簿时, 可能需要使用诸如sheet_by_name()或sheet_by_index()之类的函数来检索要在分析中使用的图纸。


# Load a specific sheet by name
worksheet = workbook.sheet_by_name('Sheet1')

# Load a specific sheet by index 
worksheet = workbook.sheet_by_index(0)

# Retrieve the value from cell at indices (0, 0) 
sheet.cell(0, 0).value

最后, 你还可以从工作表中检索使用索引表示的特定坐标处的值。

继续阅读xlwt和xlutils, 以了解有关它们与xlrd软件包的关系的更多信息!

使用xlwt将数据写入Excel文件

如果要创建包含数据的电子表格, 除了XlsxWriter软件包外, 还可以使用xlwt软件包。 xlwt是将数据和格式信息写入扩展名为.xls的文件的理想选择。

当你手动要写入文件时, 它的工作原理如下:


# Import `xlwt` 
import xlwt

# Initialize a workbook 
book = xlwt.Workbook(encoding="utf-8")

# Add a sheet to the workbook 
sheet1 = book.add_sheet("Python Sheet 1") 

# Write to the sheet of the workbook 
sheet1.write(0, 0, "This is the First Cell of the First Sheet") 

# Save the workbook 
book.save("spreadsheet.xls")

如果你想将数据写入文件, 但又不想麻烦自己做任何事情, 则可以始终使用for循环来自动完成整个过程。编写一个脚本, 在其中初始化工作簿并向其中添加工作表。指定一个带有列的列表, 一个带有将在工作表中填充的值的列表。

接下来, 你将创建一个for循环, 以确保所有值都进入文件:你说, 对于0到4(不包括5)范围内的每个元素, 你都将要做某事。你将逐行填写值。为此, 你需要指定一个在每个循环中都跳起来的行元素。接下来, 你将有另一个for循环, 该循环将遍历工作表的各列。你说的是, 对于工作表中的每一行, 你都将查看其随附的列, 并为该行中的每一列填写一个值。用值填充该行的所有列后, 你将转到下一行, 直到没有剩余的行。


# Initialize a workbook
book = xlwt.Workbook()

# Add a sheet to the workbook
sheet1 = book.add_sheet("Sheet1")

# The data
cols = ["A", "B", "C", "D", "E"]
txt = [0, 1, 2, 3, 4]

# Loop over the rows and columns and fill in the values
for num in range(5):
      row = sheet1.row(num)
      for index, col in enumerate(cols):
          value = txt[index] + num
          row.write(index, value)

# Save the result
book.save("test.xls")

要再次使该代码的结果可视化, 你可以在此处查看结果文件的屏幕截图:

用Python编写xlsx文件

既然你已经了解了xlrd和xlwt可能如何协同工作, 现在该看一下与这两个紧密相关的软件包:xlutils。

实用工具集合:xlutils

该软件包基本上是需要xlrd和xlwt的实用程序的集合, 该实用程序包括复制和修改或过滤现有文件的功能。一般来说, openpyxl现在涵盖了这些用例。

返回有关openpyxl的部分, 以获取有关如何使用此包在Python中获取数据的更多信息。

使用pyexcel读取.xls或.xlsx文件

可以用来在Python中读取电子表格数据的另一个软件包是pyexcel;这是一个Python包装器, 提供了一个API, 用于读取, 操作和写入.csv, .ods, .xls, .xlsx和.xlsm文件中的数据。当然, 对于本教程, 你将只关注.xls和.xls文件。

要将数据获取到数组中, 可以使用pyexcel包中包含的get_array()函数:


# Import `pyexcel`
import pyexcel

# Get an array from the data
my_array = pyexcel.get_array(file_name="test.xls")

你还可以在有序列表的字典中获取数据。你可以使用get_dict()函数:


# Import `OrderedDict` module 
from pyexcel._compact import OrderedDict

# Get your data in an ordered dictionary of lists
my_dict = pyexcel.get_dict(file_name="test.xls", name_columns_by_row=0)

# Get your data in a dictionary of 2D arrays
book_dict = pyexcel.get_book_dict(file_name="test.xls")

但是, 你还会看到, 如果要获取二维数组的字典, 或者换句话说, 要获取单个字典中的所有工作簿表, 则可以求助于get_book_dict()。

请注意, 上面提到的这两个数据结构, 即电子表格的数组和字典, 使你可以使用pd.DataFrame()创建数据的DataFrame。这将使你更轻松地处理数据!

最后, 借助get_records()函数, 你也可以使用pyexcel检索记录。只要将参数file_name传递给函数, 你就应该返回一个字典列表:


# Retrieve the records of the file
records = pyexcel.get_records(file_name="test.xls")

要了解如何操作Python列表, 请查看我们的18个最常见的Python列表问题。

用pyexcel写入文件

就像使用此程序包将数据轻松加载到阵列中一样, 你也可以轻松地将阵列导出回电子表格中。使用save_as()函数并将数组和目标文件的名称传递给dest_file_name参数:


# Get the data
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# Save the array to a file
pyexcel.save_as(array=data, dest_file_name="array_data.xls")

请注意, 如果要指定定界符, 则可以添加dest_delimiter参数, 并在””之间传递要用作定界符的符号。

但是, 如果你有字典, 则需要使用save_book_as()函数。将二维字典传递给bookdict并指定文件名, 你就可以了:


# The data
2d_array_dictionary = {'Sheet 1': [
                                   ['ID', 'AGE', 'SCORE']
                                   [1, 22, 5], [2, 15, 6], [3, 28, 9]
                                  ], 'Sheet 2': [
                                    ['X', 'Y', 'Z'], [1, 2, 3], [4, 5, 6]
                                    [7, 8, 9]
                                  ], 'Sheet 3': [
                                    ['M', 'N', 'O', 'P'], [10, 11, 12, 13], [14, 15, 16, 17]
                                    [18, 19, 20, 21]
                                   ]}

# Save the data to a file                        
pyexcel.save_book_as(bookdict=2d_array_dictionary, dest_file_name="2d_array_data.xls")

使用上面的代码块中打印的代码时应记住的一点是, 字典中数据的顺序将不被保留。如果你不想这样做, 则需要绕行一小步。你可以在这里读到所有和它有关的。

读写.csv文件

如果你仍在寻找允许你加载和将数据写入.csv文件的程序包, 除了Pandas之外, 最好使用csv程序包:


# import `csv`
import csv

# Read in csv file 
for row in csv.reader(open('data.csv'), delimiter=', '):
      print(row)
      
# Write csv file
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
outfile = open('data.csv', 'w')
writer = csv.writer(outfile, delimiter=';', quotechar='"')
writer.writerows(data)
outfile.close()

还要注意, NumPy包具有genfromtxt()函数, 该函数可让你以数组形式加载.csv文件中包含的数据, 然后将其放入DataFrames中。你可以在srcmini的NumPy教程中找到有关此功能的更多信息。

最后检查你的数据

有了可用数据后, 请不要忘记最后一步:检查数据是否已正确加载。如果已将数据放在DataFrame中, 则可以通过运行以下命令轻松快速地检查导入是否成功:


# Check the first entries of the DataFrame
df1.head()

# Check the last entries of the DataFrame
df1.tail()

提示:当你考虑将文件加载为Pandas DataFrame时, 请使用srcmini的Pandas备忘单。有关如何操作Python DataFrames的更多指导, 请阅读我们的Pandas教程:Python中的DataFrames。

如果数据在数组中, 则可以通过使用以下数组属性进行检查:shape, ndim, dtype等:


# Inspect the shape 
data.shape

# Inspect the number of dimensions
data.ndim

# Inspect the data type
data.dtype

如果你想进一步了解如何利用NumPy数组进行数据分析, 请考虑同时阅读我们的NumPy教程, 并且绝对不要忘记使用我们的NumPy备忘单!

下一步是什么?

恭喜你!你已经成功完成了我们的教程, 该教程教会了你所有有关如何使用Python读取Excel文件的知识。

但是, 导入数据只是数据科学工作流程的开始。在环境中获取电子表格中的数据后, 你可以专注于真正重要的事情:分析数据。如果你已将数据加载到DataFrames中, 请考虑参加我们的Pandas Foundations课程或使用Pandas操作DataFrames课程。

但是, 如果你想继续研究此主题, 请考虑签出PyXll, 它可以用Python编写函数并在Excel中调用它们。

赞(0)
未经允许不得转载:srcmini » Python Excel教程:权威指南

评论 抢沙发

评论前必须登录!