Pandas的SQL操作方法
Pandas SQL操作的具体实例
由于许多潜在的Pandas用户都对SQL有所了解,因此本页面旨在提供一些示例说明如何使用Pandas执行各种SQL操作。
示例
import pandas as pd url = 'https://raw.github.com/pandasdev/ pandas/master/pandas/tests/data/tips.csv' tips=pd.read_csv(url) print tips.head()
运行结果如下:
total_bill tip sex smoker day time size0 16.99 1.01 Female No Sun Dinner 21 10.34 1.66 Male No Sun Dinner 32 21.01 3.50 Male No Sun Dinner 33 23.68 3.31 Male No Sun Dinner 24 24.59 3.61 Female No Sun Dinner 4
查询
在SQL中,选择是使用您选择的列的逗号分隔列表(或使用*来选择所有列)来完成的:
SELECT total_bill, tip, smoker, time from tips LIMIT 5;
使用Pandas,通过将列名称列表传递到DataFrame来完成列选择:
tips[['total_bill', 'tip', 'smoker', 'time']].head(5)
让我们看一个完整的实例:
示例
import pandas as pd url = 'https://raw.github.com/pandasdev/ pandas/master/pandas/tests/data/tips.csv' tips=pd.read_csv(url) print tips[['total_bill', 'tip', 'smoker', 'time']].head(5)
运行结果如下:
total_bill tip smoker time0 16.99 1.01 No Dinner1 10.34 1.66 No Dinner2 21.01 3.50 No Dinner3 23.68 3.31 No Dinner4 24.59 3.61 No Dinner
调用不带列名列表的DataFrame将显示所有列(类似于SQL的*)。
WHERE条件查询
通过WHERE子句在SQL中进行过滤。
SELECT * from tips WHERE time = 'Dinner' LIMIT 5;
DataFrame可以通过多种方式进行过滤。最直观的方法是使用布尔索引。
tips[tips['time'] == 'Dinner'].head(5)
我们来看一个完整的实例
示例
import pandas as pd url = 'https://raw.github.com/pandasdev/ pandas/master/pandas/tests/data/tips.csv' tips=pd.read_csv(url) print tips[tips['time'] == 'Dinner'].head(5)
运行结果如下:
total_bill tip sex smoker day time size0 16.99 1.01 Female No Sun Dinner 21 10.34 1.66 Male No Sun Dinner 32 21.01 3.50 Male No Sun Dinner 33 23.68 3.31 Male No Sun Dinner 24 24.59 3.61 Female No Sun Dinner 4
上面的语句将一系列True / False对象传递给DataFrame,并返回所有带有True的行。
GroupBy分组
此操作获取整个数据集中每个组中的记录数。例如查询性别分组和数量:
SELECT sex, count(*) from tips GROUP BY sex;
在Pandas是如下操作:
tips.groupby('sex').size()
我们来看一个完整的实例
示例
import pandas as pd url = 'https://raw.github.com/pandasdev/ pandas/master/pandas/tests/data/tips.csv' tips=pd.read_csv(url) print tips.groupby('sex').size()
运行结果如下:
sex Female 87 Male 157 dtype: int64
查询N行数量
SQL 使用LIMIT返回N行:
SELECT * from tips LIMIT 5 ;
在Pandas中操作如下:
tips.head(5)
我们来看一个完整的实例
示例
import pandas as pd url = 'https://raw.github.com/pandas-dev/pandas/master/pandas/tests/data/tips.csv' tips=pd.read_csv(url) tips = tips[['smoker', 'day', 'time']].head(5) print tips
运行结果如下:
smoker day time0 No Sun Dinner1 No Sun Dinner2 No Sun Dinner3 No Sun Dinner4 No Sun Dinner