大pandas数量(不同)相当

我使用pandas作为数据库替代品,因为我有多个数据库(oracle,mssql等),我无法将一系列命令作为一个SQL等效。

我有一个表加载在一个DataFrame与一些列:

YEARMONTH, CLIENTCODE, SIZE, .... etc etc 

在SQL中,要计算每年不同客户端的数量将是:

 SELECT count(distinct CLIENTCODE) FROM table GROUP BY YEARMONTH; 

结果会是

 201301 5000 201302 13245 

我怎样才能做到这一点在pandas?

我相信这是你想要的:

 table.groupby('YEARMONTH').CLIENTCODE.nunique() 

例:

 In [2]: table Out[2]: CLIENTCODE YEARMONTH 0 1 201301 1 1 201301 2 2 201301 3 1 201302 4 2 201302 5 2 201302 6 3 201302 In [3]: table.groupby('YEARMONTH').CLIENTCODE.nunique() Out[3]: YEARMONTH 201301 2 201302 3 

有趣的是, len(unique())通常比nunique()快几倍(3x-15x nunique()

这里有另一种方法,很简单,可以说你的数据YEARMONTH名称是YEARMONTH ,列名是YEARMONTH

 daat.YEARMONTH.value_counts() 

通过添加上面的丰富答案,可以使用名为pandasql的 python模块在Pandas数据框上编写SQL查询。 根据Yhat:

pandasql允许你使用SQL语法来查询大pandas的dataframe。[…] pandasql试图提供一个更熟悉的操作和清理数据的方式来处理Python或pandas的新手。