8 个 Python 高效数据分析技巧
本文介绍了 8 个 Python 数据分析核心技巧,涵盖列表推导式、Lambda 匿名函数、Map 与 Filter 高阶函数、NumPy 数组生成、Pandas 轴操作、DataFrame 合并策略(Concat/Merge/Join)、Apply 函数应用及数据透视表。通过优化代码结构与利用内置库功能,可显著提升数据处理效率与可读性,适用于 Kaggle 竞赛及深度学习项目的数据预处理阶段。

本文介绍了 8 个 Python 数据分析核心技巧,涵盖列表推导式、Lambda 匿名函数、Map 与 Filter 高阶函数、NumPy 数组生成、Pandas 轴操作、DataFrame 合并策略(Concat/Merge/Join)、Apply 函数应用及数据透视表。通过优化代码结构与利用内置库功能,可显著提升数据处理效率与可读性,适用于 Kaggle 竞赛及深度学习项目的数据预处理阶段。

无论是参加 Kaggle 比赛,还是开发深度学习应用,第一步总是数据分析。掌握高效的 Python 数据处理方法,不仅能提升运行效率,还能使代码更加简洁优雅。
定义列表时,使用 For 循环往往显得冗长。Python 的列表推导式允许在一行代码中完成列表的构建,是提升代码可读性的首选方式。
传统 For 循环:
x = [1, 2, 3, 4]
out = []
for item in x:
out.append(item ** 2)
print(out)
# 输出:[1, 4, 9, 16]
列表推导式:
x = [1, 2, 3, 4]
out = [item ** 2 for item in x]
print(out)
# 输出:[1, 4, 9, 16]
列表推导式不仅语法更紧凑,而且在处理简单逻辑时通常比显式循环更快。
对于只需要使用一次的简单函数,定义完整的 def 函数显得多余。Lambda 表达式用于创建小型、一次性匿名函数对象。
基本语法:
lambda arguments: expression
示例:
double = lambda x: x * 2
print(double(5)) # 输出:10
注意: Lambda 只能包含一个表达式,不能包含复杂的语句块(如 if-else 分支或循环),适合配合 map、filter 等函数使用。
结合 Lambda 表达式,map 和 filter 能实现强大的数据转换与过滤功能。
map 对可迭代对象中的每个元素执行指定操作,并返回新列表。
seq = [1, 2, 3, 4, 5]
result = list(map(lambda var: var * 2, seq))
print(result) # 输出:[2, 4, 6, 8, 10]
filter 根据布尔规则筛选元素,返回符合条件的子集。
seq = [1, 2, 3, 4, 5]
result = list(filter(lambda x: x > 2, seq))
print(result) # 输出:[3, 4, 5]
在 Python 3 中,map 和 filter 返回的是迭代器,通常需要转换为 list 才能查看结果。
NumPy 提供了生成数值序列的高效工具,常用于科学计算和绘图。
返回给定步长的等差数列。参数为起始值、结束值和步长。注意结束值不包含在内。
import numpy as np
# np.arange(start, stop, step)
print(np.arange(3, 7, 2)) # 输出:array([3, 5])
以指定数目均匀分割区间。适用于需要固定采样点数的场景,如绘图坐标轴。
# np.linspace(start, stop, num)
print(np.linspace(2.0, 3.0, num=5))
# 输出:array([2. , 2.25, 2.5 , 2.75, 3. ])
在 Pandas 和 NumPy 中,axis 参数决定了操作的方向。理解它有助于避免维度错误。
示例:
import pandas as pd
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
# 删除列 A (axis=1)
print(df.drop('A', axis=1))
# 删除行 (axis=0)
print(df.drop(0, axis=0))
Pandas DataFrame 的 shape 属性返回 (行数,列数)。因此,索引 0 对应行,索引 1 对应列,这与 axis 的定义一致。
这三个函数用于组合 DataFrame,类似于 SQL 中的操作,但适用场景不同。
将多个 DataFrame 上下堆叠或左右拼接,不关心主键。
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})
df2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']})
result = pd.concat([df1, df2], axis=0)
print(result)
基于共同的主键(Key)进行类似 SQL JOIN 的操作。
df1 = pd.DataFrame({'key': ['K0', 'K1'], 'value': [1, 2]})
df2 = pd.DataFrame({'key': ['K0', 'K1'], 'value2': [3, 4]})
result = pd.merge(df1, df2, on='key')
print(result)
默认基于索引进行合并,也可以基于列名。
df1 = df1.set_index('key')
df2 = df2.set_index('key')
result = df1.join(df2)
print(result)
选择哪种方法取决于数据结构:若需按列追加用 concat;若需按字段匹配记录用 merge;若基于索引关联用 join。
apply 是为 Pandas Series 设计的,可将函数应用于指定轴上的每一个元素。它避免了显式循环,非常适合批量格式化或计算。
import pandas as pd
import numpy as np
df = pd.DataFrame([[4, 9]] * 3, columns=['A', 'B'])
# 对每个元素开方
print(df.apply(np.sqrt))
# 对每列求和 (axis=0)
print(df.apply(np.sum, axis=0))
# 对每行求和 (axis=1)
print(df.apply(np.sum, axis=1))
Pandas 内置的 pivot_table 函数可以创建类似 Excel 的数据透视表,快速汇总和分析多维数据。
import pandas as pd
# 假设 df 包含 Manager, Rep, Price 列
data = {
'Manager': ['Alice', 'Alice', 'Bob', 'Bob'],
'Rep': ['X', 'Y', 'X', 'Y'],
'Price': [100, 200, 150, 250]
}
df = pd.DataFrame(data)
# 按 Manager 和 Rep 分组统计价格
print(pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], aggfunc='sum'))
通过设置 index、columns 和 values 参数,可以灵活地重塑数据视图。
本文介绍了 8 个 Python 数据分析的核心技巧。从基础的列表推导式到高级的 DataFrame 合并策略,熟练掌握这些方法能够显著提升代码的执行效率和可维护性。在实际项目中,建议根据具体场景选择最合适的工具,例如在大规模数据处理时优先使用 NumPy 向量化操作,在表格分析时充分利用 Pandas 的高级聚合功能。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online