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

news2025/1/12 21:02:47

在这里插入图片描述

文章目录

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

读取文件

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 pd
    
    data = {'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 pd
    
    data = {'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 pd
    
    data = {'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 pd
    
    data = {'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.coloradmin.cn/o/1281750.html

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

相关文章

qt-C++笔记之组件-分组框QGroupBox

qt-C笔记之组件-分组框QGroupBox code review! 文章目录 qt-C笔记之组件-分组框QGroupBox1.《Qt 6 C开发指南》p752.《Qt 官方文档》3.《Qt 5.12实战》——5.9 分组框控件 1.《Qt 6 C开发指南》p75 2.《Qt 官方文档》 中间段落翻译: 我把示例补充完整: …

CAN 一: CAN基础知识介绍

1、CAN介绍 1.1、什么是CAN? (1)CAN(Controller Area Network:控制器局域网),是ISO国际标准化的串行通信协议。为满足汽车产业的“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需求。 (2)CAN总线的发展历史&a…

Apache Flink(六):Apache Flink快速入门 - Flink案例实现

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

最新最全的Postman接口测试: postman实现参数化

什么时候会用到参数化 比如:一个模块要用多组不同数据进行测试 验证业务的正确性 Login模块:正确的用户名,密码 成功;错误的用户名,正确的密码 失败 postman实现参数化 在实际的接口测试中,部分参数…

Java 数组另类用法(字符来当数组下标使用)

一、原因 看力扣的时候发现有位大佬使用字符来当数组下标使用。 class Solution {public int lengthOfLongestSubstring(String s) {int result 0;int[] hash new int[130];int i 0;for(int j 0; j < s.length(); j) {while(hash[s.charAt(j)] > 0) {hash[s.charAt…

【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(3)路由导航卫士、主页实现

项目笔记为项目总结笔记,若有错误欢迎指出哟~ 【项目专栏】 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)spring boot项目搭建、vue项目搭建、微信小程序项目搭建 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(2)后端跨域、登录模块、sp…

【带头学C++】----- 九、类和对象 ---- 9.2 构造函数

目录 9.2 构造函数 9.2.1 构造函数的概述 9.2.2 构造函数定义方法&#xff08;初始化构造函数&#xff09; 9.2.3 提供构造函数的影响 9.2 构造函数 以下是一些C引入构造函数的原因&#xff1a; 初始化对象&#xff1a;构造函数允许在创建对象时立即初始化该对象的成员变量…

数据挖掘实战-基于word2vec的短文本情感分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

微机原理——并行接口8255学习1

目录 并行接口特点 可编程并行接口芯片8255 8255端口地址 8255的三种工作方式 8255的两种命令&#xff08;方式命令和C端口命令&#xff09; 由用户扩展的并行接口8255的应用 声光报警器接口设计 步进电机控制接口设计 PA端口实现跑马灯 PB端口实现按键输入 并行接口特…

最大乘积分解(动态规划)

相较于我上一题写的动态规划&#xff0c;这一题比较简单 代码如下&#xff1a; #include<stdio.h>int main(void) {long long n, max[101] {0, 1};scanf("%lld", &n);for(int i 1; i < n; i)max[i] i;for(int i 1; i < n; i)for(int j 1; j &…

RT-Thread 汇编分析启动流程

文章目录 一、汇编指令二、启动文件三、流程图 一、汇编指令 这里介绍即几条最常见实用的汇编指令 LDR R0,[R1]&#xff1a;将R1指定内存地址数据&#xff0c;存储到寄存器R0中。STR R0,[R1,#4]&#xff1a;将寄存器R0中数据存储到寄存器R1加上偏移量4的位置。MOV r0,#0x01&a…

read()之后操作系统都干了什么

首先说明三个参数 file文件 buff从内存中开辟一段缓冲区用来接收读取的数据 size表示这个缓冲区的大小 有关file的参数&#xff1a; 状态&#xff1a;被打开 被关闭权限&#xff1a;可读可写最重要的是inode: 他包含了 文件的元数据(比如文件大小 文件类型 文件在访问前需要加…

Matlab和python详解数独谜题问题

&#x1f517; 运行环境&#xff1a;Matlab、Python &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 &#x1f510;#### 防伪水印——左手の明天 ####&#x1f510; &#x1f4…

c语言调用free,提示已触发了一个断点。

在用c语言写数据结构的链表的时候&#xff0c;执行也没有什么大错&#xff0c;逻辑也是对的&#xff0c;但是一道free函数会自动触发一个断点。如图&#xff1a; 这个断点产生的原因是由于分配的内存太小了在使用的时候没有任何问题&#xff0c;但是在执行程序的时候&#xff0…

JAVA毕业设计113—基于Java+Springboot+Vue的体育馆预约系统(源代码+数据库+12000字论文)

基于JavaSpringbootVue的体育馆预约系统(源代码数据库12000字论文)113 一、系统介绍 本项目前后端分离&#xff0c;本系统分为管理员、用户两种角色 用户角色包含以下功能&#xff1a; 注册、登录、场地(查看/预订/收藏/退订)、在线论坛、公告查看、我的预订管理、我的收藏…

[二分查找]LeetCode2040:两个有序数组的第 K 小乘积

本文涉及的基础知识点 二分查找算法合集 题目 给你两个 从小到大排好序 且下标从 0 开始的整数数组 nums1 和 nums2 以及一个整数 k &#xff0c;请你返回第 k &#xff08;从 1 开始编号&#xff09;小的 nums1[i] * nums2[j] 的乘积&#xff0c;其中 0 < i < nums1.…

45 - 多线程性能优化常见问题

1、使用系统命令查看上下文切换 上下文切换常见的监测工具 1.1、Linux 命令行工具之 vmstat 命令 vmstat 是一款指定采样周期和次数的功能性监测工具&#xff0c;我们可以使用它监控进程上下文切换的情况。 vmstat 1 3 命令行代表每秒收集一次性能指标&#xff0c;总共获取 …

代码随想录算法训练营 ---第五十三天

第一题&#xff1a; 简介&#xff1a; 本题和昨天的最大重复子串问题很相似&#xff0c;只不过本题不一定是连续的。 动规五部曲分析如下&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j]&#xff1a;长度为i-1 的字符串text1与长度为j-1的…

智能优化算法应用:基于供需算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于供需算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于供需算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.供需算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

YoloV8改进策略:Swift Parameter-free Attention,无参注意力机制,超分模型的完美迁移

摘要 https://arxiv.org/pdf/2311.12770.pdf https://github.com/hongyuanyu/SPAN SPAN是一种超分网络模型。SPAN模型通过使用参数自由的注意力机制来提高SISR的性能。这种注意力机制能够增强重要信息并减少冗余,从而在图像超分辨率过程中提高图像质量。 具体来说,SPAN模…