Python 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 size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
SELECT
在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 time
0 16.99 1.01 No Dinner
1 10.34 1.66 No Dinner
2 21.01 3.50 No Dinner
3 23.68 3.31 No Dinner
4 24.59 3.61 No Dinner
不带列名列表调用DataFrame将显示所有列(类似于SQL的*)。
WHERE
在SQL中通过WHERE子句进行过滤。
SELECT * FROM tips WHERE time = 'Dinner' LIMIT 5;
DataFrames可以通过多种方式进行过滤;其中最直观的方法是使用布尔索引。
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 size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 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 ;
熊猫的等效方法如下:
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 time
0 No Sun Dinner
1 No Sun Dinner
2 No Sun Dinner
3 No Sun Dinner
4 No Sun Dinner
这些是我们在Pandas库的前几章中学到并进行比较的基本操作。