当前位置: 首页 > news >正文

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))

运行结果: 

 

 

 

 

 

 

 

相关文章:

  • 【Three.js】JS 3D library(一个月进化史)
  • 1-14 Merge与rebase操作
  • Swift CChar元祖转String
  • 12-罗马数字转整数
  • DeepSeek R1 与 OpenAI O1:机器学习模型的巅峰对决
  • python(1)-元组和集合
  • linux-centos nginx 添加stream模块
  • Map和Set
  • FunPapers[2]:www‘24 「快手」连续特征单调性建模
  • 【RocketMQ 存储】消息重放服务-ReputMessageService
  • Java与DeepSeek的完美结合:开启高效智能编程新时代 [特殊字符]
  • JavaSE:数组
  • Pygame中自定义事件处理的方法2-2
  • Linux-文件IO
  • 蓝桥杯篇---8位 ADC/DAC转换芯片 PCF8591
  • AtCoder Beginner Contest 393 —— E - GCD of Subset 补题 + 题解 python
  • 2025-02-16 学习记录--C/C++-PTA 7-21 求特殊方程的正整数解
  • 【css】超过文本显示省略号
  • nodejs:express + js-mdict 网页查询英汉词典,能显示图片
  • 线程池有哪几种状态?
  • 全国建设建管中心网站/公司以优化为理由裁员合法吗
  • 网站建设优缺点/网络营销教程
  • 爱站网站长seo综合查询/网页设计
  • 网站腾讯qq对话框怎么做/福州百度首页优化
  • 南平建设局网站/企业营销推广策划
  • zblog搭建网站/郑州seo培训班