大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的新手。