锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

一日一技:Python + Excel——飞速处理数据分析与处理

时间:2022-10-25 02:00:02 式数字变送器

Python 可以为 Excel 做些什么?如果你经历过工作簿意外崩溃、计算错误和无聊的手动操作,你一定想知道这个问题的答案。这本书是为工作表软件用户准备的全面、简洁的 Python 入门指南。不要因为害怕学习编程而避免学习 Python 即使是有经验的程序员也能从中受益,提供了一个极好的切入点。同时,他合理安排了这本书的内容,让它像你一样 Excel 用户更容易理解和应用。它可以指导人们如何在那里 Python 在最大限度地发挥的帮助下 Excel 的能力。假如你想知道 Excel 结合 Python 费利克斯是回答这个问题的最佳人选。希望你能像我一样喜欢这堂大师课程。

从 Excel 到 Python 这是一种自然过渡,也是一种自然过渡 Python 会让人想直接扔掉 Excel。这个想法虽然很吸引人,但要直接扔掉 Excel 还是不现实。Excel 它不会消失,它将继续作为一种广泛使用的桌面工具存在于企业和家庭中。这本书架起了连接这两个世界的桥梁。这本书解释了你应该怎么做 Python 集成到 Excel 中,以及如何从躲都躲不掉的巨型工作簿、上千个公式、奇形怪状的 VBA 解放代码。这本书可能是我读过的关于 Excel 书中最有用的一本,是每一本高级 Excel 用户必读书目。强烈推荐!

Excel 一直是金融界的基本工具,但有很多 Excel 应用程序用处不大。这本书地教会了读者如何使用它 xlwings 在帮助下,建立更好更强的建设 Excel 应用程序。

目录

工作表工具遇到瓶颈时,Excel 用户会开始质疑这些工具。当 Excel 当工作簿保存太多的数据和公式时,它们会变得越来越慢,甚至崩溃,这很常见。但在情况变得严重之前,也许你应该先考虑一下你的工作方式。例如,你处理非常重要的工作簿——一旦出现错误,就会造成经济损失或声誉损失;或者你每天花几个小时手动更新Excel 工作簿。如果遇到上述情况,就要学会如何用编程语言自动化这些操作。自动化可以避免人为错误,让你花更多的时间在更有生产力的任务上——而不是花很多时间复制和粘贴数据Excel 工作表中。

既然你已经知道为什么了 Python 可以成为 Excel 好伙伴好环境,开始好伙伴了
写下你的第一行 Python 代码了!

看到最后有惊喜哦,文末可以收到这本书的资料~

开发环境

2.1.1 安装
前往 Anaconda 主页下载最新版本 Anaconda 安装器(个人版,Individual Edition)。确保下载是 Python 3.x 版本的 64 位图形安装器。下载后,双击安装器开始安装,以确保所有选项保持默认值。请参考更详细的安装过程 Anaconda 官方文档。

安装好 Anaconda 之后,就可以启动了 Anaconda Prompt 我开始学习了。我们来看看这是什么,怎么工作。

2.1.2 Anaconda Prompt
Anaconda Prompt 实际上就是 Windows 命令提示符或 macOS 中间终端只配置了 Python 解释器和第三方包。Anaconda Prompt 是执行 Python 本书将大量使用代码最基本的工具来执行代码 Python 脚本和各种包提供的命令行工具。

2.1.3 Python REPL:交互式Python会话
在 Anaconda Prompt 中间,可以执行 python 命令启动交互式 Python 会话:
(base) C:\Users\felix>python
Python 3.8.5 (default, Sep 3 2020, 21:29:08) [...] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
macOS 终端中显示的文本可能有些不同,但事实是一样的。这本书是基于 Python 3.如果你想使用更新版本,你必须在书的主页上阅读说明书。

2.1.4 包管理器:Conda和pip
我前面提到过 Python 的包管理器 pip,负责下载、安装、更新和卸载 Python 包括依赖项和子依赖项。虽然 Anaconda 也可以配合 pip 但它也有一个名字叫工作 Conda 内置包管理器。Conda 一大优点是不仅可以安装 Python 还可以安装各种版本的包 Python解释器。总之,软件包可以算是 Python 添加标准库中没有的功能。第 5 章将介绍的pandas 就是这样的包。由于 Anaconda Python 发行版已经预装了这些包管理器,所以我们不需要手动安装。

2.1.5 Conda环境
你可能很好奇 Anaconda Prompt 每行开头的 (base) 到底是什么。目前正在激活 Conda环境名称。Conda 环境是被隔离的Python 世界定版本的世界 Python 还有一系列安装好的包。为什么非要这么做呢?当你同时开发多个项目时,每个项目都有不同的需求:一个项目可能需要 Python 3.8 和 pandas 0.25.0,另一个项目可能需要 Python3.9 和 pandas 1.0.0。由于为 pandas 0.25.0 编写的代码通常需要修改才能使用 pandas1.0.0 所以不能只更新 Python 和 pandas 保持代码原封不动。每个项目配置一个Conda 环境可以保证它们正确运行依赖项。Conda 环境虽然是 Anaconda 发行版的专有概念,但虚拟环境是所有的 Python 发行版的一般概念。相比之下 Conda 环境更强大,因为它不仅可以管理多个版本的软件包,还可以轻松管理不同版本的软件包 Python 解释器。

学习 点击拿走腾讯文档-在线文档https://docs.qq.com/doc/DT3VGWkhwRml0WlFC

Python入门

3.1 数据类型
和其它编程语言一样,Python 对数字、文本、布尔值等数据的区别对待。Python 给它们不同类型的数据的方法是给它们不同的数据(data type)。最常用的数据类型包括整形、浮点、布尔值和字符串。本节将通过一些例子逐一介绍。要理解什么是数据类型,首先需要解释什么是对象。
3.2 索引和切片
索引和切片允许您访问序列的指定元素。字符串是字符的序列,我们可以通过字符串学习这种机制。下一节还将介绍其他支持索引和切片的序列,如列表和元组。

3.3 数据结构
Python 为处理对象集合提供了强大的数据结构。本节将介绍列表、字典、元组和集合。虽然每个数据结构都有自己的特点,但它们有一个共同的特点,即可以存储多个对象。在VBA 您可以使用集合或数组来保存多个值。VBA 它还提供了一种叫做字典的数据结构 Python 中间的字典是一样的,但只能用于 Windows 中。先学习最常用的数据结构-列表。

3.4 控制流
本节会介绍 if 语句、 for 循环和 while 循环。 if 在满足特定条件时足特定条件时执行,for 循环和 while 代码块中的代码将在循环中反复执行。本节末尾,我还将介绍列表推导式,它可以取代 for 完成列表的结构。本节将首先介绍代码块的定义,并介绍Python 最值得注意的特点:具有特殊意义的空白。

3.5 组织代码
在本节中,我们将学习如何使代码形成可维护的结构:首先介绍函数的核心知识,然后教你如何将代码分成不同的 Python 模块。本节结束时,我们将利用所学知识研究标准库 datetime 模块。

3.6 PEP 8:Python风格指南
你可能很好奇为什么我有时会在变量名中添加划线,有时会大写所有的变量名。在本节中,我将介绍它 Python 官方风格指南解释了我在格式化方面的选择。Python使用所谓的Python 改进提案(Python Enhancement Proposals,PEP)讨论新语言特征的引入。Python 代码的风格指南就是其中之一。这些提案通常用数字表示,代码风格指南称为 PEP 8。PEP 8 是一系列的提供 Python 社区风格建议。如果每个使用相同代码的人都遵循相同的代码风格,那么代码的可读性就会更高。在开源的世界里,会有很多不认识的程序员开发同一个项目,遵循相同的代码风格尤为重要。

例 这个简短的3-2 Python 文件显示了最重要的编程惯例。
例 3-2 pep8_sample.py
"""这个脚本显示了一些PEP 8的规则 ?
""" import datetime as dt ➋
TEMPERATURE_SCALES = ("fahrenheit", "kelvin",
"celsius") ➌

class TemperatureConverter: ➎
pass # 暂时不做任何事 ➏
def convert_to_celsius(degrees, source="fahrenheit"): ➐
"""这个函数将华氏度或开氏度转化为摄氏度 ➑
"""
if source.lower() == "fahrenheit": ➒
return (degrees-32) * (5/9) ➓
elif source.lower() == "kelvin":
return degrees - 273.15
else:
return f"Don't know how to convert from {source}"
celsius = convert_to_celsius(44, source="fahrenheit")
non_celsius_scales = TEMPERATURE_SCALES[:-1]
print("Current time: " + dt.datetime.now().isoformat())
print(f"The temperature in Celsius is: {celsius}")
➊ 在文件顶部用文档字符串(docstring)解释这个脚本或者模块做了些什么。文档字符串是一种特殊的字符串,它用 3 个引号引用。除了作为代码的文档,它还可以用来编写跨越多行的字符串。如果你的字符串中有很多双引号或单引号,那么也可以用文档字符串来避免转义。我们会在第 11 章中看到,编写跨越多行的 SQL 查询时,文档字符串也很好用。

➋ 所有的导入语句都应该放在文件顶部,一行一个导入。从标准库导入的内容放在前面,然后是第三方包,最后是自己编写的模块。不过这个例子中只用到了标准库。
➌ 用大写字母和下划线表示常量。每行的长度不超过 79 个字符。尽可能地利用圆括号、方括号或花括号隐式跨行。
➍ 类、函数和其他代码之间用两个空行隔开。
➎ 尽管很多类像 datetime 一样使用小写字母命名,但是你自己编写的类也应该使用首字母大写的名称( CapitalizedWords )。有关类的更多内容请参见附录 C。
➏ 行内注释应该和代码间隔至少两个空格。代码块应该用 4 个空格缩进。
➐ 在能够提高可读性的情况下,函数和参数应该使用小写字母和下划线命名。不要在参数名和默认值之间使用空格。
➑ 函数的文档字符串应当列出函数参数并解释其意义。为了让例子更简短我并没有这么做,但我们会在第 8 章配套代码库中看到,excel.py 具有完整的文档字符串。
➒ 冒号前后不要使用空格。
➓ 可以在算术运算符前后使用空格。如果同时使用了优先级不同的运算符,则应当考虑在优先级最低的运算符前后添加空格。在本例中,由于乘号的优先级最低,因此它的前后被添加了空格。
变量名称使用小写字母。在可以提升可读性的前提下使用下划线。为变量赋值时,在等号前后添加空格。不过在调用函数时,不要在关键字参数前后使用空格。在进行索引和切片时,不要在方括号前后使用空格。这只是对 PEP 8 的一个简单介绍,在你开始认真使用 Python 之后,应该看一下 PEP 8 的原文。PEP 8 明确指出,这些规则只是建议,应当优先考虑你自己的编程风格。毕竟统一性才是最重要的。如果你对其他公开的编程风格指南感兴趣,也可以看一下谷歌的 Python 风
格指南,它和 PEP 8 比较接近。实际上大部分 Python 程序员并未严格遵循 PEP 8,最常见的错误是每行超过了 79 个字符。在编写代码时,要保持格式规整可能很难,不过你可以利用工具让它自动检查代码是否遵循了某种编程风格。下一节会教你如何使用 VS Code 进行自动格式化。

pandas入门

4.1 NumPy数组
正如第 3 章所描述的那样,如果要对嵌套列表进行数组运算,可以使用循环来完成。例如,要为嵌套列表中的每一个元素都加上 1,可以使用下面的嵌套列表推导式:
In [1]: matrix = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
In [2]: [[i + 1 for i in row] for row in matrix]
Out[2]: [[2, 3, 4], [5, 6, 7], [8, 9, 10]]

但是这样的代码可读性很低。更关键的是,在面对更大的数组时,遍历整个数组会非常慢。如果你的用例和数组大小合适的话,那么使用 NumPy 数组进行运算会比 Python 列表快上几百倍。为了达到如此高的性能,NumPy 利用了用 C 和 Fortran(它们都是编译型语言,比 Python 要快得多)编写的代码。NumPy 数组是保存同构数据(homogenous data)的 N 维数组。“同构”意味着数组中的所有数据都必须是相同类型。最常见的情况就是处理

图 4-1 所示的一维和二维的浮点数数组。
索引
一维数组
轴0
轴0
轴1
二维数组
图 4-1:一维和二维的 NumPy 数组
下面来创建一个一维数组和一个二维数组,本章会一直使用这两个数组。
In [3]: # 首先导入NumPy
import numpy as np
In [4]: # 使用列表构造一个一维数组
array1 = np.array([10, 100, 1000.])
In [5]: # 使用嵌套列表构造一个二维数组
array2 = np.array([[1., 2., 3.],
[4., 5., 6.]])
数组维度
要注意一维数组和二维数组之间的区别。一维数组只有一个轴,因此不区分行数组和列数组。这和 VBA 中的数组是类似的,但是如果你是从 MATLAB等语言(MATLAB 中的一维数组会区分行数组和列数组)转过来的,那么可能需要花点儿时间习惯 NumPy 的做法。
即使 array1 除了最后一个元素(浮点数)之外全是整数,但由于 NumPy 对同构的要求,这个数组的数据类型依然是 float64 ,这个类型足以容纳所有的元素。要想了解一个数组的数据类型,可以访问它的 dtype 属性:
In [6]: array1.dtype
Out[6]: dtype('float64')
dtype 返回的是 float64 而不是第 3 章中介绍过的 float 。你可能已经猜到了,NumPy 使用的是它自己的数值数据类型,它们比 Python 的数据类型粒度要细。通常这都不是问题,因为大部分时候 Python 和 NumPy 中的不同数据类型可以自动转换。如果你需要显式地将NumPy 数据类型转换成 Python 的基本数据类型,只需使用对应的构造器即可(稍后我会更详细地介绍如何存取数组的元素):
In [7]: float(array1[0])
Out[7]: 10.0
在 NumPy 的文档中可以看到 NumPy 数据类型的完整列表。我们马上就会看到,有了NumPy 数组,就可以以简洁的方式执行数组运算了。

5.2 数据操作
真实世界的数据并非天上掉下来的,在使用数据之前,需要对其进行清理,使其更易于理解。在本节开头,先来看看如何从 DataFrame 中选取数据,如何修改数据,以及如何处理缺失和重复的数据。然后再对 DataFrame 进行一些运算,看看如何处理文本数据。在本节末尾,你会明白 pandas 什么时候会返回视图,什么时候又会返回数据的副本。本节中的很多概念和我们在第 4 章的 NumPy 数组中看到的是相关联的。

5.3 组合DataFrame
在 Excel 中组合不同的数据集是一件麻烦事,通常需要用到很多 VLOOKUP 公式。幸运的是,DataFrame 的组合是 pandas 的“撒手锏”,数据对齐机制也会让实现相关功能获得极大的便利,进而能够减少错误发生的可能性。组合和合并 DataFrame 的方法有很多,本节会涉及最常用的 concat 、 join 和 merge 。虽然这些函数的功能有重叠的部分,但是每一个函数都可以让一类特定的工作更加轻松。我会先介绍 concat 函数,然后解释 join 函数的不同选项,最后介绍通用性最高的 merge 函数。

5.4 描述性统计量和数据聚合
让大型数据集更有条理的方法之一是计算整个数据集或者子集上的描述性统计量,比如总和或平均值。本节首先会介绍如何在 pandas 中计算这些统计量,然后会介绍将数据聚合到子集中的两种方式: groupby 方法和 pivot_table 函数。

5.5 绘图
绘图可以将数据分析的结果可视化,这可能是整个数据分析过程中最重要的一步。我们需要用到两个库来进行绘图,首先来看 pandas 默认的绘图库 Matplotlib,之后再着眼于另一个现代化的绘图库,即 Plotly,我们可以用它在 Jupyter 笔记本中获得更好的交互式体验。

5.6 导入和导出DataFrame
到目前为止,我们用各种方式构造了 DataFrame:嵌套列表,字典和 NumPy 数组。知道这些技巧很有必要,但是很多时候我们的数据已经准备好了,你只需要将它录入 DataFrame。要做到这一点,pandas 为你提供了各种读取函数。但即便要访问一个专用的系统且 pandas没有提供内置的读取器,你通常也有一个 Python 包来连接这个系统,一旦获得了数据,要把数据录入 DataFrame 也就很容易了。在 Excel 中,数据导入通常是 Power Query 的工作。在分析和修改数据集之后,你可能想把结果推送回数据库或者导出到一个 CSV 文件中,又或者如本书书名所述,把它放到 Excel 工作簿中给你的上级看。要导出 pandas DataFrame,可以使用 DataFrame 提供的导出方法。表 5-7 展示了最常用的导入和导出方法。

后续章节资料学习可以点击下方链接获取哦~ ↓

点击拿走腾讯文档-在线文档https://docs.qq.com/doc/DT3VGWkhwRml0WlFC

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章