Python NumPy 与 Pandas 数据操作对比:从高效计算到灵活分析的转变
本文探讨了 Python 中两个强大的数据处理库——NumPy 与 Pandas,在数据操作上的关键区别和联系。NumPy 专注于高效的数值计算,特别适合多维数组和向量化运算,而 Pandas 基于 NumPy 进行了扩展,特别擅长处理结构化和半结构化数据,提供了更高层次的数据操作接口,如 DataFrame,使得数据分析、清理和操作更加简洁直观。文章从数据存储、运算性能、兼容性和功能扩展等角度,深入对比了两者的特点和适用场景,为读者提供了选择合适工具的指南。
文章目录
一 Python 原生 List 和 Dictionary
# 示例代码
a_list = [1, 2, 3]
a_dict = {"a": 1, "b": 2, "c": 3}
print("list:", a_list)
print("dict:", a_dict)
Python 提供了原生的数据结构 List
和 Dictionary
,它们分别用于存储有序和键值对数据。然而,当处理大规模、多维数据时,原生数据结构可能不够高效。
二 NumPy Array
# 示例代码
import numpy as np
a_array = np.array([
[1, 2],
[3, 4]
])
print("NumPy array:\n", a_array)
NumPy 提供了多维数组对象 ndarray
,特别适合进行数值计算,能够高效地执行向量化操作,大大提高了数据处理的速度。
三 Pandas DataFrame
# 示例代码
import pandas as pd
a_df = pd.DataFrame(
{"a": [1, 3],
"b": [2, 4]}
)
print("Pandas DataFrame:\n", a_df)
Pandas 是基于 NumPy 的高级数据分析库,主要用于处理结构化和半结构化数据。DataFrame
是 Pandas 提供的二维表格数据结构,带有行和列标签,使数据操作更加直观和灵活。
四 Pandas 与 NumPy 的关系
Pandas 的底层很多功能是基于 NumPy 构建的,可以被视为对 NumPy 的扩展。Pandas 提供了对数据操作的更高级别抽象,尤其是在处理表格和时间序列数据时。以下是 Pandas 基于 NumPy 的几个关键点:
1 数据存储
- Pandas 的
Series
和DataFrame
是对 NumPyndarray
的高级封装。例如,Series
是带有索引的一维数组,而DataFrame
是二维数组加上行、列标签。
2 数值计算
- Pandas 在进行数值运算时依赖 NumPy 的高效计算库,很多数据操作都是通过 NumPy 来完成的。
3 性能优化
- 由于 Pandas 使用了 NumPy,处理大规模数据时可以继承 NumPy 的高效性,特别是在数值型数据的操作上。
4 兼容性
- Pandas 和 NumPy 在函数和对象上有很高的兼容性,Pandas 对象和 NumPy 数组可以方便地相互转换,很多 NumPy 的函数也可以直接用于 Pandas 对象。
虽然 Pandas 基于 NumPy 构建,但它在以下方面进行了重要扩展:数据操作的便捷性、对混合数据类型的支持、对时间序列的处理以及缺失值的管理。这些功能使得 Pandas 成为数据分析的主流工具。
五 总结
Pandas 可以看作是 NumPy 的功能扩展,适合处理结构化数据,尤其在数据分析和数据清理场景中有着广泛应用。NumPy 则更注重多维数组的高效计算,是科学计算的重要工具。
六 完整代码示例
# This is a sample Python script.
# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
import pandas as pd
import numpy as np
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint.
# python、numpy 和 pandas 对比
# List 和 Dictionary
a_list = [1, 2, 3]
a_dict = {"a": 1, "b": 2, "c": 3}
print("list:", a_list)
print("dict:", a_dict)
# numpy array
a_array = np.array([
[1, 2],
[3, 4]
])
# pandas DataFrame
a_df = pd.DataFrame(
{"a": [1, 3],
"b": [2, 4]}
)
print("numpy array:\n", a_array)
print("\npandas df:\n", a_df)
# Pandas 是 Numpy 的封装库,继承了 Numpy 的很多优良传统,也具备丰富的功能组件.
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('Pandas 和 Numpy 的差别')
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
复制粘贴并覆盖到你的 main.py 中运行,运行结果如下。
Hi, Pandas 和 Numpy 的差别
list: [1, 2, 3]
dict: {'a': 1, 'b': 2, 'c': 3}
numpy array:
[[1 2]
[3 4]]
pandas df:
a b
0 1 2
1 3 4
七 源码地址
代码地址:
国内看 Gitee 之 pandas/Pandas 和 Numpy 的差别.py
国外看 GitHub 之 pandas/Pandas 和 Numpy 的差别.py
引用 莫烦 Python