python 运用pandas 库处理excel 表格数据

在这里插入图片描述

文章目录

  • 读取文件
  • 查看数据
  • 数据选择
  • 数据筛选
  • 创建新列
  • 计算并总结数据
  • 分组统计

读取文件

Pandas 是一个强大的数据分析库,它提供了丰富的数据结构和数据分析工具,其中之一是用于读取不同格式文件的 read_* 函数系列。以下是一个简单介绍如何使用 Pandas 读取常见文件格式的示例:

  1. 读取 Excel 文件:

    import pandas as pd# 读取 Excel 文件的第一个表格
    df = pd.read_excel('文件路径.xlsx')# 打印数据框的前几行
    print(df.head())
    

查看数据

在 Pandas 中,可以使用多种方式来查看 Excel 文件中的 DataFrame 数据以及数据类型。以下是一些常见的方法:

  1. 查看前几行数据(或者后几行):

    使用 head() 函数可以查看 DataFrame 的前几行数据,默认是前五行。你可以通过传递参数来指定显示的行数。

    import pandas as pd# 读取 Excel 文件
    df = pd.read_excel('文件路径.xlsx')# 查看前五行数据
    print(df.head(5))
    # 查看后5行
    print(df.tail(5))
  2. 查看数据类型:

    使用 dtypes 属性可以查看 DataFrame 中每一列的数据类型。

    # 查看数据类型
    print(df.dtypes)
    
  3. 查看统计摘要:

    使用 describe() 函数可以生成关于数值列的统计摘要,包括均值、标准差、最小值、25%,50%,75% 以及最大值。

    # 查看统计摘要
    print(df.describe())
    
  4. 查看单一列的唯一值:

    如果想了解某一列的唯一值,可以使用 unique() 函数。

    # 查看某一列的唯一值
    unique_values = df['列名'].unique()
    print(unique_values)
    
  5. 查看整个 DataFrame 的信息:

    使用 info() 函数可以查看 DataFrame 的整体信息,包括每列的非空值数量、数据类型等。

    # 查看整个 DataFrame 的信息
    print(df.info())
    

这些方法可以帮助你快速了解 Excel 文件中的数据,其结构以及数据类型。根据需要,选择适当的方法来查看和理解数据。

数据选择

当选择 DataFrame 中的数据时,下面是每个用法的简单例子:

  1. 选择列:

    # 创建一个简单的 DataFrame
    import pandas as pddata = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'San Francisco', 'Los Angeles']}df = pd.DataFrame(data)# 通过列名选择单列
    single_column = df['Name']
    
  2. 选择多列:

    # 选择多列
    multiple_columns = df[['Name', 'Age']]
    
  3. 选择行:

    # 通过标签索引选择单行
    single_row_by_label = df.loc[0]# 通过整数索引选择单行
    single_row_by_integer = df.iloc[0]
    
  4. 选择特定条件的行:

    # 选择满足条件的行
    selected_rows = df[df['Age'] > 25]
    
  5. 组合选择:

    # 组合条件选择
    selected_data = df[(df['Age'] > 25) & (df['City'] == 'San Francisco')]
    
  6. 选择特定位置的元素:

    # 通过标签索引选择元素
    element_by_label = df.at[0, 'Name']# 通过整数索引选择元素
    element_by_integer = df.iat[0, 0]
    

这些例子演示了如何使用 Pandas 对 DataFrame 进行简单的数据选择。你可以根据具体的数据和需求,灵活运用这些方法。

数据筛选

在 Pandas 中,数据筛选是通过选择满足特定条件的行或列来进行的。以下是一些常见的数据筛选用法:

  1. 根据条件筛选行:

    通过设定条件来选择 DataFrame 中满足条件的行。

    # 创建一个简单的 DataFrame
    import pandas as pddata = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'San Francisco', 'Los Angeles']}df = pd.DataFrame(data)# 选择年龄大于 30 的行
    filtered_rows = df[df['Age'] > 30]
    
  2. 使用 isin 方法筛选行:

    使用 isin 方法可以选择某一列中包含特定值的行。

    # 选择居住在指定城市的行
    selected_cities = df[df['City'].isin(['New York', 'Los Angeles'])]
    
  3. 根据多个条件组合筛选行:

    使用逻辑运算符 &(与)、|(或)、~(非)等来组合多个条件。

    # 选择年龄大于 25 且居住在 'San Francisco' 的行
    selected_data = df[(df['Age'] > 25) & (df['City'] == 'San Francisco')]
    
  4. 根据字符串条件筛选行:

    使用字符串方法,如 str.contains,可以在文本列中筛选包含特定字符串的行。

    # 选择包含 'Bob' 的行
    selected_rows = df[df['Name'].str.contains('Bob')]
    
  5. 根据索引标签筛选行:

    使用 loc 方法根据索引标签筛选行。

    # 设置 'Name' 列为索引列
    df.set_index('Name', inplace=True)# 选择 'Bob' 的行
    selected_row = df.loc['Bob']
    
  6. 根据列值筛选列:

    使用列名来选择特定的列。

    # 选择 'Name' 和 'Age' 列
    selected_columns = df[['Name', 'Age']]
    

这些例子展示了在 Pandas 中进行数据筛选的常见用法。你可以根据实际情况和需求,使用这些方法进行灵活的数据筛选。

创建新列

在 Pandas 中,创建新列可以通过给 DataFrame 分配新的列名,并使用已有列的数据或进行一些计算得到新的列值。以下是一些常见的创建新列的方法:

  1. 使用已有列进行计算创建新列:

    # 创建一个简单的 DataFrame
    import pandas as pddata = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'San Francisco', 'Los Angeles']}df = pd.DataFrame(data)# 使用已有列 'Age' 创建一个新列 'Age_in_2_years'
    df['Age_in_2_years'] = df['Age'] + 2
    
  2. 使用函数进行计算创建新列:

    可以使用函数对 DataFrame 的一列进行操作,并将结果存储在新列中。

    # 创建一个函数,用于计算字符串长度
    def calculate_name_length(name):return len(name)# 使用函数创建新列 'Name_Length'
    df['Name_Length'] = df['Name'].apply(calculate_name_length)
    
  3. 使用条件语句创建新列:

    可以使用条件语句根据某一列的值创建新的列。

    # 使用条件语句创建新列 'Is_Adult'
    df['Is_Adult'] = df['Age'] >= 18
    
  4. 根据多列创建新列:

    使用多个已有列的数据进行计算,并创建新的列。

    # 使用 'Age' 和 'Name_Length' 列创建新列 'Combined_Column'
    df['Combined_Column'] = df['Age'] * df['Name_Length']
    
  5. 使用 assign 方法创建新列:

    使用 assign 方法可以链式操作,一次性创建多个新列。

    # 使用 assign 方法创建多个新列
    df = df.assign(Double_Age=df['Age'] * 2, Triple_Age=df['Age'] * 3)
    

这些方法提供了多种灵活的方式来创建新列,根据你的需求选择适当的方法。创建新列时,考虑数据的来源、计算逻辑以及新列的名称。

计算并总结数据

在 Pandas 中,可以使用一些内建的函数来计算总结数据,包括均值、中位数、标准差等。以下是一些常见的计算总结数据的方法:

  1. 计算列的均值:

    # 计算 'Age' 列的均值
    mean_age = df['Age'].mean()
    
  2. 计算列的中位数:

    # 计算 'Age' 列的中位数
    median_age = df['Age'].median()
    
  3. 计算列的标准差:

    # 计算 'Age' 列的标准差
    std_dev_age = df['Age'].std()
    
  4. 计算列的总和:

    # 计算 'Age' 列的总和
    sum_age = df['Age'].sum()
    
  5. 计算列的最小值和最大值:

    # 计算 'Age' 列的最小值和最大值
    min_age = df['Age'].min()
    max_age = df['Age'].max()
    
  6. 使用 describe 方法获取统计摘要:

    # 使用 describe 方法获取数值列的统计摘要
    summary_stats = df.describe()
    
  7. 计算唯一值的数量:

    # 计算 'City' 列中唯一值的数量
    unique_cities_count = df['City'].nunique()
    
  8. 计算唯一值及其出现次数:

    # 计算 'City' 列中每个唯一值的出现次数
    city_counts = df['City'].value_counts()
    

这些方法提供了对数据集进行各种总结统计的途径。具体选择哪种方法取决于你关心的统计信息。可以根据实际需求选择适当的函数进行计算。

分组统计

在 Pandas 中,分组统计是一种强大的数据分析工具,允许你根据某一列或多列的值对数据进行分组,然后对每个组进行统计。以下是一些常见的分组统计的方法:

  1. 按单一列分组并计算统计量:

    # 创建一个简单的 DataFrame
    import pandas as pddata = {'Category': ['A', 'B', 'A', 'B', 'A', 'B'],'Value': [10, 20, 30, 15, 25, 18]}df = pd.DataFrame(data)# 按 'Category' 列分组,并计算每组的均值
    group_means = df.groupby('Category')['Value'].mean()
    
  2. 按多列分组并计算统计量:

    # 创建一个带有多列的 DataFrame
    data = {'Category': ['A', 'B', 'A', 'B', 'A', 'B'],'City': ['X', 'Y', 'X', 'Y', 'X', 'Y'],'Value': [10, 20, 30, 15, 25, 18]}df = pd.DataFrame(data)# 按 'Category' 和 'City' 列分组,并计算每组的均值
    group_means = df.groupby(['Category', 'City'])['Value'].mean()
    
  3. 同时计算多个统计量:

    # 同时计算均值和标准差
    group_stats = df.groupby('Category')['Value'].agg(['mean', 'std'])
    
  4. 使用 agg 方法应用多个函数:

    # 使用 agg 方法应用不同的统计函数
    custom_stats = df.groupby('Category')['Value'].agg(['sum', 'mean', 'count'])
    
  5. 使用 apply 方法应用自定义函数:

    # 使用 apply 方法应用自定义函数
    def custom_function(group):return group.max() - group.min()custom_result = df.groupby('Category')['Value'].apply(custom_function)
    
  6. 透视表(Pivot Table):

    # 使用透视表计算 'City' 列和 'Category' 列的均值
    pivot_table = df.pivot_table(values='Value', index='Category', columns='City', aggfunc='mean')
    

这些方法提供了丰富的分组统计功能,可以根据不同的需求进行定制化。分组统计对于理解数据的分布、进行对比分析等方面都非常有用。

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

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

相关文章

Siemens-NXUG二次开发-C/C++/Python环境配置[20231204]

Siemens-NXUG二次开发-C/C/Python运行方式[20231204] 1.NX/UG C/C/Python API官方开发文档2.运行方式2.1内部模式2.2 外部模式2.3 许可证书服务器启动 3.C/C环境配置4.Python环境配置5.第三方环境配置 1.NX/UG C/C/Python API官方开发文档 西门子NX/UG Python api开发文档&…

Spring学习笔记:Day2

昨天定的学习计划发现通过文心4.0来实现不靠谱,坑太多,今天开始跟随B站进行学习,争取10-15天学习一遍,冲啊! 地址:001-课程介绍_哔哩哔哩_bilibili 今日规划: pt 001 - pt 018,提到…

小心处理 C++ 静态变量中的陷阱

小心处理 C 静态变量中的陷阱 函数中的 static 变量 static 变量的作用 C 中 static 关键字的最后一个用途是在函数内创建局部变量,这些变量在其作用域内退出和进入时保持其值。函数内的 static 变量类似于只能从该函数访问的全局变量。static 变量的一个常见用途…

【UGUI】实现背包的常用操作

1. 添加物品 首先,你需要一个包含物品信息的类,比如 InventoryItem: using UnityEngine;[CreateAssetMenu(fileName "NewInventoryItem", menuName "Inventory/Item")] public class InventoryItem : ScriptableObje…

网工学习7-配置 GVRP 协议

7.1GARP概述 GARP(Generic Attribute Registration Protocol)是通用属性注册协议的应用,提供 802.1Q 兼容的 VLAN 裁剪 VLAN pruning 功能和在 802.1Q 干线端口 trunk port 上建立动态 VLAN 的功能。 GARP 作为一个属性注册协议的载体,可以用来传播属性…

游泳馆会员服务预约管理系统预约小程序效果如何

游泳馆在各地每天都有大量用户前往,夏季室外、冬季室内也是学习游泳技术和休闲娱乐的好地方,而消费者大多是年轻人和家长带的孩子,这部分群体更显年轻化,因此在如今互联网环境下,传统商家需要进一步赋能客户消费路径。…

【Vue】Vue CLI 脚手架(Vue Command Line Interface)安装教程(通过npm)

前言 Vue CLI(Vue Command Line Interface)是一个基于Vue.js的官方脚手架工具,用于快速搭建和管理Vue.js项目。它提供了一套完整的开发工具和配置,包括项目初始化、开发服务器、热重载、构建和打包等功能。 Vue CLI使用了Webpac…

自动驾驶学习笔记(十三)——感知基础

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 传感器 测距原理 坐标系 标定 同…

2023/12/3总结

RabbitMq 消息队列 下载地址RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQ 使用详情RabbitMQ使用教程(超详细)-CSDN博客 实现延迟队列(为了实现订单15分钟后修改状态) 1 死信队列 当一个队列中的消息满足下列情况之一时&…

【risc-v】易灵思efinix FPGA riscv 时钟配置的一些总结

系列文章目录 分享一些fpga内使用riscv软核的经验,共大家参考。后续内容比较多,会做成一个系列。 本系列会覆盖以下FPGA厂商 易灵思 efinix 赛灵思 xilinx 阿尔特拉 Altera 本文内容隶属于【易灵思efinix】系列。 文章目录 系列文章目录前言一、pan…

为何要3次握手?TCP协议的稳定性保障机制

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

操作系统·存储器管理

根据冯诺依曼原理,程序必须先存储在内存中,才可以执行。 在多道程序并发执行的系统存储器管理非常重要。 5.1 存储器管理的功能 5.1.1 主存分配与回收 要完成内存的分配和回收工作,要求设计者选择和确定几种策略和结构: 1.调入…

STM32F407-14.3.10-01PWM模式

PWM 模式 脉冲宽度调制模式可以生成一个信号,该信号频率由 TIMx_ARR⑩ 寄存器值决定,其占空比由 TIMx_CCRx⑤ 寄存器值决定。 通过向 TIMx_CCMRx 寄存器中的 OCxM⑰ 位写入 110 (PWM 模式 1)或 111 (PWM 模式 2&#…

SpringCloud简介和用处

Spring Cloud是一套基于Spring Boot的微服务框架,它旨在提供一种快速构建分布式系统的方法。它可以帮助开发人员构建具有高可用性、可扩展性和容错性的微服务,并通过Spring Boot的开发工具和库提供强大的支持。 一、简介 Spring Cloud是Spring家族中的一…

React如何像Vue一样将css和js写在同一文件

如果想在React中想要像Vue一样把css和js写到一个文件中,可以使用CSS-in-JS。 使用CSS-in-JS 下载 npm i styled-components使用 就像写scss一样,不过需要声明元素的类型 基本语法及展示如下, import styled from "styled-component…

周周清(1)

项目进度&#xff1a; 最近一直在搭建环境&#xff0c;都没写什么&#xff1a;登陆页面采用登陆注册在同一个界面&#xff0c;用v-if进行渲染&#xff0c;并且借助validation插件中的yup神器进行校验&#xff0c; <script setup> // import { ref } from vue import * …

Qt配置OpenCV(MSVC编译)

目录 1.准备工具 1.1 Qt&#xff1a;5.14.2 64位 1.2 Opencv&#xff1a;4.6.0 1.3 Visual Studio 2017 2. QtMSVC开发环境搭建 3. 配置环境变量 3.1 Opencv环境变量配置 4. Qt 代码测试 1.准备工具 1.1 Qt&#xff1a;5.14.2 64位 1.2 Opencv&#xff1a;4.6.0 官…

数据库-PostgreSQL学习笔记

目录 PostgreSQL介绍与安装docker安装腾讯云免费领用1个月 数据库操作连接数据库实例创建数据库查看数据库列表使用数据库删除数据库修改数据库属性 表操作字段类型整数浮点数日期与时间类型字符串类型 DDLCREATEDROPALTER DMLINSERTUPDATEDELETE 查询查询所有数据查询部分列指…

Windows驱动中校验数字签名(使用 ci.dll)

1.背景 对于常规应用程序来说&#xff0c;校验数字签名认证在应用层可以使用 WinVerifyTrust, 在驱动层使用常规的 API无法使用&#xff0c;自己分析数据又太麻烦。 在内核中 ci.dll 包装了数据签名验证相关的功能&#xff0c;我们可以使用该 dll 来实现我们的数字签名验证。 详…

Siemens-NXUG二次开发-新建与保存prt文件[Python UF][20231204]

Siemens-NXUG二次开发-新建与保存prt文件[Python UF][20231204] 1.python uf函数1.1 NXOpen.UF.Part.New1.2 NXOpen.UF.Part.Save1.3 NXOpen.UF.Ui.OpenListingWindow1.4 NXOpen.UF.Ui.IsListingWindowOpen1.5 NXOpen.UF.Ui.WriteListingWindow1.6 NXOpen.UF.Ui.SaveListingWin…