Python(pandas库2)

DateFrame的添加

上文中DateFrame的增加中,因版本弃置append函数

如果你想要向 DataFrame 添加一行,建议的方法是首先创建一个新的 DataFrame 来表示这行数据,然后使用 pd.concat() 函数来合并它们。

concat

语法

objs: 要连接的 DataFrame 或 Series 对象的列表或字典。

axis: 指定连接的轴,0 或 'index' 表示按行连接,1 或 'columns' 表示按列连接。

join: 指定连接方式,'outer' 表示并集(默认),'inner' 表示交集。

ignore_index: 如果为 True,则忽略原始索引并生成新的索引。

keys: 用于在连接结果中创建层次化索引。

levels: 指定层次化索引的级别。

names: 指定层次化索引的名称。

verify_integrity: 如果为 True,则在连接时检查是否有重复索引。

sort: 如果为 True,则在连接时对列进行排序。

copy: 如果为 True,则复制数据。

案例:

可使用该方法,拼接DateFrame对象

使用 ignore_index ,按行,或列连接 df1 和 df2,并忽略原始索引。

使用 join='inner'(交集),jion=‘outer’(并集)按行合并

案例:

按行合并,只匹配column相同的列,行被堆叠

取jion=‘outer’时

 按列合并,只匹配index相同的行,列被堆叠

取jion=‘outer’时

Dataframe和Series连接:

创建Dataframe和Series对象:

 按行连接 DataFrame 和 Series

 按列连接 DataFrame 和 Series:

函数

DateFrame常用的统计学函数

例:当前有如下DateFrame对象

count():统计某个非空值的数量

sum():求和(按升序或降序排列,取中间的数,如果是偶数个元素,则取中间两个数的平均值)

mean():求均值

median():求中位数

std():求标准差

var():求样本方差(numpy的方差默认为总体方差,pandas默认为样本方差)

min():求最小值

max():求最大值

abs():求绝对值

prod():求所有数值的乘积

重置索引

重置索引(reindex)可以更改原 DataFrame 的行标签或列标签,并使更改后的行、列标签与 DataFrame 中的数据逐一匹配。通过重置索引操作,您可以完成对现有数据的重新排序。如果重置的索引标签在原 DataFrame 中不存在,那么该标签对应的元素值将全部填充为 NaN。

1 reindex

语法:

参数:

  • labels 或 index: 新的行索引标签。如果提供了 index,则忽略 labels

  • columns: 新的列索引标签。

  • axis: 指定应用 labels 或 index 和 columns 的轴(0 表示行,1 表示列)。如果提供了 index 或 columns,则忽略此参数。

  • method: 插值方法。可以是 'backfill'/'bfill'(向后填充)或 'pad'/'ffill'(前向填充)。这将用于填充新索引中不存在于原始索引中的位置。

  • copy: 如果为 True,即使新索引与旧索引相同,也会创建一个新的对象返回。

  • level: 如果索引是多层次的,则可以指定一个级别来重新排序。

  • fill_value: 用于填充新索引中未在原始索引中找到的位置的值,默认为 numpy.nan

  • limit: 当使用 method='pad'/‘ffill’ 或 method='backfill'/‘bfill’ 进行填充时,限制连续填充的最大数量。

  • tolerance: 当使用 method='pad'/‘ffill’ 或 method='backfill'/‘bfill’ 时,允许的最大间隔。间隔是指在进行填充时,允许跳过的缺失值的最大距离。

案例:

重新索引行:

因为原行标签中不含'd',故重新索引之后,d行没有值匹配,所以全为NaN。

使用 method='ffill' 进行前向填充,因此 'd' 对应的行填充了前一行的值。

重新列索引,增加了原本没有的“D”,没有匹配的值,故自动填充为MaN

与行索引修改方法一致。

2 reindex_like

reindex_like 方法用于将一个 DataFrame 或 Series 的索引重新排列,使其与另一个 DataFrame 或 Series 的索引相匹配。如果在重新索引的过程中,新的索引与原始索引不完全匹配,那么不匹配的位置将会被填充为 NaN 值。

语法

案例:

使用 reindex_like 对齐 df1 的行索引到 df2(用的仍然是df1的数据,行索引变为df2的
df1 的行索引被重新索引为 df2 的行索引,因此 df1 中不存在的行索引 'd' 对应的行填充了 NaN。

对齐列索引

与对其行索引方法一致。

遍历

对于 Series 而言,您可以把它当做一维数组进行遍历操作;而像 DataFrame 这种二维数据表结构,则类似于遍历 Python 字典

Series 可直接获取相应的 value,而 DataFrame 则会获取列标签

1 Series的遍历

使用 items()

使用 index 属性

使用 values 属性

2 DataFrame 遍历

如图遍历所得时DateFrame对象的标签。

遍历行

iterrows() 方法用于遍历 DataFrame 的行,返回一个包含索引和行的迭代器。

itertuples() 方法用于遍历 DataFrame 的行,返回一个包含行数据的命名元组。

当处理大型数据集时,应尽量避免使用 iterrows(),因为它的性能相对较差。

itertuples() 是遍历 DataFrame 的推荐方法,因为它在速度和内存使用上都更高效。

遍历列

使用属性遍历

loc 和 iloc 方法可以用于按索引或位置遍历 DataFrame 的行和列。

排序

1 sort_index

sort_index 方法用于对 DataFrame 或 Series 的索引进行排序。

语法

参数

  • axis:指定要排序的轴。默认为 0,表示按行索引排序。如果设置为 1,将按列索引排序。

  • ascending:布尔值,指定是升序排序(True)还是降序排序(False)。

  • inplace:布尔值,指定是否在原地修改数据。如果为 True,则会修改原始数据;如果为 False,则返回一个新的排序后的对象。

案例:

如图将打乱的行标签['b', 'c', 'a'],重新排列为['a','b', 'c',]

2 sort_values

sort_values 方法用于根据一个或多个列的值对 DataFrame 进行排序。

语法

  • by:列的标签或列的标签列表。指定要排序的列。

  • axis:指定沿着哪个轴排序。默认为 0,表示按列排序。如果设置为 1,将按行排序。

  • ascending:布尔值或布尔值列表,指定是升序排序(True)还是降序排序(False)。可以为每个列指定不同的排序方向。

  • inplace:布尔值,指定是否在原地修改数据。如果为 True,则会修改原始数据;如果为 False,则返回一个新的排序后的对象。

  • kind:排序算法。默认为 'quicksort',也可以选择 'mergesort' 或 'heapsort'。

  • na_position:指定缺失值(NaN)的位置。可以是 'first' 或 'last'。

如图所示,便是将DateFrame对象根据B列来整体升序排列。

去重

drop_duplicates 方法用于删除 DataFrame 或 Series 中的重复行或元素。

语法:

案例:

如图可见:drop_duplicates:去重

by:指定重复的列或列名的列表

keep:处理重复项:-first:保留第一项 ,last:保留最后一项 ,False:所有重复都不保留

分组

1 groupby

groupby 方法用于对数据进行分组操作,这是数据分析中非常常见的一个步骤。通过 groupby,你可以将数据集按照某个列(或多个列)的值分组,然后对每个组应用聚合函数,比如求和、平均值、最大值等。

语法

如图,可将原DateFrame对象根据A列的情况,将其分为2组。

如图,在分组的基础上,还可对分组出的对象进行运算:根据A列情况分为两组,再分别取出两组中C列的算数平均数。

如图,在原基础上,通过transfrom函数可将分组好求出的平均数分别打印在原DateFrame对象的相应位置。之后可将其作为新列添加到原对象。

如图则是将函数正态函数标准化取值,然后再作为新列添加至原对象

2 filter

通过 filter() 函数可以实现数据的筛选,该函数根据定义的条件过滤数据并返回一个新的数据集

如图:表示对A列情况分组后,筛选出C列平均值大于4的对象。

合并

merge 函数用于将两个 DataFrame 对象根据一个或多个键进行合并,类似于 SQL 中的 JOIN 操作。这个方法非常适合用来基于某些共同字段将不同数据源的数据组合在一起,最后拼接成一个新的 DataFrame 数据表。

语法:

merge:两个Dataframe按照公共列进行合并

参数:

left:左边的Dataframe

right:右边的Dataframe

on:指定两个Dataframe的公共列,如果不指定,则按照相同的列名作为公共列

how:连接方式:

inner:内连接,默认

outer:外连接,并集

left:左连接,以左边的Dataframe为准,右边的Dataframe如果有缺失值,则补充为NaN

right:右连接,以右边的Dataframe为准,左边的Dataframe如果有缺失值,则补充为NaN

时间

1 datetime

datetime 模块提供了用于处理日期和时间的类。

2 Timestamp

Timestamp 是一个特殊的 datetime 类型,用于表示单个时间点。它是 pandas 时间序列功能的核心组件,提供了丰富的方法和属性来处理日期和时间数据。

图中的1729843950000,后9位数字(843950000)表示秒的下个单位数值,前面的数字(1729)这表示1729秒,并换算成年月日,时分秒,加在1970年1月1日0点0分0秒的基础上。即1729秒换算得28分,49秒。故结果为1970-01-01  00:28:49.843950

3 日期解析

pd.to_datetime() 方法用于将字符串或其他格式的日期转换为 Pandas 的 Datetime 对象。

4 date_range

date_range() 函数用于生成一个固定频率的日期时间索引(DatetimeIndex)。这个函数非常灵活,可以用于生成各种时间序列数据。

语法

freq:时间频率。常见的频率包括 'D'(天)、'H'(小时)、'T' 或 'min'(分钟)、'S'(秒)等。

start:开始时间

end:结束时间

periods:取整数,默认为 None。生成的日期时间索引的数量。

5 时间差

Timedelta 是一个用于表示时间间隔的对象。它可以表示两个时间点之间的差异,或者表示某个时间段的长度。Timedelta 对象可以用于时间序列分析、日期运算等场景。

时间差加减

6 时间日期格式化

strftime 用于将日期时间对象转换为指定格式的字符串,而 strptime 用于将字符串解析为日期时间对象。

时间日期符号:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于协同过滤算法的个性化课程推荐系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

JDBC: Java数据库连接的桥梁

什么是JDBC? Java数据库连接(Java Database Connectivity,简称JDBC)是Java提供的一种API,允许Java应用程序与各种数据库进行交互。JDBC提供了一组标准的接口,开发者可以利用这些接口执行SQL语句、处理结果集…

「C/C++」C++ STL容器库 之 std::multiset 键的集合容器

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

腾讯云跨AZ部署FortigateHA备忘录

随时保存配置 config system globalset admintimeout 480set alias "FortiGate-VM64-KVM"set gui-auto-upgrade-setup-warning disableset hostname "FG-Slave"set revision-backup-on-logout enableset revision-image-auto-backup enableset timezone &…

【 thinkphp8 】00006 启动 内、外置服务器

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【 t…

Java学习Day53:铲除紫云山金丹原料厂厂长(手机快速登录、权限控制)

1.手机快速登录 手机快速登录功能,就是通过短信验证码的方式进行登录。这种方式相对于用户名密码登录方式,用户不需要记忆自己的密码,只需要通过输入手机号并获取验证码就可以完成登录,是目前比较流行的登录方式。 前端页面&…

centos7.x安装openCV 4.6.0版本

## 从源代码编译安装 1.更新系统 sudo yum update -y 2.安装依赖项 sudo yum groupinstall "Development Tools" sudo yum install cmake gcc-c git libjpeg-turbo-devel libpng-devel libtiff-devel libwebp-devel openexr-devel gstreamer1-plugins-base-devel…

iTerm2 保持SSH远程连接

1、保持SSH远程连接的稳定,防止因闲置时间过长而断开连接 When idle, send ASCII code 35 every 60 seconds每60秒 输入# 2、客户端设置保持活动 设置客户端每隔60秒发送一次保活信号,总共尝试3次。 vim ~/.ssh/configHost *ServerAliveInterval 60…

uniapp 底部导航栏tabBar设置后不显示的问题——已解决

uniapp 底部导航栏tabBar设置后不显示的问题——已解决 网上找了一堆解决办法,挨个对着试吧 解决办法一:tabBar里的list第一项和page中的第一项要相同,确实就能显示了。但是问题来了,page中的第一项是入口页,那就意味…

鲸鱼优化算法(Whale Optimization Algorithm, WOA)原理与MATLAB例程

鲸鱼优化算法(Whale Optimization Algorithm, WOA)是一种基于鲸鱼捕食行为的智能优化算法。它模拟了座头鲸在狩猎时的“气泡网”捕食策略。 文章目录 1.适应度函数2. 更新公式2.1 突袭行为2.2 螺旋更新3.线性递减参数4. 边界处理 MATLAB 实现示例代码说明…

HarmonyOS 5.0应用开发——Navigation实现页面路由

【高心星出品】 文章目录 Navigation实现页面路由完整的Navigation入口页面子页面 页面跳转路由拦截其他的 Navigation实现页面路由 Navigation:路由导航的根视图容器,一般作为页面(Entry)的根容器去使用,包括单页面&…

前端构建工具vite的优势

1. 极速冷启动 Vite 使用原生 ES 模块 (ESM) 在开发环境下进行工作。相比于传统构建工具需要打包所有的文件,Vite 只在浏览器请求模块时动态加载所需的文件。无打包冷启动:无需预先打包,项目启动非常快,尤其对于大型项目效果更明…

Arduino Uno 同时控制多路舵机

Arduino Uno同时控制4个舵机 舵机可以在0~180度内指定角度的控制。常用于航模、机器人、遥控玩具等物品,然而,很多时候要一次性控制多个舵机,今天以控制4个舵机为例进行说明 接线方式如下图: 舵机的信号线分别接A0,A1,A2,A3。控制舵机从0旋转到180度,再由180度旋转到0度,…

基于NERF技术重建学习笔记

NeRF(Neural Radiance Fields)是一种用于3D场景重建的神经网络模型,能够从2D图像生成逼真的3D渲染效果。它将场景表征为一个连续的5D函数,利用了体积渲染和神经网络的结合,通过学习光线穿过空间时的颜色和密度来重建场…

机器视觉-相机、镜头、光源(总结)

目录 1、机器视觉光源概述 2、光源的作用 3、光谱 4、工业场景常见光源 4.1、白炽灯 4.2、卤素灯 4.3、 荧光灯 4.4、LED灯 4.5、激光灯 5、光源的基本性能 5.1、光通量 5.2、光效率 5.3、发光强度 5.4、光照度 5.5、均匀性 5.6、色温 5.7、显色性 6、基本光学…

openpnp - 解决“底部相机高级校正成功后, 开机归零时,吸嘴自动校验失败的问题“

文章目录 openpnp - 解决"底部相机高级校正成功后, 开机归零时,吸嘴自动校验失败的问题"概述笔记问题现象1问题现象2原因分析现在底部相机和吸嘴的位置偏差记录修正底部相机位置现在再看看NT1在底部相机中的位置开机归零,看看是否能通过所有校…

python csv库

python csv库 水一水又是一篇,乐 读取 import csv # 打开 CSV 文件 with open(example.csv, moder, newline) as file: csv_reader csv.reader(file) # 读取文件头(可选) headers next(csv_reader) print(f"Headers: {heade…

golang将指针传给cgo后还能被回收吗?

问题&#xff1a; 如果把golang分配的变量&#xff0c;其指针通过cgo传给c&#xff0c;并被c存储&#xff0c;那这个变量还能被gc回收吗&#xff1f; 实验代码&#xff1a; test_memory_leak.go package main/* #include <stdlib.h> #include <string.h> #incl…

基于docker-compose编排部署微服务快速开发框架

1. 规划节点 节点规划&#xff0c;见表1。 表1 节点规划 IP主机名节点10.24.2.10masterdocker-compose节点 2. 基础准备 Docker和Docker Compose已安装完成&#xff0c;将提供的软件包Pig.tar.gz上传至master节点/root目录下并解压。 案例实施 1. 基础环境准备 &#x…

渗透测试-百日筑基—SQL注入篇时间注入绕过HTTP数据编码绕过—下

day8-渗透测试sql注入篇&时间注入&绕过&HTTP数据编码绕过 一、时间注入 SQL注入时间注入&#xff08;也称为延时注入&#xff09;是SQL注入攻击的一种特殊形式&#xff0c;它属于盲注&#xff08;Blind SQL Injection&#xff09;的一种。在盲注中&#xff0c;攻击…