费曼学习法12 - 告别 Excel!用 Python Pandas 开启数据分析高效之路 (Pandas 入门篇)

第一篇:告别 Excel!用 Python Pandas 开启数据分析高效之路 (Pandas 入门篇)

开篇提问:

想象一下,你是一位数据侦探,手头有一堆案件线索(数据)。 你的目标是从这些线索中找出真相,发现数据背后的秘密。 如果你的工具箱里只有一把普通的放大镜(Excel),处理少量简单的数据还行,但面对海量复杂的数据,是不是感觉有点力不从心,效率低下?

是时候升级你的装备了! Python Pandas 就是你数据分析工具箱里的 "瑞士军刀" ,它比 Excel 更强大、更高效、更灵活,能让你轻松应对各种数据挑战,真正开启数据分析的高效之路! 今天,我们就来认识一下 Pandas,看看它如何解放你的数据分析生产力,让你彻底告别 Excel 的各种 "痛点"!

核心概念讲解 (费曼式解释):

  1. 为什么要告别 Excel,拥抱 Pandas? (Excel 的 "痛点" vs. Pandas 的 "优势")

    Excel 是一款非常流行的电子表格软件,很多人用它进行数据管理和简单的分析。 但当数据量增大、分析任务变得复杂时,Excel 的局限性就暴露出来了,让人感到 "力不从心"。 让我们来看看 Excel 在数据分析方面的一些 "痛点":

    • 处理海量数据 "卡顿" 缓慢: Excel 对于 百万行级别 的数据处理就开始变得 缓慢甚至卡顿 ,操作起来非常耗时,效率低下。 而 Pandas 基于 NumPy 构建,底层使用 C 语言优化,可以 轻松处理 GB 甚至 TB 级别 的大数据,速度快如闪电

    • 复杂分析功能 "捉襟见肘": Excel 的图表类型和分析功能相对 有限 ,对于 复杂的数据透视、分组聚合、统计建模 等高级分析任务,Excel 操作繁琐,功能不足,难以满足需求。 Pandas 提供了 丰富的数据分析函数和方法 ,例如 groupby, pivot_table, 时间序列分析等,可以 轻松实现各种复杂的数据分析操作

    • 自动化处理 "寸步难行": Excel 的操作主要依赖 手动点击和拖拽 ,难以实现 自动化、批量化 的数据处理流程。 如果需要重复执行相同的分析步骤,或者处理大量结构相同的数据文件,Excel 效率低下,容易出错。 Pandas 基于 Python 代码 ,可以轻松编写 脚本 实现 自动化数据处理流程一次编写,多次运行,大大提高效率和可维护性。

    • 代码复用 "天方夜谭": Excel 的操作步骤难以 版本控制和代码复用 。 每次分析都需要 手动重复操作 ,无法将分析过程 保存为可复用的代码 ,不利于团队协作和知识积累。 Pandas 代码是 纯文本格式 ,可以使用 Git 等版本控制工具 进行管理,方便 代码版本控制、团队协作和知识共享 。 Pandas 代码可以轻松 封装成函数或模块 ,实现 代码复用,提高开发效率。

    • 与 Python 生态 "格格不入": Excel 是一个 独立的软件 ,与 Python 数据科学生态系统 隔离 。 无法 方便地与其他 Python 库 (例如 NumPy, Matplotlib, Scikit-learn 等) 进行数据交换和协同工作 ,限制了数据分析的深度和广度。 Pandas 是 Python 数据科学生态系统的 核心成员 ,可以 无缝对接 NumPy, Matplotlib, Seaborn, Scikit-learn 等库,构建强大的数据分析和机器学习工作流程。

    Pandas 的 "优势":

    • 速度快、效率高: 高效处理大数据,运算速度远超 Excel。
    • 功能强大、分析深入: 提供丰富的数据分析函数和方法,支持复杂的数据分析任务。
    • 自动化处理、批量操作: 通过 Python 代码实现自动化数据处理流程,提高效率。
    • 代码复用、易于维护: Python 代码易于版本控制、复用和维护,方便团队协作。
    • 无缝对接 Python 生态: 与 Python 数据科学生态系统完美集成,扩展数据分析能力。

    告别 Excel,拥抱 Pandas,是数据分析从 "手工作坊" 走向 "现代化工厂" 的必经之路!

  2. 安装 Pandas: 准备好你的 "数据分析利器"

    想要使用 Pandas 这个 "数据分析利器",首先要把它 安装 到你的 Python 环境中。 安装 Pandas 非常简单,只需要一行命令:

    bash 复制代码
    pip install pandas

    和安装 NumPy 库一样,打开你的电脑终端,复制粘贴这行代码,按下回车键,等待安装完成就可以了。 就像给你的 Python 环境装上了一个强大的 "数据分析引擎"!

    安装完成后,你就可以在 Python 代码中 导入 Pandas 库 ,开始使用它的各种功能了。 通常我们 约定俗成 地使用 pd 作为 Pandas 的 别名 (alias),这样可以更方便地调用 Pandas 的函数和对象。

    python 复制代码
    import pandas as pd  # 导入 Pandas 库,并使用 pd 作为别名
    
    # 现在你就可以使用 pd.xxx 来调用 Pandas 的功能了,例如:
    # pd.Series(), pd.DataFrame(), pd.read_csv() ...
  3. Pandas Series: 一维 "数据序列"

    Pandas 最基本的数据结构之一是 Series ,可以理解为 一维 "数据序列" 。 它类似于 Python 的 列表 (list) 和 NumPy 的 一维数组 (ndarray) ,但功能更强大,更专注于 数据分析

    • Series 的构成: 索引 (Index) + 值 (Values)

      一个 Pandas Series 对象由 两部分组成

      • 索引 (Index): Series 的 "标签" 或 "索引" ,用于 标识和访问 Series 中的数据 。 索引可以是 整数、字符串、日期时间 等类型,默认情况下,Pandas 会自动创建从 0 开始的整数索引 。 索引 类似于 Excel 表格中的行号 ,但 Pandas 的索引 更加灵活和强大,可以自定义各种类型的索引。
      • 值 (Values): Series 中 存储的实际数据 ,可以是 NumPy 数组 或其他 可迭代对象 。 Series 的值 类似于 Excel 表格中的数据列

      你可以把 Pandas Series 想象成 带 "标签" 的列表 ,或者 带 "索引" 的一维数组 。 索引让 Series 中的数据 更有意义,更易于访问和操作

    • 创建 Pandas Series: pd.Series()

      可以使用 pd.Series() 函数来 创建 Pandas Seriespd.Series() 函数可以从 列表 (list)、NumPy 数组 (ndarray)、字典 (dict) 等多种数据类型创建 Series。

      • 从 Python 列表创建 Series (默认整数索引):

        python 复制代码
        import pandas as pd
        
        # 从 Python 列表创建 Series
        data = [10, 20, 30, 40, 50] # 数据列表
        series1 = pd.Series(data) # 创建 Series,默认整数索引
        print("从列表创建的 Series (默认整数索引):\n", series1)
        print("\nSeries 的索引 (series1.index):\n", series1.index) # 默认 RangeIndex (整数索引)
        print("\nSeries 的值 (series1.values):\n", series1.values) # NumPy 数组形式的值
        print("\nSeries 的数据类型 (series1.dtype):\n", series1.dtype) # 值的数据类型 (int64)
      • 从 Python 列表创建 Series (自定义索引):

        python 复制代码
        import pandas as pd
        
        # 从 Python 列表创建 Series,并自定义索引
        data = [10, 20, 30, 40, 50] # 数据列表
        index_labels = ['A', 'B', 'C', 'D', 'E'] # 自定义索引标签列表
        series2 = pd.Series(data, index=index_labels) # 创建 Series,指定索引
        print("\n从列表创建的 Series (自定义索引):\n", series2)
        print("\nSeries 的索引 (series2.index):\n", series2.index) # Index 类型 (字符串索引)
        print("\nSeries 的值 (series2.values):\n", series2.values)
        print("\nSeries 的数据类型 (series2.dtype):\n", series2.dtype)
      • 从 NumPy 数组创建 Series:

        python 复制代码
        import pandas as pd
        import numpy as np
        
        # 从 NumPy 数组创建 Series
        data_numpy = np.array([100, 200, 300, 400, 500]) # NumPy 数组数据
        series3 = pd.Series(data_numpy) # 从 NumPy 数组创建 Series
        print("\n从 NumPy 数组创建的 Series:\n", series3)
        print("\nSeries 的索引 (series3.index):\n", series3.index) # 默认 RangeIndex
        print("\nSeries 的值 (series3.values):\n", series3.values) # NumPy 数组形式的值
        print("\nSeries 的数据类型 (series3.dtype):\n", series3.dtype)
      • 从 Python 字典创建 Series (字典的键作为索引,值作为 Series 的值):

        python 复制代码
        import pandas as pd
        
        # 从 Python 字典创建 Series
        data_dict = {'apple': 10, 'banana': 20, 'cherry': 30, 'date': 40} # 字典数据
        series4 = pd.Series(data_dict) # 从字典创建 Series
        print("\n从字典创建的 Series:\n", series4) # 字典的键作为索引,值作为 Series 的值
        print("\nSeries 的索引 (series4.index):\n", series4.index) # Index 类型 (字符串索引,字典的键)
        print("\nSeries 的值 (series4.values):\n", series4.values)
        print("\nSeries 的数据类型 (series4.dtype):\n", series4.dtype)

      代码解释:

      • pd.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False): pd.Series() 函数的主要参数:
        • data: 数据源 ,可以是 列表、NumPy 数组、字典、标量值等。 如果 data 为字典,则字典的键会作为 Series 的索引,字典的值会作为 Series 的值。
        • index: 索引标签 ,可以是 列表、NumPy 数组、Index 对象。 如果 不指定 index,Pandas 会自动创建默认的整数索引 (RangeIndex)索引的长度必须与数据长度一致。
        • dtype: 数据类型 ,用于 指定 Series 的数据类型 。 如果不指定,Pandas 会 自动推断数据类型 。 可以使用 NumPy 的数据类型 (例如 np.int32, np.float64, np.str_ 等) 或 Python 内置的数据类型 (例如 int, float, str 等)。
        • name: Series 的 名称,可以为 Series 对象命名,方便在 DataFrame 中引用。
        • copy=False: 是否 复制数据 ,默认为 False (不复制,使用视图)。 设置为 True 则复制数据。
  4. 案例应用: 用 Pandas Series 表示商品价格列表

    现在,我们来做一个简单的 案例应用 ,展示 Pandas Series 的 创建和基本属性 。 假设我们要用 Pandas Series 来 表示一个商品价格列表,并查看商品名称 (索引) 和价格 (值) 信息。

    python 复制代码
    import pandas as pd
    
    # 商品名称和价格数据
    product_names = ['Apple', 'Banana', 'Orange', 'Grape'] # 商品名称列表 (作为索引)
    product_prices = [5.5, 2.8, 3.2, 8.9] # 商品价格列表 (作为值)
    
    # 创建 Pandas Series 表示商品价格列表,商品名称作为索引,商品价格作为值
    price_series = pd.Series(product_prices, index=product_names, name='Product Prices') # 指定索引和名称
    print("商品价格列表 (Pandas Series):\n", price_series)
    print("\nSeries 的名称 (price_series.name):\n", price_series.name) # Series 的名称
    print("\nSeries 的索引 (price_series.index):\n", price_series.index) # 商品名称索引
    print("\nSeries 的值 (price_series.values):\n", price_series.values) # 商品价格值 (NumPy 数组)
    print("\nSeries 的数据类型 (price_series.dtype):\n", price_series.dtype) # 浮点数类型

    代码解释:

    • 用 Series 表示商品价格列表: 我们使用 pd.Series() 创建了一个名为 price_series 的 Pandas Series,商品名称 product_names 作为索引,商品价格 product_prices 作为值name='Product Prices' 为 Series 对象命名。
    • 查看 Series 的属性: .name, .index, .values, .dtype 分别 查看 Series 的名称、索引、值和数据类型.values 返回的是 NumPy 数组形式的值

费曼回顾 (知识巩固):

现在,请你用自己的话,像给一个完全不懂数据分析的朋友解释一下,今天我们都学习了哪些关于 Pandas Series 的知识? 例如:

  • 为什么要从 Excel 转向 Pandas 进行数据分析? Pandas 相比 Excel 有哪些优势?
  • 什么是 Pandas Series? 它由哪两部分组成? 索引 (Index) 和 值 (Values) 分别是什么意思? Series 有什么特点和用途?
  • 我们学习了哪些创建 Pandas Series 的方法? pd.Series() 函数如何使用? 如何从列表、NumPy 数组、字典创建 Series? 如何自定义 Series 的索引?
  • 在商品价格列表案例中,我们是如何使用 Pandas Series 来表示数据,并查看 Series 的基本属性的?

尝试用最简洁、最形象的语言来解释,就像你是一位数据分析老师,正在给你的学生讲解一样。 如果你能清晰地解释出来,就说明你已经掌握了今天学习的内容!

课后思考 (拓展延伸):

  1. 尝试修改商品价格列表案例的代码,例如:
    • 增加更多商品和价格,看看 Series 如何处理更多数据?
    • 尝试创建不同数据类型的 Series,例如字符串类型 (商品名称列表)、日期时间类型 (日期列表)?
    • 尝试使用其他方法创建 Series,例如从标量值创建 Series (所有元素值相同)?
    • 查阅 Pandas 文档,了解更多 Series 的属性和方法,例如 .size (元素数量), .empty (是否为空), .hasnans (是否包含缺失值) 等。
  2. 思考一下,除了商品价格列表,Pandas Series 还可以用来表示哪些一维数据? 例如,用户年龄列表、城市人口数量列表、股票价格时间序列等等。 你有什么有趣的应用想法吗?
  3. 预习 Pandas DataFrame 的相关知识,为下一篇文章的学习做好准备。

恭喜你!完成了 Pandas 费曼学习法的第一篇文章学习! 你已经迈出了掌握 Pandas 这个数据分析 "瑞士军刀" 的第一步! 在下一篇文章中,我们将继续探索 Pandas 的核心数据结构 DataFrame ,学习如何创建和操作更强大的 二维 "数据表格",让你的数据分析能力更上一层楼! 敬请期待!

相关推荐
SomeB1oody5 分钟前
【Python机器学习】1.1. 机器学习(Machine Learning)介绍
开发语言·人工智能·python·机器学习
快乐点吧8 分钟前
【django】模型部署过程
后端·python·django
CP-DD15 分钟前
PyTorch 的 Dataset 和 DataLoader
人工智能·pytorch·python
Wis4e15 分钟前
基于PyTorch的深度学习2——逐元素操作,归并,比较,矩阵
人工智能·pytorch·深度学习
老大白菜17 分钟前
PyTorch GPU显存管理与大规模张量操作
人工智能·pytorch·python
zhulu50618 分钟前
PyTorch 源码学习:GPU 内存管理之初步探索 expandable_segments
人工智能·pytorch·学习
花千树-01020 分钟前
MOE(Mixture of Experts)门控网络的实现与优化
人工智能·pytorch·自然语言处理·nlp·aigc
Jason_Orton23 分钟前
决策树(Decision Tree):机器学习中的经典算法
人工智能·算法·决策树·随机森林·机器学习
张琪杭23 分钟前
Pytorch算子介绍大白话版一
人工智能·pytorch·python
紫雾凌寒26 分钟前
计算机视觉|ConvNeXt:CNN 的复兴,Transformer 的新对手
人工智能·神经网络·机器学习·计算机视觉·transformer·动态网络·convnext