跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

8 个高效 Python 数据分析技巧

涵盖列表推导式、Lambda 表达式、Map 和 Filter 函数、NumPy 的 Arange 和 Linspace、Pandas 的 Axis 概念、DataFrame 组合方法(Concat、Merge、Join)、Apply 函数以及数据透视表等 8 个核心技巧,旨在通过简洁语法和内置工具提升 Python 数据分析的运行效率与代码可读性。

利刃发布于 2025/2/7更新于 2026/10/17107 浏览
8 个高效 Python 数据分析技巧

前言

本文将介绍 8 个使用 Python 进行数据分析的方法,不仅能够提升运行效率,还能够使代码更加'优美'。

01 一行代码定义 List

定义某种列表时,写 For 循环过于麻烦,幸运的是,Python 有一种内置的方法可以在一行代码中解决这个问题。下面是使用 For 循环创建列表和用一行代码创建列表的对比。

x = [1, 2, 3, 4]
out = []
for item in x:
    out.append(item**2)
print(out)
# [1, 4, 9, 16]

# vs.

x = [1, 2, 3, 4]
out = [item**2 for item in x]
print(out)
# [1, 4, 9, 16]

02 Lambda 表达式

厌倦了定义用不了几次的函数?Lambda 表达式是你的救星!Lambda 表达式用于在 Python 中创建小型、一次性和匿名函数对象,它能替你创建一个函数。

Lambda 表达式的基本语法是:

lambda arguments: expression

注意!只要有一个 lambda 表达式,就可以完成常规函数可以执行的任何操作。

你可以从下面的例子中,感受 lambda 表达式的强大功能:

double = lambda x: x * 2
print(double(5))
# 10

03 Map 和 Filter

一旦掌握了 lambda 表达式,学习将它们与 Map 和 Filter 函数配合使用,可以实现更为强大的功能。具体来说,map 通过对列表中每个元素执行某种操作并将其转换为新列表。

在本例中,它遍历每个元素并乘以 2,构成新列表。(注意!list() 函数只是将输出转换为列表类型)

# Map
seq = [1, 2, 3, 4, 5]
result = list(map(lambda var: var*2, seq))
print(result)
# [2, 4, 6, 8, 10]

Filter 函数接受一个列表和一条规则,就像 map 一样,但它通过比较每个元素和布尔过滤规则来返回原始列表的一个子集。

# Filter
seq = [1, 2, 3, 4, 5]
result = list(filter(lambda x: x > 2, seq))
print(result)
# [3, 4, 5]

04 Arange 和 Linspace

Arange 返回给定步长的等差列表。它的三个参数 start、stop、step 分别表示起始值,结束值和步长,请注意!stop 点是一个'截止'值,因此它不会包含在数组输出中。

# np.arange(start, stop, step)
np.arange(3, 7, 2)
# array([3, 5])

Linspace 和 Arrange 非常相似,但略有不同。Linspace 以指定数目均匀分割区间,所以给定区间 start 和 end,以及等分分割点数目 num,linspace 将返回一个 NumPy 数组。

这对绘图时数据可视化和声明坐标轴特别有用。

# np.linspace(start, stop, num)
np.linspace(2.0, 3.0, num=5)
# array([ 2.0,  2.25,  2.5,  2.75, 3.0])

05 Axis 代表什么?

在 Pandas 中,删除一列或在 NumPy 矩阵中求和值时,可能会遇到 Axis。我们用删除一列(行)的例子:

df.drop('Column A', axis=1)
df.drop('Row A', axis=0)

如果你想处理列,将 Axis 设置为 1,如果你想要处理行,将其设置为 0。但为什么呢?回想一下 Pandas 中的 shape。

df.shape
# (# of Rows, # of Columns)

从 Pandas DataFrame 中调用 shape 属性返回一个元组,第一个值代表行数,第二个值代表列数。

如果你在 Python 中对其进行索引,则行数下标为 0,列数下标为 1,这很像我们如何声明轴值。

06 Concat、Merge 和 Join

如果您熟悉 SQL,那么这些概念对你来说可能会更容易。无论如何,这些函数本质上就是以特定方式组合 DataFrame 的方式。在哪个时间跟踪哪一个最适合使用可能很困难,所以让我们回顾一下。

Concat 允许用户在表格下面或旁边追加一个或多个 DataFrame(取决于您如何定义轴)。

Merge 将多个 DataFrame 合并指定主键(Key)相同的行。

Join,和 Merge 一样,合并了两个 DataFrame。但它不按某个指定的主键合并,而是根据相同的列名或行名合并。

07 Pandas Apply

Apply 是为 Pandas Series 而设计的。如果你不太熟悉 Series,可以将它想成类似 Numpy 的数组。

Apply 将一个函数应用于指定轴上的每一个元素。使用 Apply,可以将 DataFrame 列(是一个 Series)的值进行格式设置和操作,不用循环,非常有用!

df = pd.DataFrame([[4, 9],] * 3, columns=['A', 'B'])
print(df)
#    A  B
# 0  4  9
# 1  4  9
# 2  4  9

df.apply(np.sqrt)
#      A    B
# 0  2.0  3.0
# 1  2.0  3.0
# 2  2.0  3.0

df.apply(np.sum, axis=0)
# A    12
# B    27

df.apply(np.sum, axis=1)
# 0    13
# 1    13
# 2    13

08 Pivot Tables

如果您熟悉 Microsoft Excel,那么你也许听说过数据透视表。

Pandas 内置的 pivot_table 函数以 DataFrame 的形式创建电子表格样式的数据透视表,它可以帮助我们快速查看某几列的数据。

下面是几个例子:

非常智能地将数据按照'Manager'分了组:

pd.pivot_table(df, index=["Manager", "Rep"])

或者也可以筛选属性值:

pd.pivot_table(df, index=["Manager","Rep"], values=["Price"])

上述技巧涵盖了从基础语法到数据处理的核心场景,掌握它们有助于编写更简洁高效的 Python 数据分析代码。

目录

  1. 前言
  2. 01 一行代码定义 List
  3. [1, 4, 9, 16]
  4. vs.
  5. [1, 4, 9, 16]
  6. 02 Lambda 表达式
  7. 10
  8. 03 Map 和 Filter
  9. Map
  10. [2, 4, 6, 8, 10]
  11. Filter
  12. [3, 4, 5]
  13. 04 Arange 和 Linspace
  14. np.arange(start, stop, step)
  15. array([3, 5])
  16. np.linspace(start, stop, num)
  17. array([ 2.0, 2.25, 2.5, 2.75, 3.0])
  18. 05 Axis 代表什么?
  19. (# of Rows, # of Columns)
  20. 06 Concat、Merge 和 Join
  21. 07 Pandas Apply
  22. A B
  23. 0 4 9
  24. 1 4 9
  25. 2 4 9
  26. A B
  27. 0 2.0 3.0
  28. 1 2.0 3.0
  29. 2 2.0 3.0
  30. A 12
  31. B 27
  32. 0 13
  33. 1 13
  34. 2 13
  35. 08 Pivot Tables

更多推荐文章

查看全部
  • 逻辑回归算法详解:原理、代码与可视化
  • AIGC 如何重塑日常生活:从内容创作到智能服务的全面解析
  • Faster Whisper 语音识别:高效转写技术全解析
  • 前端团队协作最佳实践
  • Toonflow AI 短剧工厂:全流程自动化短剧创作平台
  • MySQL 高频用户统计方法
  • 基于数据增强与物理信息神经网络的湖泊水位预测研究
  • Altera USB-Blaster 驱动安装与 FPGA 下载配置指南
  • C++ 模板进阶:特化、萃取与可变参数模板
  • AI 绘画模型下载优化指南:10 个高效解决方案
  • Python 真实世界数据科学:回归分析预测连续目标变量
  • C++ 输入输出详解(上):基础流与格式控制
  • 基于 OpenClaw 与 Claude 的自动化写作工作流实践
  • GitHub 版本控制实战:从零开始掌握核心技巧
  • 技术拆解:P2P 组网实现远程 AI 服务安全访问
  • 无监督学习:原理、算法与结构发现
  • 基于 SpringBoot+Vue 的网上摄影工作室管理系统设计与实现
  • 基于 LangChain 的 ReAct AI Agent 搭建实战
  • Python 网络副业常见方向与实战指南
  • AgentScope-Java 配置参数详解附录 B

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online