pandas 二

pandas更新中…

pandas版本:2.0.3

pandas两个比较重要的结构:Series和DataFrame

导包

import numpy as np
import pandas as pd
from pandas import Series, DataFrame

Series 的reindex操作

s1 = pd.Series([1, 2, 3], index=["a", "b", "c"])
print(s1)
# a    1
# b    2
# c    3
# dtype: int64
print(s1.reindex(["a", "b", "c", "d"]))
# a    1.0
# b    2.0
# c    3.0
# d    NaN
# dtype: float64
print(s1.reindex(["a", "b", "c", "d"], fill_value=666))
# a      1
# b      2
# c      3
# d    666
# dtype: int64s2 = pd.Series(["A", "B", "C"], index=[1, 3, 5])
print(s2)
# 增加新的index索引
# method="ffill"方式[1,3)填充index=1的值,[3,5)填充index=3的值,[5,7)填充index=5的值
print(s2.reindex(range(7), method="ffill"))

reindex 也可以用来截取数据

print(s1.reindex(index=["a", "b"]))
# a    1
# b    2
# dtype: int64
# 等价
print(s1.drop("a"))
# b    2
# c    3
# dtype: int64

DataFrame的reindex操作

df1 = DataFrame(np.random.rand(25).reshape(5, 5),index=["A", "B", "D", "E", "F"],columns=["c1", "c2", "c3", "c4", "c5"],
)
print(df1)
print(df1.reindex(index=["A", "B", "C", "D", "E", "F"]))
#          c1        c2        c3        c4        c5
# A  0.205651  0.094378  0.548683  0.104871  0.497516
# B  0.086842  0.842261  0.912813  0.661971  0.849072
# C       NaN       NaN       NaN       NaN       NaN
# D  0.570752  0.585542  0.606429  0.713678  0.013199
# E  0.650421  0.567925  0.303060  0.234874  0.911466
# F  0.011784  0.304507  0.040120  0.064653  0.209229
print(df1.reindex(columns=["c1", "c2", "c3", "c4", "c5","c6"])) 
# !!可以看出reindex方法返回新的DataFrame
#          c1        c2        c3        c4        c5  c6
# A  0.279706  0.179977  0.744959  0.637003  0.574922 NaN
# B  0.179284  0.159424  0.857709  0.302644  0.051491 NaN
# D  0.571989  0.893290  0.337798  0.385577  0.098375 NaN
# E  0.128973  0.367170  0.556358  0.303979  0.628117 NaN
# F  0.358955  0.851620  0.789938  0.720290  0.169392 NaN# 增加行列
print(df1.reindex(index=["A", "B", "C", "D", "E", "F"], columns=["c1", "c2", "c3", "c4", "c5", "c6"]
))
#          c1        c2        c3        c4        c5  c6
# A  0.600788  0.478370  0.842493  0.645647  0.927288 NaN
# B  0.466357  0.523482  0.792704  0.004789  0.319052 NaN
# C       NaN       NaN       NaN       NaN       NaN NaN
# D  0.677526  0.039438  0.846586  0.875791  0.354747 NaN
# E  0.577882  0.779355  0.089818  0.958951  0.697171 NaN
# F  0.130449  0.671984  0.922430  0.902640  0.100657 NaN

reindex也可以用来截取数据

print(df1.reindex(index=["A","B"]))
#          c1        c2        c3        c4        c5
# A  0.600788  0.478370  0.842493  0.645647  0.927288
# B  0.466357  0.523482  0.792704  0.004789  0.319052print(df1.drop("A", axis=0)) # 行删除
#          c1        c2        c3        c4        c5
# B  0.466357  0.523482  0.792704  0.004789  0.319052
# D  0.677526  0.039438  0.846586  0.875791  0.354747
# E  0.577882  0.779355  0.089818  0.958951  0.697171
# F  0.130449  0.671984  0.922430  0.902640  0.100657print(df1.drop("c1", axis=1)) # 列删除
#          c2        c3        c4        c5
# A  0.478370  0.842493  0.645647  0.927288
# B  0.523482  0.792704  0.004789  0.319052
# D  0.039438  0.846586  0.875791  0.354747
# E  0.779355  0.089818  0.958951  0.697171
# F  0.671984  0.922430  0.902640  0.100657

Nan操作

Series中的nan

s1 = pd.Series([1, 2, np.nan, 3, 4], index=["A", "B", "C", "D", "E"])
print(s1)
# A    1.0
# B    2.0
# C    NaN
# D    3.0
# E    4.0
# dtype: float64print(s1.isnull()) # nan为True
# A    False
# B    False
# C     True
# D    False
# E    False
# dtype: bools1.dropna() # 删除nan
# A    1.0
# B    2.0
# D    3.0
# E    4.0
# dtype: float64

DataFrame的nan

dframe = DataFrame([[1, 2, 3], [np.nan, 5, 6], [7, np.nan, 8], [np.nan, np.nan, np.nan]]
)
print(dframe)
#      0    1    2
# 0  1.0  2.0  3.0
# 1  NaN  5.0  6.0
# 2  7.0  NaN  8.0
# 3  NaN  NaN  NaNprint(dframe.isnull())
#        0      1      2
# 0  False  False  False
# 1   True  False  False
# 2  False   True  False
# 3   True   True   True

过滤和填充nan

# axis=0, how="any" axis删除行的nan值,how=方式为包含就删除
# !!上述两个参数默认值就是0和any
# axis和numpy的axis参数不一样
# 等价 print(dframe.dropna())
df1 = dframe.dropna(axis=0, how="any")
print(df1)
#      0    1    2
# 0  1.0  2.0  3.0df2 = dframe.dropna(thresh=2)  # 行大于2个的nan将被删除
print(df2)
#      0    1    2
# 0  1.0  2.0  3.0
# 1  NaN  5.0  6.0
# 2  7.0  NaN  8.0df3 = dframe.fillna(value=99) # 填充nan
print(df3)
#       0     1     2
# 0   1.0   2.0   3.0
# 1  99.0   5.0   6.0
# 2   7.0  99.0   8.0
# 3  99.0  99.0  99.0

map操作

df1 = DataFrame({"城市":["北京","上海","广州"],"人口":[1000,2000,1500]})
print(df1)
#    城市    人口
# 0  北京  1000
# 1  上海  2000
# 2  广州  1500# gdp_map = {"北京": 1, "上海": 2, "广州": 3}
gdp_map = {"北京": 1,  "广州": 3} # 缺省值为nan
df1["GDP"] = df1["城市"].map(gdp_map)
print(df1)
#    城市    人口  GDP
# 0  北京  1000  1.0
# 1  上海  2000  NaN
# 2  广州  1500  3.0

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

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

相关文章

上网行为管理软件有哪些?三款常用上网行为管理软件评测

互联网的普及,企业和个人对于网络安全和信息保护的需求越来越高。为了确保网络环境的安全和稳定,上网行为管理软件应运而生。本文将对三款常用的上网行为管理软件进行评测,分别是域智盾、Splunk Enterprise Security和安企神。 1、域智盾 域…

Linux查看僵尸进程

1、查看系统是否有僵尸进程 使用Top命令查找,当zombie前的数量不为0时,即系统内存在相应数量的僵尸进程。 2、定位僵尸进程 使用命令ps -A -ostat,ppid,pid,cmd |grep -e ‘^[Zz]’定位僵尸进程以及该僵尸进程的父进程。 3、杀死僵尸进程 使用Kill -…

二叉树中的最长交错路径

题目链接 二叉树中的最长交错路径 题目描述 注意点 每个节点的值在 [1, 100] 之间 解答思路 深度优先遍历整棵树,遍历的同时需要将到达根节点是向左交叉还是向右交叉以及路径长度传递到子树。当根节点是向左交叉遍历而来,子树想和根节点组成路径就只…

<计算机网络自顶向下> 面向连接的传输:TCP

目录 TCP: 概述 TCP报文段结构 TCP往返延时(RTT)和超时 可靠数据传输 快速重传 流量控制 连接管理 TCP: 概述 点对点 一个发送方,一个接收方可靠的、按顺序的字节流 不出错,不重复,不丢失,不失序没有报…

C++学习笔记(17)——list迭代器

系列文章 http://t.csdnimg.cn/u80hL 目录 系列文章[TOC](目录) 定义功能 优点缺点函数成员函数insert: 在pos位置插入value(头部和中间插入效率很高)erase:删除指定位置的节点,返回被删除的节点的下一个位置swap:交换两个链表的…

如何在Java中计算两个日期之间的天数差

在Java开发过程中,我们常常需要处理与日期相关的计算,例如计算两个特定日期之间相隔的天数。Java 8及其后续版本引入了强大的java.time包,提供了丰富的日期时间类和工具,使得这类操作变得简单且精准。本文将详细介绍如何使用java.…

面试算法准备:动态规划

这里写自定义目录标题 1 理论2 例题2.1 斐波那契数列(什么是重叠子问题)2.1.1 带备忘录的递归解法 2.2 零钱兑换(讲解最优子结构)2.3 最长递增子序列(讲解如何求解状态转移方程)2.4 俄罗斯套娃信封问题&…

【Android 开发】模拟器上的/storage/emulated/0 上创建目录

Android创建文件夹失败的原因及解决方法 在Android开发中,经常会遇到创建文件夹的需求,但有时候我们可能会遇到创建文件夹失败的情况。本文将介绍一些常见的原因,并提供相应的解决方法。 常见原因 1.权限问题 Android系统对于文件系统的访…

3月养颜抗氧化市场发展趋势洞察:抗糖亮肤功能性产品成为行业大势

随着我国人口老龄化程度的加深和人们对健康和美丽的追求日益增强,具备养颜抗氧化、抗衰老功能的产品逐渐成为市场热门,备受人们关注。 根据鲸参谋数据显示,今年3月份,在线上电商平台(京东天猫淘宝)养颜抗氧…

pcba方案开发——血氧仪方案设计

1、方案概述:血氧饱和度(SpO2)是血液中携带氧分子的氧合血红蛋白(HbO2)的容量占全部血红蛋白(Hb)容量的百分比,即血液中血氧的浓度,是呼吸循环系统的重要生理参数。 血氧被称为心率、血压、体温、呼吸率之后的第五大人…

[Windows] Bypass分流抢票 v1.16.25 五一黄金周自动抢票软件(2024.02.08更新)

五一黄金周要来了,火车票难买到,即便官网候选订票也要看运气,推荐使用这个靠谱的自动抢票软件, 该工具是目前市面上最好用口碑最好的电脑抢票软件,从13年到现在,作者依旧在更新,可以自动识别123…

什么是最优物理隔离文件导出导入解决方案,来看看吧

企业进行物理隔离的主要原因是为了提高安全性,减少安全风险。物理隔离通常指的是将网络或系统中的关键部分与外界断开直接连接,以增强安全性。在企业环境中,这通常意味着将内部网络(内网)与外部网络(如互联…

关于MCU核心板的一些常见问题

BGA植球与焊接(多涂焊油): 【BGA芯片是真麻烦,主要是植锡珠太麻烦了,拆一次就得重新植】https://www.bilibili.com/video/BV1vW4y1w7oNvd_source3cc3c07b09206097d0d8b0aefdf07958 / NC电容一般有两种含义&#xff1…

控制台居然可以这么玩?五分钟带你上手ANSI指令,实现一个log工具包

目录 前言 基础知识 进阶实践 ANSI参数 ANSI类 JSLog类 工具的使用说明 配置相关 全局配置项 默认配置 基本用法 打印字符 添加全局配置项 清空所有样式及操作行为 校验传入的参数是否正确 样式控制 Node环境 浏览器中 光标控制指令 光标位置偏移 滚动条控…

python之super

子类在继承父类的时候,一般都会在初始化函数中调用父类的__init__函数,举个例子: class Parent:def __init__(self):print("This is Parent class.")class Child(Parent):def __init__(self):super().__init__()print("This …

XiaodiSec day031 Learn Note 小迪安全学习笔记

XiaodiSec day031 Learn Note 小迪安全学习笔记 记录得比较凌乱,不尽详细 day31 上传漏洞 前置 基础内容在 ctfshow 中演示 中间件 cms 中的文件上传 开始 文件上传一般配合抓包 前台验证, 在前台改就可上传成功 php 后缀的文件有 php 后门,可连…

消费增值:革新你的消费体验,让每一分钱都更有价值

亲爱的顾客们,你们好!今天,我想为大家介绍一种革新性的消费模式——消费增值,它赋予每一次购物以额外的价值,让消费过程变得更加丰富多彩。 过去,我们的消费观念往往是“一手交钱,一手交货”&am…

LCD彩屏显示方案选型攻略:从接口到GUI开发工具的全面评估

在现代人类社会,彩色显示技术是科技王国里最为绚丽夺目的技术奇葩,LCD彩屏通过显示实时信息并提供交互式的体验,将信息时代打扮得多姿多彩。无论是智能家电还是医疗健康设备领域,精美直观的LCD彩屏显示,往往能够为用户…

【Linux学习】初始冯诺漫体系结构

文章目录 认识冯诺依曼系统 认识冯诺依曼系统 什么是冯诺依曼体系结构? 冯诺依曼体系结构是一种将程序指令和数据以二进制形式存放在主存储器中,由中央处理器统一控制和执行的计算机系统结构。冯诺依曼体系结构实现了程序的可编程性和硬件与软件的分离&…

wordpress建网站主题案例推荐

wordpress企业网站主题案例 https://www.mymoban.com/wordpress/ wordpress公司官网主题案例 https://www.wowsoho.com/jianzhan wordpress外贸主题案例 https://www.wpniu.com/moban