0


【Python篇】详细学习 pandas 和 xlrd:从零开始

文章目录

详细学习

pandas

xlrd

:从零开始

前言

在数据处理和分析中,Excel 文件是最常见的数据格式之一。Python 提供了强大的库

pandas

,可以轻松地处理 Excel 文件中的数据。同时,我们还可以使用

xlrd

来读取 Excel 文件,尤其是较旧格式的

.xls

文件。

本篇博客将从零开始,带你学习如何使用

pandas

xlrd

来读取、处理、修改和保存 Excel 文件的数据。我们将详细讲解每一步,并附带代码示例和输出结果。


一、环境准备和安装

在开始学习之前,我们需要确保 Python 环境中已经安装了

pandas

xlrd

。你可以通过以下步骤安装这些库。

1.1 安装

pandas

xlrd

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

pandas

xlrd

pip install pandas xlrd

1.2 验证安装

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

import pandas as pd
import xlrd

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

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


二、

pandas

xlrd

的基础概念

在开始写代码之前,我们先了解一些

pandas

xlrd

的基础概念。

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

四、深入理解

DataFrame

Series

4.1 什么是

DataFrame

DataFrame

pandas

中的核心数据结构之一,它是一个二维的表格,类似于 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)# 显示 DataFrameprint(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

Series

pandas

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

示例:从 DataFrame 中提取
Series
# 从 DataFrame 中提取 'Name' 列,作为一个 Series
names = df['Name']# 显示 Seriesprint(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']# 显示更新后的 DataFrameprint(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'])# 显示更新后的 DataFrameprint(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_excel**:pandas 提供的 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')forfilein file_list]
combined_df = pd.concat(df_list, ignore_index=True)# 显示合并后的 DataFrameprint(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. 填充缺失值: - **df.fillna({‘Name’: ‘未知’, ‘Age’: df[‘Age’].mean(), ‘City’: ‘未知’})**:使用字典为不同列指定填充值。Name 列的缺失值用 '未知' 填充,Age 列的缺失值用平均值填充,City 列的缺失值用 '未知' 填充。
  2. 删除包含缺失值的行: - **df.dropna()**:删除包含任何缺失值的行,返回一个新的 DataFrame。
输出示例

原始数据:

      Name   Age         City
0     Alice  25.0     New York
1       Bob   NaN  Los Angeles
2   Charlie  35.0None3None30.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.035.0
Los Angeles      NaN   30.0
New York        25.028.0

11.3 实际应用场景

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


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

在这里插入图片描述

标签: python 学习 pandas

本文转载自: https://blog.csdn.net/2301_79849925/article/details/141723330
版权归原作者 Trouvaille ~ 所有, 如有侵权,请联系我们删除。

“【Python篇】详细学习 pandas 和 xlrd:从零开始”的评论:

还没有评论