阅读 431

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


文章分类
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐