【Python进阶】Pandas与xlrd库从零开始学习指南

文章目录

  • 详细学习 `pandas` 和 `xlrd`:从零开始
  • 前言
  • 一、环境准备和安装
  • 1.1 安装 `pandas` 和 `xlrd`
  • 1.2 验证安装
  • 二、`pandas` 和 `xlrd` 的基础概念
  • 2.1 什么是 `pandas`?
  • 2.2 什么是 `xlrd`?
  • 三、使用 `pandas` 读取 Excel 文件
  • 3.1 读取 Excel 文件的基础方法
  • 代码示例:读取 Excel 文件
  • 解释
  • 输出示例
  • 四、深入理解 `DataFrame` 和 `Series`
  • 4.1 什么是 `DataFrame`?
  • 示例:创建一个简单的 `DataFrame`
  • 解释
  • 输出示例
  • 4.2 什么是 `Series`?
  • 示例:从 DataFrame 中提取 `Series`
  • 输出示例
  • 解释
  • 五、处理 `DataFrame` 数据
  • 5.1 增加新列
  • 代码示例:增加一列数据
  • 输出示例
  • 5.2 删除列
  • 代码示例:删除一列数据
  • 输出示例
  • 六、保存数据到 Excel 文件
  • 代码示例:写入 Excel 文件
  • 解释
  • 输出示例
  • 七、读取和合并多个 Excel 文件
  • 7.1 场景概述
  • 7.2 代码示例:读取并合并多个 Excel 文件
  • 详细解释
  • 输出示例
  • 7.3 实际应用场景
  • 八、数据清洗与缺失值处理
  • 8.1 场景概述
  • 8.2 处理缺失数据
  • 代码示例:填充和删除缺失值
  • 详细解释
  • 输出示例
  • 9.3 实际应用场景
  • 十、数据筛选与条件过滤
  • 10.1 场景概述
  • 10.2 代码示例:筛选数据
  • 详细解释
  • 输出示例
  • 10.3 实际应用场景
  • 十一、高效的数据操作与分析
  • 11.1 数据分组与聚合
  • 代码示例:按城市分组并计算平均年龄
  • 详细解释
  • 输出示例
  • 11.2 数据透视表(Pivot Table)
  • 代码示例:创建数据透视表
  • 详细解释
  • 输出示例
  • 11.3 实际应用场景
  • 详细学习 pandasxlrd:从零开始

    前言

    在数据处理和分析中,Excel 文件是最常见的数据格式之一。Python 提供了强大的库 pandas,可以轻松地处理 Excel 文件中的数据。同时,我们还可以使用 xlrd 来读取 Excel 文件,尤其是较旧格式的 .xls 文件。

    本篇博客将从零开始,带你学习如何使用 pandasxlrd 来读取、处理、修改和保存 Excel 文件的数据。我们将详细讲解每一步,并附带代码示例和输出结果。


    一、环境准备和安装

    在开始学习之前,我们需要确保 Python 环境中已经安装了 pandasxlrd。你可以通过以下步骤安装这些库。

    1.1 安装 pandasxlrd

    打开命令行(Windows)或终端(macOS 和 Linux),输入以下命令来安装 pandasxlrd

    pip install pandas xlrd
    

    1.2 验证安装

    安装完成后,你可以通过以下代码验证安装是否成功:

    import pandas as pd
    import xlrd
    
    print(pd.__version__)  # 打印 pandas 的版本
    print(xlrd.__version__)  # 打印 xlrd 的版本
    

    如果没有报错,并且成功打印出版本号,说明安装成功。


    二、pandasxlrd 的基础概念

    在开始写代码之前,我们先了解一些 pandasxlrd 的基础概念。

    2.1 什么是 pandas

    pandas 是一个用于数据分析和处理的强大 Python 库。它的核心数据结构是 DataFrameSeries

  • DataFrame:一个二维表格,类似于电子表格或数据库中的表,具有行和列。
  • Series:一个一维数组,类似于表格中的一列数据。
  • 2.2 什么是 xlrd

    xlrd 是一个专门用于读取 Excel 文件的库,尤其是 .xls 格式的文件。pandas 依赖 xlrd 来读取这些文件的数据。


    三、使用 pandas 读取 Excel 文件

    3.1 读取 Excel 文件的基础方法

    我们首先学习如何使用 pandas 读取一个 Excel 文件。假设我们有一个名为 example.xls 的 Excel 文件,它包含以下数据:

        Name  Age         City
    0  Alice   25     New York
    1    Bob   30  Los Angeles
    2 Charlie   35     Chicago
    

    代码示例:读取 Excel 文件

    import pandas as pd
    
    # 使用 pandas 读取 Excel 文件
    df = pd.read_excel('example.xls', engine='xlrd')
    
    # 显示前几行数据
    print(df.head())
    

    解释

  • pd.read_excel:这是 pandas 提供的读取 Excel 文件的函数。我们传入文件名 example.xlsengine='xlrd' 参数,xlrd 用于解析较旧格式的 .xls 文件。
  • df.head()head() 方法用于显示 DataFrame 的前 5 行数据,帮助我们快速查看数据内容。
  • 输出示例

    当你运行这段代码时,你会看到以下输出:

           Name  Age         City
    0     Alice   25     New York
    1       Bob   30  Los Angeles
    2   Charlie   35     Chicago
    

    四、深入理解 DataFrameSeries

    4.1 什么是 DataFrame

    DataFramepandas 中的核心数据结构之一,它是一个二维的表格,类似于 Excel 表格。每个 DataFrame 都有行索引和列标签。

    示例:创建一个简单的 DataFrame
    import pandas as pd
    
    # 定义一个字典,表示表格中的数据
    data = {
        'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'Los Angeles', 'Chicago']
    }
    
    # 将字典转换为 DataFrame
    df = pd.DataFrame(data)
    
    # 显示 DataFrame
    print(df)
    

    解释

  • 字典 data:我们创建了一个字典,其中每个键(如 'Name')代表一列数据,每个键对应的值是一个列表,表示这一列的所有数据。
  • pd.DataFrame(data)pandas 提供的 DataFrame 构造函数,用于将字典转换为 DataFrame。
  • 输出示例

    运行代码后,你将看到如下输出:

           Name  Age         City
    0     Alice   25     New York
    1       Bob   30  Los Angeles
    2   Charlie   35     Chicago
    

    4.2 什么是 Series

    Seriespandas 中的一维数据结构,类似于 Excel 中的一列。每个 Series 都有一个索引和一组数据。

    示例:从 DataFrame 中提取 Series
    # 从 DataFrame 中提取 'Name' 列,作为一个 Series
    names = df['Name']
    
    # 显示 Series
    print(names)
    

    输出示例

    运行代码后,你将看到如下输出:

    0      Alice
    1        Bob
    2    Charlie
    Name: Name, dtype: object
    

    解释

  • df['Name']:我们使用列标签 'Name' 来提取 DataFrame 中的某一列,返回一个 Series
  • Name: Name, dtype: object:输出结果中显示了 Series 的名称和数据类型(这里是字符串 object)。

  • 五、处理 DataFrame 数据

    5.1 增加新列

    我们可以向 DataFrame 中添加一列新数据,比如性别。

    代码示例:增加一列数据
    # 增加一列数据,表示这些人的性别
    df['Gender'] = ['Female', 'Male', 'Male']
    
    # 显示更新后的 DataFrame
    print(df)
    

    输出示例

    运行代码后,你将看到如下输出:

         Name  Age         City  Gender
    0     Alice   25     New York  Female
    1       Bob   30  Los Angeles    Male
    2   Charlie   35     Chicago    Male
    

    5.2 删除列

    如果你想删除 DataFrame 中的一列数据,可以使用 drop 方法。

    代码示例:删除一列数据
    # 删除 'City' 列
    df = df.drop(columns=['City'])
    
    # 显示更新后的 DataFrame
    print(df)
    

    输出示例

    运行代码后,你将看到如下输出:

          Name  Age  Gender
    0     Alice   25  Female
    1       Bob   30    Male
    2   Charlie   35    Male
    

    六、保存数据到 Excel 文件

    处理完数据后,你可能需要将结果保存到一个新的 Excel 文件中。

    代码示例:写入 Excel 文件

    # 将 DataFrame 保存到新的 Excel 文件中
    df.to_excel('output.xlsx', index=False)
    
    print("数据已保存到 output.xlsx")
    

    解释

  • df.to_excelpandas 提供的 to_excel 方法用于将 DataFrame 保存到一个 Excel 文件中。
  • index=False:这个参数表示不要将行索引保存到文件中。
  • 输出示例

    运行代码后,终端中会显示:

    数据已保存到 output.xlsx
    

    并且,你的项目目录中会生成一个名为 output.xlsx 的 Excel 文件,内容如下:

         Name  Age  Gender
    0     Alice   25  Female
    1       Bob   30    Male
    2   Charlie   35    Male
    

    七、读取和合并多个 Excel 文件

    7.1 场景概述

    在实际项目中,你可能需要从多个 Excel 文件中读取数据,并将它们合并到一个 DataFrame 中。这在处理多个来源的数据时尤其有用。

    7.2 代码示例:读取并合并多个 Excel 文件

    假设你有多个 Excel 文件,它们有相同的结构,现在我们需要将这些文件合并到一个 DataFrame 中。

    import pandas as pd
    import glob
    
    # 获取所有 .xls 文件路径
    file_list = glob.glob('data/*.xls')
    
    # 读取所有文件并合并为一个 DataFrame
    df_list = [pd.read_excel(file, engine='xlrd') for file in file_list]
    combined_df = pd.concat(df_list, ignore_index=True)
    
    # 显示合并后的 DataFrame
    print(combined_df.head())
    
    详细解释
    1. glob.glob(‘data/*.xls’):使用 glob 模块查找 data 目录下的所有 .xls 文件,返回一个文件路径的列表。
    2. pd.read_excel(file, engine=‘xlrd’):使用 pandasread_excel 函数读取每个 Excel 文件,这里指定 xlrd 引擎来处理 .xls 文件。
    3. pd.concat(df_list, ignore_index=True):将所有读取的 DataFrame 合并为一个大的 DataFrame,ignore_index=True 表示忽略原来的行索引,重新生成连续的索引。
    输出示例

    假设你有三个 Excel 文件,每个文件的内容类似于:

    File 1:
        Name  Age         City
    0  Alice   25     New York
    
    File 2:
        Name  Age         City
    0    Bob   30  Los Angeles
    
    File 3:
        Name  Age         City
    0 Charlie   35     Chicago
    

    合并后的 DataFrame 输出如下:

        Name  Age         City
    0     Alice   25     New York
    1       Bob   30  Los Angeles
    2   Charlie   35     Chicago
    

    7.3 实际应用场景

    在项目中,你可以使用这个方法来合并多个 Excel 文件的数据,例如汇总多个部门的数据,或者处理分月份、分季度的财务报表。


    八、数据清洗与缺失值处理

    8.1 场景概述

    在数据分析中,数据通常不完美,可能包含缺失值或异常值。你需要掌握如何清洗这些数据,以确保数据质量。

    8.2 处理缺失数据

    缺失值 是指在数据集中某些字段没有数据,这是常见的问题。我们可以选择删除包含缺失值的行,或者用其他值来填补缺失值。

    代码示例:填充和删除缺失值
    # 示例数据,假设从 Excel 读取的 DataFrame
    data = {
        'Name': ['Alice', 'Bob', 'Charlie', None],
        'Age': [25, None, 35, 30],
        'City': ['New York', 'Los Angeles', None, 'Chicago']
    }
    df = pd.DataFrame(data)
    
    # 查看原始数据
    print("原始数据:\n", df)
    
    # 填充缺失值
    df_filled = df.fillna({'Name': '未知', 'Age': df['Age'].mean(), 'City': '未知'})
    print("\n填充缺失值后的数据:\n", df_filled)
    
    # 删除包含缺失值的行
    df_dropped = df.dropna()
    print("\n删除缺失值后的数据:\n", df_dropped)
    
    详细解释
    1. 填充缺失值:
    2. df.fillna({‘Name’: ‘未知’, ‘Age’: df[‘Age’].mean(), ‘City’: ‘未知’}):使用字典为不同列指定填充值。Name 列的缺失值用 '未知' 填充,Age 列的缺失值用平均值填充,City 列的缺失值用 '未知' 填充。
    3. 删除包含缺失值的行:
    4. df.dropna():删除包含任何缺失值的行,返回一个新的 DataFrame。
    输出示例

    原始数据:

          Name   Age         City
    0     Alice  25.0     New York
    1       Bob   NaN  Los Angeles
    2   Charlie  35.0         None
    3      None  30.0      Chicago
    

    填充缺失值后的数据:

          Name   Age         City
    0     Alice  25.0     New York
    1       Bob  30.0  Los Angeles
    2   Charlie  35.0          未知
    3        未知  30.0      Chicago
    

    删除缺失值后的数据:

          Name   Age       City
    0     Alice  25.0   New York
    

    9.3 实际应用场景

    在项目中,数据清洗是必不可少的一步。你可以使用这些方法来处理数据集中的缺失值,确保数据完整性和一致性。


    十、数据筛选与条件过滤

    10.1 场景概述

    有时你需要从大数据集中筛选出符合特定条件的数据,比如筛选出所有年龄大于 30 岁的人。

    10.2 代码示例:筛选数据

    # 示例数据
    data = {
        'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 28],
        'City': ['New York', 'Los Angeles', 'Chicago', 'San Francisco']
    }
    df = pd.DataFrame(data)
    
    # 筛选年龄大于 30 岁的数据
    filtered_df = df[df['Age'] > 30]
    
    print("年龄大于 30 岁的数据:\n", filtered_df)
    
    详细解释
  • df[df[‘Age’] > 30]:这是 pandas 中常见的条件筛选方法。它会返回一个新的 DataFrame,其中只包含满足条件(Age > 30)的行。
  • 输出示例
        Name     Age    City
    2   Charlie   35  Chicago
    

    10.3 实际应用场景

    在项目中,你可以使用这种条件筛选方法来对数据进行初步分析,或者提取出特定子集的数据用于进一步处理。


    十一、高效的数据操作与分析

    11.1 数据分组与聚合

    数据分组和聚合是数据分析中非常常见的操作,它可以帮助你从大数据集中提取总结性信息。

    代码示例:按城市分组并计算平均年龄
    # 示例数据
    data = {
        'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'Age': [25, 30, 35, 28, 40],
        'City': ['New York', 'Los Angeles', 'Chicago', 'New York', 'Chicago']
    }
    df = pd.DataFrame(data)
    
    # 按城市分组并计算平均年龄
    grouped_df = df.groupby('City')['Age'].mean()
    
    print("按城市分组后的平均年龄:\n", grouped_df)
    
    详细解释
  • df.groupby(‘City’)[‘Age’].mean():按 City 列分组,然后计算每个组中 Age 列的平均值。groupbypandas 中的一个强大函数,常用于分组统计。
  • 输出示例
    City
    Chicago         37.5
    Los Angeles     30.0
    New York        26.5
    Name: Age, dtype: float64
    

    11.2 数据透视表(Pivot Table)

    数据透视表是一种将数据重新排列为易于分析的格式的工具,在数据汇总和分析中非常有用。

    代码示例:创建数据透视表
    # 示例数据
    data = {
        'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'Age': [25, 30, 35, 28, 40],
        'City': ['New York', 'Los Angeles', 'Chicago', 'New York', 'Chicago'],
        'Gender': ['Female', 'Male', 'Male', 'Male', 'Female']
    }
    df = pd.DataFrame(data)
    
    # 创建数据透视表,按城市和性别汇总平均年龄
    pivot_table = pd.pivot_table(df, values='Age', index='City', columns='Gender', aggfunc='mean')
    
    print("数据透视表:\n", pivot_table)
    
    详细解释
  • pd.pivot_table(df, values=‘Age’, index=‘City’, columns=‘Gender’, aggfunc=‘mean’):创建一个数据透视表,按城市和性别分组,计算每组的平均年龄。
  • 输出示例
    Gender         Female   Male
    City                          
    Chicago         40.0   35.0
    Los Angeles      NaN   30.0
    New York        25.0   28.0
    

    11.3 实际应用场景

    在项目中,分组和数据透视表可以帮助你快速地对数据进行汇总和分析。例如,你可以按部门和性别统计员工的平均年龄,或者按产品和地区计算销售额的汇总。


    以上就是关于【Python篇】详细学习 pandas 和 xlrd:从零开始的内容啦,各位大佬有什么问题欢迎在评论区指正,您的支持是我创作的最大动力!❤️

    作者:Trouvaille ~

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Python进阶】Pandas与xlrd库从零开始学习指南

    发表回复