主页 > 其他  > 

pandas(13CaveatsGotchas和SQL比较)

pandas(13CaveatsGotchas和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 = ' 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比较)