【机器学习5】数据处理(二)Pandas:表格处理

news2024/11/25 22:29:24

Pandas:表格处理

  • 🌟🌟Pandas三种数据类型
  • ✨✨Series数据结构
  • ✨✨ DataFrame数据结构
  • 🌙🌙DataFrame数据的选取
    • 🌕🌕DataFrame的构建
    • 🌕🌕选取多行
    • 🌕🌕选取某一列
    • 🌕🌕选取多列
    • 🌕🌕单条件过滤
    • 🌕🌕多条件过滤
    • 🌙🌙获取列名和行名
    • 🌙🌙观察DataFrame的内容
  • ✨✨变量的变换
  • ✨✨表格的拼接
  • ✨✨ 表格的分组操作
    • 🌙🌙按照分组求均值、求和
  • ✨✨表格的拼接

🌟🌟Pandas三种数据类型

Pandas提供了三种数据类型,分别是SeriesDataFramePanel。Series用于保存一维数据,DataFrame用于保存二维数据,Panel用于保存三维数据或者可变维数据。平时的表格处理数据分析最常用的数据类型是SeriesDataFrame,Panel较少用到。

✨✨Series数据结构

Series本质上是一个含有索引的一维数组,其包含一个左侧自动生成的index和右侧的values值,分别使用s.indexs.values进行查看。

下面举个例子:
在这里插入图片描述
下面我们导入数据:

import pandas  as pd
s=pd.read_excel("D:\A_data\Data_Series.xlsx")
s

运行结果如下:
在这里插入图片描述
其中,左侧这一列就是索引列,下面我们分别打印s.index和s.values
在这里插入图片描述
在这里插入图片描述
index返回一个index对象,而values返回一个array。

✨✨ DataFrame数据结构

DataFrame(数据框)类似于Excel电子表格,也与R语言中DataFrame的数据结构类似。

🌙🌙DataFrame数据的选取

🌕🌕DataFrame的构建

import pandas as pd
df=pd.DataFrame({'x':['a','b','c'],'y':[1,2,3],'z':[4,5,6]})
df

在这里插入图片描述

🌕🌕选取多行

方法一:

df.iloc[[0,1],:]

在这里插入图片描述

df.iloc[[0,2],:]

在这里插入图片描述
方法二:

df.loc[['0','2'],:]

在这里插入图片描述

🌕🌕选取某一列

df.y
df['y']
df.loc[:,['y']]
df.iloc[:,[1]]

🌕🌕选取多列

方法一:

df.iloc[:,[1,2]]

在这里插入图片描述
方法二:

df.loc[:,['x','y']]

在这里插入图片描述
方法三:

df[['x','y']]

在这里插入图片描述

🌕🌕单条件过滤

df[df.z>=5]

在这里插入图片描述

🌕🌕多条件过滤

df[(df.z>=4)&(df.z<=5)]

在这里插入图片描述

🌙🌙获取列名和行名

df.columns #获取列名
df.index  #获取行名

🌙🌙观察DataFrame的内容

df.info() #打印属性信息
df.head()# 查看前五行的数据
df.tail()#查看后五行的数据

✨✨变量的变换

有时候,我们需要对DataFrame某列的每个元素都进行运算处理,从而产生并添加新的列

我么可以直接对DataFrame的列进行加减乘除某个数,产生新的列:

df['z1']=df['z']*2

在这里插入图片描述

apply、applymap和map方法都可以向对象中的数据传递函数,主要区别如下:
🌙apply的操作对象是DataFrame的某一列(axis=1)或者某一行(axis=0)
🌙applymap的操作对象是元素极,作用于每个DataFrame的每个数据
🌙map的操作对象也是元素极,但其是对Series的每个数据调用一次函数

使用apply方法,结合lambda表达式,可以为原数据框添加新的列:

df['z2']=df.apply(lambda x:x['z']*2 if x['z']==4 else x['z'],axis=1)

在这里插入图片描述

✨✨表格的拼接

有时候,我们需要在已有数据框的基础上添加新的行或者列,或者横向或纵向的表格。此时我们需要使用pd.concat函数或者append函数实现该功能。

✨✨ 表格的分组操作

DataFrame往往存在某列包含多个类别的数据,例如上次博客中的经典的葡萄酒数据集。我们以此为例。

import pandas as pd
file_path="D:\A_data\Data_wine数据\wine.xlsx"
df=pd.read_excel(file_path)
df

在这里插入图片描述
使用 groupby()函数进行分组操作:

df1=df.groupby('label')
df

在这里插入图片描述
分组之后的结果与原来数据一样,这是因为在类别标签‘label’这一列,原来的数据就是按照0、1、2三种类别的顺序排下来的。

🌙🌙按照分组求均值、求和

求均值:

df2=df.groupby('label').mean()
df2

在这里插入图片描述
当然了,也可以只打出我们想要的某一列的均值:

df2=df.groupby('label').ash.mean()
df2

在这里插入图片描述
求和:

对于这个葡萄酒数据集可能求和操作并没有意义,但在此只是练习:

df2=df.groupby('label').sum()
df2

在这里插入图片描述
求方差:

df2=df.groupby('label').std()
df2

在这里插入图片描述

✨✨表格的拼接

有时候,我们需要在已有数据框的基础上添加新的行或者列,或者横向或纵向的表格。此时我们需要使用pd.concat函数或者append函数实现该功能。

其中,axis=0表示沿纵轴连接。axis=1表示沿横轴连接。
下面我们再举一个例子:
(我觉得2020年国赛数学建模国赛C题很不错)
首先,我们可以看一下,这是一个多sheet Excel:
在这里插入图片描述
在这里插入图片描述

而且,sheet2 、sheet3企业代号就是sheet1中企业的所有发票信息,也就是说一个企业就有很多发票号码。
我们需要整合sheet2,以及sheet3中的信息,将一个企业的某一个指标进行计算,然后希望补到heet1中,形成一个更宏观的表格。

分析指标:总进项价税额:是指企业在一段时间内购进产品的价值总和,该值越高说明企业的生产和经营规模就越大,可以作为衡量企业生产规模大小的有效指标。

我希望根据sheet2算出这个指标,然后添加到sheet1中。
首先导入数据。

import pandas as pd
file_path="D:\A_data\Data.2020.C\附件1:123家有信贷记录企业的相关数据.xlsx"
df=pd.read_excel(file_path,sheet_name=None)
df

这里设置sheet_name=None,会将所有的sheet都整合在df中。
在这里插入图片描述
将sheet1保存至df1

df1=pd.read_excel(file_path,sheet_name='企业信息')
df1

在这里插入图片描述

将我们所要研究的sheet2即“进项发票信息”保存给df2

df2=pd.read_excel(file_path,sheet_name='进项发票信息')
df2

在这里插入图片描述
根据sheet2计算总进项价税额:

df2_=df2.groupby(['企业代号'],as_index=False,sort=False)['价税合计'].sum()
df2_

在这里插入图片描述
这里注意,设置参数sort=False,不然会改变企业代号的排序。
在这里插入图片描述
删除企业代号这一列:

df2_.drop(labels='企业代号',axis=1,inplace=False)

参数说明:axis默认为0,指删除行,axis=1,指删除列。
inplace=False,默认该删除操作不改变原数据,而是返回一个执行删除操作后的新DataFrame。inplace=True,则会直接在原数据上进行删除操作,且删除后无法返回。

在这里插入图片描述

😭😭😭😭**由于我拼接表格,添加新的一列,没有成功。弄出来是这个样子的:**😱😱😱
在这里插入图片描述
所以下面我是导出数据,形成一个新的excel,然后利用excel复制粘贴到sheet1中。

df2__.to_excel("D:\A_data\Data.2020.C\进项价税合计.xlsx")

在这里插入图片描述

还要继续努力呀😭😭😭😭加油加油!

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

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

相关文章

Qt应用开发(基础篇)——滚屏区域类 QScrollArea

一、前言 QScrollArea类继承于QAbstractScrollArea&#xff0c;QAbstractScrollArea继承于QFrame&#xff0c;是Qt滚动视图的常用部件。 滚屏区域基类 QAbstractScrollArea 框架类 QFrame QScrollArea类提供了对另一个小部件的滚动视图&#xff0c;基础功能、滚动条控制、界面策…

Java后端开发需要学什么知识?这些足以影响你的成就

Java后端开发需要学什么知识?如果你的理想是成为一名优秀的Java程序员&#xff0c;那么确实是需要具备一定的技术实力的&#xff0c;后端开发涉及到处理服务器端逻辑、数据库操作、性能优化、安全性等方面&#xff0c;因此需要掌握一定的技术知识和技能。 需要掌握哪些后端开发…

数据分片概述、环境准备、部署MyCAT服务、全局表、分片表、ER表

Top NSD DBA DAY08 案例1&#xff1a;部署mycat服务案例2&#xff1a;测试配置 1 案例1&#xff1a;部署mycat服务 1.1 问题 把主机mysql60 配置为 MySQL59 的从服务器把主机mysql62 配置为 MySQL61 的从服务器把主机mycat63 配置为mycat服务器客户端192.168.88.50访问myca…

实验记录——TT

8月份的小小实验 安装虚拟环境下载相关软件功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也…

Flask Web开发实战(狼书)| 笔记第1、2章

前言 2023-8-11 以前对网站开发萌生了想法&#xff0c;又有些急于求成&#xff0c;在B站照着视频敲了一个基于flask的博客系统。但对于程序的代码难免有些囫囵吞枣&#xff0c;存在许多模糊或不太理解的地方&#xff0c;只会照葫芦画瓢。 而当自己想开发一个什么网站的时&…

关于 Windows 11 的云端备份

一、Windows 云端备份不是Windows 11专享 Windows 11即将正式推出一项云端备份功能&#xff0c;它的作用是为您备份几乎所有内容 - 不仅仅是您的文件和文件夹&#xff0c;还包括应用程序、系统设置、登录详细信息等&#xff0c;以便您可以立即启动并运行新电脑。这些详细信息与…

【Vue2】动态组件的使用-切换组件和keep-alive,以及异步组件

目录 想实现切换不同列表展示不同数据方法一方法二&#xff0c;动态组件动态组件的父组件如何传的值动态组件的子组件如何接受传的值 认识keep-alive缓存组件的生命周期 异步组件&#xff0c;单独打包&#xff0c;实现webpack分包&#xff0c;如何对组件进行单独打包&#xff0…

实习笔记(一)

自定义注解&#xff1a; 自定义注解中有三个元注解Target,Retention,Document /*** 系统日志注解** author Mark sunlightcsgmail.com*/ Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface SysLog {String value() default "…

react-router-dom6 路由不合法

1、昨天用react-router-dom6搭建了个项目&#xff0c;简直了&#xff0c;一个bug直接给我应用干废了&#xff01; 2、我试了试不合法的url是如何处理的&#xff0c;随意输入了个反斜杠 http://localhost:8089/#/\ 3、结果应用搞岔气了&#xff0c; 意思是我的url不合法。 这没问…

Qt creator之对齐参考线——新增可视化缩进功能

Qt creator随着官方越来越重视&#xff0c;更新频率也在不断加快&#xff0c;今天无意中发现qt creator新版有了对齐参考线&#xff0c;也称可视化缩进Visualize Indent&#xff0c;默认为启用状态。 下图为旧版Qt Creator显示设置栏&#xff1a; 下图为新版本Qt Creator显示设…

ctfshow—萌新—web1

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 解法1 标准的数字型注入 查列名 http://cc3ecc3f-8c42-4624-979e-277a51ea85d2.challenge.ctf.show/?id1%20union%20select%20table_name,column_name,3%20from%20information_schema.columns%20where%20t…

Linux—LVM基础

Linux—LVM 一、什么是LVM二、LVM名词解释三、LVM的写入模式四、LVM的工作原理五、LVM的优缺点六、创建PV/VG/LV的方法补充说明 一、什么是LVM LVM&#xff08;Logical Volume Manager&#xff09;&#xff0c;即逻辑卷管理&#xff0c;是Linux环境下对磁盘分区进行管理的一种…

校园宿舍管理系统java学生楼层宿管 jsp源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 校园宿舍管理系统 系统有1权限&#xff1a;管理员 二…

代码随想录算法训练营第三十六天|背包理论基础,LeetCode 416

目录 背包理论基础 动态规划五步曲&#xff1a; 1.确定dp[i][j]的含义 2.找出递推公式 3.初始化dp数组 4.确定遍历顺序 5.举例dp数组 背包理论基础II 动态规划五步曲&#xff1a; 1.确定dp[j]含义 2.找出递推公式 3.初始化dp数组 4.确定遍历顺序 5.举例dp数组 L…

[MAUI]在.NET MAUI中实现可拖拽排序列表

.NET MAUI 中提供了拖放(drag-drop)手势识别器&#xff0c;允许用户通过拖动手势来移动控件。在这篇文章中&#xff0c;我们将学习如何使用拖放手势识别器来实现可拖拽排序列表。在本例中&#xff0c;列表中显示不同大小的磁贴&#xff08;Tile&#xff09;并且可以拖拽排序。 …

【JavaEE基础学习打卡02】是时候了解Java EE了!

目录 前言一、为什么要学习Java EE二、Java EE规范介绍1.什么是规范&#xff1f;2.什么是Java EE规范&#xff1f;3.Java EE版本 三、Java EE应用程序模型1.模型前置说明2.模型具体说明 总结 前言 &#x1f4dc; 本系列教程适用于 Java Web 初学者、爱好者&#xff0c;小白白。…

断点续传的未来发展趋势与前景展望

断点续传是一种在网络传输中断后&#xff0c;能够从中断的位置继续传输的技术。它可以有效地避免因为网络不稳定、服务器故障、用户操作等原因导致的传输失败&#xff0c;节省了用户的时间和流量&#xff0c;提高了传输的效率和可靠性。断点续传在很多场景中都有广泛的应用&…

DEWDROP65 DM蓝牙5.2双模热插拔PCB

键盘使用说明索引&#xff08;均为出厂默认值&#xff09; 软件支持&#xff08;驱动的详细使用帮助&#xff09;一些常见问题解答&#xff08;FAQ&#xff09;首次使用步骤蓝牙配对规则&#xff08;重要&#xff09;蓝牙和USB切换键盘默认层默认触发层0的FN键配置的功能默认功…

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐]

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

什么是BP反向传播算法

什么是BP反向传播算法 神经网络是个好工具&#xff0c;但就像有的刀削铁如泥&#xff0c;有的却只能拿来切豆腐。 真正决定神经网络好不好用的是神经元之间连接的权重和神经元的阈值。 如何确定这些数字&#xff0c;大部分时间我们都在使用反向传播&#xff0c;也就是常说的B…