pandas(13 Caveats Gotchas和SQL比较)

前面内容:pandas(12 IO工具和稀松数据) 

目录

一、Caveats警告 & Gotchas预见

1.1 在Pandas中使用if/Truth语句 

1.2 位运算布尔

1.3 isin操作

1.4 重新索引reindex和 loc&iloc 使用注意事项

1.5 loc和iloc 

二、Python Pandas 与SQL的比较

2.1 数据集 

2.2 SELECT(查询)

2.3 WHERE(过滤)

2.4 GroupBy(分组)

2.5 前N行


 

一、Caveats警告 & Gotchas预见

1.1 在Pandas中使用if/Truth语句 

Pandas遵循numpy的约定,当您尝试将某个对象转换为 bool 时,会抛出错误。这在使用布尔运算的 if 或 when 以及 or 、 and 或 not 时会发生。不清楚应该得到什么结果。它应该是True,因为它不是零长度的吗?它应该是False,因为有False的值吗?不清楚,所以Pandas会引发 ValueError – 

 例1:

import pandas as pd

if pd.Series([False, True, False]):
   print('I am True')

运行结果: 

例2:any() 

import pandas as pd

if pd.Series([False, True, False]).any():
   print("I am any")

运行结果:

例3:bool()单个元素

import pandas as pd
print(pd.Series([True]).bool())

运行结果:

例4:bool()多元素

import pandas as pd
print(pd.Series([True,False]).bool())

运行结果:

1.2 位运算布尔

位运算布尔运算符如 == 和 ! 返回一个布尔序列,这通常是所需的。

例5: 

import pandas as pd

s = pd.Series(range(5))
print(s==4)

运行结果:

1.3 isin操作

此操作返回一个布尔系列,显示系列中的每个元素是否完全包含在传递的值序列中

例6:isin() 

import pandas as pd

s = pd.Series(list('abc'))
s = s.isin(['a', 'c', 'e'])
print(s)

运行结果:

  

1.4 重新索引reindex和 loc&iloc 使用注意事项

很多用户会发现使用 ix 索引能力 作为从 Pandas 对象中选择数据的简洁方式−

例7: loc()

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(6, 4), columns=['one', 'two', 'three',
'four'],index=list('abcdef'))

print(df)
print('-'*50)
print(df.loc[['b', 'c', 'e']])

运行结果:

例8: reindex()

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(6, 4), columns=['one', 'two', 'three', 'four'], index=list('abcdef'))

print(df)
print('-' * 50)
print(df.reindex(['b', 'c', 'e']))#只有一对[]如果和上面一样是两对,值则为空

运行结果:

例9:iloc()和reindex 

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(6, 4), columns=['one', 'two', 'three',
'four'],index=list('abcdef'))

print(df.iloc[[1, 2, 4]])
print('-'*50)
print(df.reindex([1, 2, 4]))

运行结果:

 

结论:使用标签时,loc和reindex等价,使用行列位置时,iloc有数值,reindex数值为空 

1.5 loc和iloc 

1. loc:基于标签进行索引

  • 语法df.loc[row_indexer, column_indexer]

    • row_indexer:行标签(可以是单个标签、标签列表、布尔数组等)。
    • column_indexer:列标签(可以是单个标签、标签列表、布尔数组等)。
  • 特点

    • loc 通过 行标签列标签 来进行定位,常用于通过标签名来选取数据。
    • 选择的范围是 闭区间(包括结束标签)。

2. iloc:基于位置进行索引

  • 语法df.iloc[row_indexer, column_indexer]

    • row_indexer:行的位置索引(可以是整数、整数列表、切片等)。
    • column_indexer:列的位置索引(可以是整数、整数列表、切片等)。
  • 特点

    • iloc 通过 行的位置索引列的位置索引 来进行定位,常用于通过整数位置进行选取数据。
    • 选择的范围是 半开区间(不包括结束位置)。

二、Python Pandas 与SQL的比较

由于许多潜在的Pandas用户对SQL有一定的了解,所以本页面旨在提供使用pandas执行各种SQL操作的一些示例。

2.1 数据集 

例1: 

import pandas as pd

url = 'https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv'
tips = pd.read_csv(url)
print(tips.head())

运行结果:

 

2.2 SELECT(查询)

在SQL中,使用逗号分隔的列列表进行选择(或使用*选择所有列)-

例2: 

SQL: SELECT

SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;

pandas: 

print(tips[['total_bill', 'tip', 'smoker', 'time']].head(5))

运行结果: 

2.3 WHERE(过滤)

例3: 

SQL: WHERE

SELECT * FROM tips WHERE time = 'Dinner' LIMIT 5;

pandas: 布尔值

tips[tips['time'] == 'Dinner'].head(5)

运行结果:

 

2.4 GroupBy(分组)

例4: 

SQL: 

SELECT sex, count(*)
FROM tips
GROUP BY sex;

pandas:

print(tips.groupby('sex').size())

运行结果:

 

2.5 前N行

例5: 

SQL:LIMIT

SELECT * FROM tips
LIMIT 5 ;

pandas:

print(tips.head(5))

运行结果: 

 

 

 

 

 

 

 

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

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

相关文章

MongoDB 7 分片副本集升级方案详解(下)

#作者:任少近 文章目录 1.4 分片升级1.5 升级shard11.6 升级shard2,shard31.7 升级mongos1.8重新启用负载均衡器1.9 推荐MongoDB Compass来验证数据 2 注意事项: 1.4 分片升级 使用“滚动”升级从 MongoDB 7.0 升级到 8.0,即在其他成员可用…

洛谷 P2894 USACO08FEB Hotel 题解

题意 第一行输入 n , m n,m n,m&#xff0c; n n n 代表有 n n n 个房间 ( 1 ≤ n ≤ 50 , 000 ) (1\leq n \leq 50,000) (1≤n≤50,000)&#xff0c;编号为 1 ∼ n 1 \sim n 1∼n&#xff0c;开始都为空房&#xff0c; m m m 表示以下有 m m m 行操作 ( 1 ≤ m < 50…

VS2022中.Net Api + Vue 从创建到发布到IIS

VS2022中.Net Api Vue 从创建到发布到IIS 前言一、先决条件二、创建项目三、运行项目四、增加API五、发布到IIS六、设置Vue的发布 前言 最近从VS2019 升级到了VS2022,终于可以使用官方的.Net Vue 组合了,但是使用过程中还是有很多问题,这里记录一下. 一、先决条件 Visual …

BGP分解实验·18——BGP选路原则之权重

在本地对进入的NLRI做权重设置&#xff0c;从而对过滤特定的路由进行优选。严格来说&#xff0c;权重值并不能算是路径属性&#xff0c;因为它并处传递&#xff0c;所能影响的仅仅限于本地路由器。 实验拓扑如下&#xff1a; 完成实验拓扑的基础实验&#xff0c;R1的配置如下…

正点原子ESP32S3系列开发板全面支持小智AI

什么是小智AI? 小智AI项目是由虾哥发起并开源的一个项目。该项目能帮助更多人入门AI硬件开发&#xff0c;了解如何将当下飞速发展的大语言模型应用到实际的硬件设备中。 小智AI功能如下&#xff1a; WiFi / ML307 Cat.1 4G BOOT键唤醒和打断&#xff0c;支持点击和长按两种触…

【2025最新计算机毕业设计】基于SpringBoot+Vue高校社团管理系统 【提供源码+答辩PPT+文档+项目部署】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

探寻性能优化:如何衡量?如何决策?

目录 一、衡量指标说明 &#xff08;一&#xff09;响应时间&#xff08;Response Time&#xff09; 平均响应时间&#xff08;Average Response Time&#xff09; 百分位数响应时间&#xff08;Percentile Response Time&#xff09; &#xff08;二&#xff09;吞吐量&a…

YOLO11环境搭建CUDA12.6

1.安装CUDA和cuDNN 1.1安装CUDA 1.1.1查看当前你的电脑显卡支持的最高CUDA版本,后面的安装不能超过它 通过命令的方式查看 输入nvidia-smi 1.1.2 下载CUDA 官网地址:CUDA Toolkit Archive | NVIDIA Developer 选择cuda_12.6.3 下载完成后,如下: 安装,一直下一步即可:…

Java多线程——性能与可伸缩性

可伸缩性 当增加计算资源时&#xff08;如CPU、内存、存储容量或I/O带宽&#xff09;&#xff0c;程序的吞吐量或处理能力能相应的增加 Amdahl定理 F为必须被串行执行的部分&#xff0c;在N个处理器的机器中&#xff0c;在增加计算资源所能达到的最高加速比是 N趋于无穷大时…

Spring Boot 项目启动报错 “找不到或无法加载主类” 解决笔记

一、问题描述 在使用 IntelliJ IDEA 开发基于 Spring Boot 框架的 Java 程序时&#xff0c;原本项目能够正常启动。但在后续编写代码并重建项目后&#xff0c;再次尝试运行却出现了 “错误&#xff1a;找不到或无法加载主类 com.example.springboot.SpringbootApplication” 的…

snort3.0-ubuntu18.04 64入侵检测安装与使用

在日常生活中&#xff0c;很多人怀疑自己的手机、电脑被监控了&#xff0c;担心自己的隐私泄漏&#xff0c;实际上最佳的检测方式就是终端检测&#xff0c;也就是EDR&#xff0c;但是就是有那么多的人在网上大放厥词&#xff0c;说任何EDR杀毒软件都检测不到监控&#xff0c;毕…

Spring Cloud-Sentinel

Sentinel服务熔断与限流 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。 官网地址&#xff1a;home | Sentinelhttps://sen…

蓝桥与力扣刷题(230 二叉搜索树中第k小的元素)

题目&#xff1a;给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 小的元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;1示例 2&#xff…

安卓设备调试h5页面(调试)

1、在chrome浏览器中输入网址&#xff1a;chrome://inspect/#devices 2、设备连接usb&#xff0c;打开对应app 3、点击inspect fallback&#xff0c;打开对应调试页面

第1章大型互联网公司的基础架构——1.6 RPC服务

你可能在1.1节的引言中注意到业务服务层包括HTTP服务和RPC服务&#xff0c;两者的定位不一样。一般来说&#xff0c;一个业务场景的核心逻辑都是在RPC服务中实现的&#xff0c;强调的是服务于后台系统内部&#xff0c;所谓的“微服务”主要指的就是RPC服务&#xff1b;而HTTP服…

【NLP251】BertTokenizer 的全部 API 及 使用案例

BertTokenizer 是 Hugging Face 的 transformers 库中用于处理 BERT 模型输入的分词器类。它基于 WordPiece 分词算法&#xff0c;能够将文本分割成词汇单元&#xff08;tokens&#xff09;&#xff0c;并将其转换为 BERT 模型可以理解的格式。BertTokenizer 是 BERT 模型的核心…

SOCKET建立简单的tcp服务端与客户端通信

socket是什么 socket可以使两台机子建立连接&#xff0c;就像连接风扇与电源的插座一样&#xff0c;socket可以使服务端与客户端建立连接&#xff0c;服务端就像供电厂&#xff0c;而客户端就像用电器&#xff0c;而socket就是连接二者的插座。 建立简单的连接 如果我们想在客…

机试刷题_字符串的排列【python】

题目&#xff1a;字符串的排列 from os import dup # # 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可 # # # param str string字符串 # return string字符串一维数组 # class Solution:def backtrack(self,res,state,choi…

PostgreSQL有undo表空间吗?

PostgreSQL有undo表空间吗 PostgreSQL 没有单独的 Undo 表空间&#xff0c;其事务回滚和多版本并发控制&#xff08;MVCC&#xff09;机制与 Oracle 等数据库有显著差异。 一 PostgreSQL 的 MVCC 实现 PostgreSQL 通过 多版本并发控制&#xff08;MVCC&#xff09; 管理事务…

CI/CD(二)docker-compose安装Jenkins

1、docker-compose.yml version: 3.8services:jenkins:image: jenkins/jenkins:lts # 使用官方的 Jenkins LTS 镜像container_name: jenkinsuser: root # 如果需要以 root 用户运行ports:- "8080:8080" # Jenkins Web 界面端口- "50000:50000" # 用于 Jen…