目录
引言
本文探讨了 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 是对 NumPy ndarray 的高级封装。例如,Series 是带有索引的一维数组,而 DataFrame 是二维数组加上行、列标签。
2.数值计算
Pandas 在进行数值运算时依赖 NumPy 的高效计算库,很多数据操作都是通过 NumPy 来完成的。
3.性能优化
由于 Pandas 使用了 NumPy,处理大规模数据时可以继承 NumPy 的高效性,特别是在数值型数据的操作上。
4.兼容性
Pandas 和 NumPy 在函数和对象上有很高的兼容性,Pandas 对象和 NumPy 数组可以方便地相互转换,很多 NumPy 的函数也可以直接用于 Pandas 对象。
虽然 Pandas 基于 NumPy 构建,但它在以下方面进行了重要扩展:数据操作的便捷性、对混合数据类型的支持、对时间序列的处理以及缺失值的管理。这些功能使得 Pandas 成为数据分析的主流工具。
五、完整代码示例
# 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
六、总结(抱团取暖)
Pandas 可以看作是 NumPy 的功能扩展,适合处理结构化数据,尤其在数据分析和数据清理场景中有着广泛应用。NumPy 则更注重多维数组的高效计算,是科学计算的重要工具。
最后推荐一个技术圈子,自己一个人学习远不如一群人学习,多交流才能更快进步,所以我9月开始创建了python交流学习大本营。我深知有这样一个交流群的意义,特别是对于那些想要在短时间内提升技能,长时间坚持学习的人,群,更像是一种陪伴。
当然,裙里还有大家共享大量学习资源,还提供技术,职场,内推,理财,你感兴趣的,都会有小伙伴和你侃。