pandas(13CaveatsGotchas和SQL比较)
- 其他
- 2025-09-09 17:48:02

前面内容: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和iloc1. 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 = ' raw.githubusercontent /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))运行结果:
pandas(13CaveatsGotchas和SQL比较)由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“pandas(13CaveatsGotchas和SQL比较)”
上一篇
每日复盘20250216