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

news2024/11/18 17:19:38

文章目录

  • 详细学习 `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. 填充缺失值:
    • 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.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:从零开始的内容啦,各位大佬有什么问题欢迎在评论区指正,您的支持是我创作的最大动力!❤️

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2162225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在精益六西格玛项目实践中激励小组成员保持积极性?

在精益六西格玛项目实践中,激励小组成员保持积极性是推动项目成功与持续改进的关键因素。精益六西格玛作为一种集精益生产与六西格玛管理精髓于一体的管理模式,旨在通过流程优化、质量提升及成本降低,实现企业的卓越绩效。然而,这…

《DevOps实践指南》笔记-Part 3

一篇文章显得略长,本文对应第5-6章、附录、认证考试、参考资源等。 前言、第1-2章请参考Part 1,第3-4章内容,请参考Part 2。 持续学习与实验的技术实践 通过以下方式制定有关提高安全性、持续改进和边做边学的制度: 建立公正的…

找不到MFC140.dll无法继续执行代码怎么办,共有6种解决方法

在计算机使用过程中,我们可能会遇到各种问题,其中一种常见的问题是DLL文件丢失。DLL文件是动态链接库文件,它包含了可以被多个程序共享的代码和数据。MFC140.dll就是其中之一。本文将深入分析MFC140.dll丢失的原因,并提供6种有效的…

双亲委派机制SPI

SPI如何破坏双亲委派机制?可根据以下概念一步步深入 什么是双亲委派机制? 双亲委派机制是Java类加载器体系中采用的一种类加载策略,旨在保证类加载的安全性和稳定性。 这一机制规定了类加载的顺序和规则,即当一个类加载器收到类…

解决启动docker desktop报The network name cannot be found的问题

现象 deploying WSL2 distributions ensuring main distro is deployed: checking if main distro is up to date: checking main distro bootstrap version: getting main distro bootstrap version: open \wsl$\docker-desktop\etc\wsl_bootstrap_version: The network name…

基于Springboot+vue实现的Cosplay论坛系统

基于springbootvue实现的Cosplay论坛系统 (源码L文ppt)4-066 2.3 系统功能分析 Cosplay论坛系统中采用了Java的springboot框架进行开发,在数据库上选择MYSQL,在功能上Cosplay论坛系统我划分为了普通用户管理模…

Proteus如何添加数码管

1、打开安装好的Proteus,点击上方菜单栏中的“库”,再选择“从库选取零件”,或者在左侧元件列表中单击鼠标右键,再点击右键菜单中的“从库中挑选”选项。 2、之后在元器件库中,点击类别中的“Optoelectronics”&#…

破解 oklink 网站加密数据(升级版)

大家好!我是炒青椒不放辣,关注我,收看每期的编程干货。 逆向是爬虫工程师进阶必备技能,当我们遇到一个问题时可能会有多种解决途径,而如何做出最高效的抉择又需要经验的积累。本期文章将以实战的方式,带你详细地分析并破解 oklink 网站加密数据 特别声明:本篇文章仅供学…

python脚本程序怎么写更优雅?argparse模块巧妙应用

前言 命令行程序,也称CLI程序,另一个直观的名字是脚本程序,简称脚本,由于没有图形用户界面(GUI),所以脚本程序常见的交互方式有3种: 1、脚本程序中读取环境变量,比如env…

解决小爱音箱连接Windows10蓝牙时,语音控制会中断音乐播放的问题

解决天猫精灵连接Windows10蓝牙时,语音控制会中断音乐播放的问题 解决小爱音箱连接Windows10蓝牙时,浏览器控制音量会中断音乐播放的问题 用小爱音箱当蓝牙音响的时候,遇到个很困扰的问题,每次小爱音箱语音控制的过程中,都会启动…

3.js - 运动曲线

这个球,绕着这个红色的线圈转 代码 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControlslet scene,camera,renderer,controls nulllet moon,earth null// 根据,一系列的点,创建曲线 le…

活动报名丨智源Workshop,从o1出发探索LLM推理与思维链

近期o1模型的发布,预示着AI在处理高度复杂问题上再次迈出一大步。大规模强化学习算法在一个数据极高的训练过程中,教会了模型如何利用其思维链进行富有成效的思考。 北京时间9月19日(本周四)晚7点,智源社区将组织「智源…

响应式布局-媒体查询父级布局容器

1.响应式布局容器 父局作为布局容器,配合自己元素实现变化效果,原理:在不通过屏幕下面吗,通过媒体查询来改变子元素的排列方式和大小,从而实现不同尺寸屏幕下看到不同的效果。 2.响应尺寸布局容器常见宽度划分 手机-…

Vue 中 watch 的使用方法及注意事项

前言 Vue 的 Watch 是一个非常有用的功能,它能够监听 Vue 实例数据的变化并执行相应的操作。本篇文章将详细介绍 Vue Watch 的使用方法和注意事项,让你能够充分利用 Watch 来解决 Vue 开发中的各种问题。 1. Watch 是什么? 1.1 Watch 的作…

[js逆向学习] fastmoss电商网站——店铺排名

逆向目标 网站:https://www.fastmoss.com/shop-marketing/tiktok接口:https://www.fastmoss.com/api/shop/shopList/参数:fm-sign 逆向分析 我们今天要分析的是店铺排名,先分析网络请求,找到目标接口 按照上图操作…

Redis: 特点,优势,与其他产品的区别以及高并发原理

入门Redis概述 1 )选择Redis是因为其高性能 因为 Redis 它数据存储的机制是存在内存中的,减少了传统关系数据库的磁盘IO它是单线程的保证了原子性,它还提供了事务,锁等相关的机制 2 )Redis 环境安装配置 linux 或 d…

STM32 map 文件浅析

目录 一、概述二、Section Cross References三、Removing Unused input sections from the image四、Memory Map of the image1、Local Symbols2、全局符号(Global Symbols) 五、Image Symbol Table六、Image component sizes 一、概述 .map 文件是编译…

Shader Graph Create Node---Input

四、Input 1、Basic 一些基础的变量节点 2、Geometry 1)、Bitangent Vector(双切线向量) 通常与顶点位置、法线向量和切线向量一起使用。 法线向量(Normal Vector):垂直于表面的向量。 切线向量(Tangent Vector)…

Vue3项目开发——新闻发布管理系统(八)

文章目录 十、新闻管理模块设计开发1、新闻管理主页面设计1.1 基本架构搭建1.1.1 搜索表单1.1.2 新闻主表格样式(静态数据模拟渲染)1.2 新闻分类选择框1.2.1 新建组件1.2.2 页面中导入渲染1.2.3 调用接口,动态渲染下拉分类,设计成 v-model 的使用方式1.2.4 父组件定义参数绑定…

共建智能座舱AI应用生态 夸克合作斑马智行开拓AI搜索新场景

近日,在2024云栖大会上,夸克与斑马智行达成合作,将面向汽车座舱场景,为用户打造专属AI新体验。夸克以AI搜索为中心的一站式AI服务融入座舱数字化生态,进一步拓展使用场景和能力边界。 9月20日,斑马智行发布…