Я использую панд в качестве заменителя БД, так как у меня есть несколько баз данных (oracle, mssql и т. Д.), И я не могу сделать последовательность команд в эквиваленте SQL.
У меня есть таблица, загруженная в DataFrame с несколькими столбцами:
YEARMONTH, CLIENTCODE, SIZE, .... etc etc
В SQL для подсчета количества разных клиентов в год было бы:
SELECT count(distinct CLIENTCODE) FROM table GROUP BY YEARMONTH;
И результат будет
201301 5000
201302 13245
Как я могу сделать это в пандах?
value_counts
может быть ответ, который вы ищете: pandas.pydata.org/pandas-docs/stable/generated/…Ответы:
Я считаю, что это то, что вы хотите:
Пример:
источник
nunique
? Попробуйте, как я мог, я не могу найти способ, так как результатом этого ответа является, аSeries
не аDataFrame
.Вот еще один метод, очень простой, скажем, имя вашего фрейма данных и имя
daat
столбцаYEARMONTH
источник
DISTINCT
требование из вопроса! Кроме того, он не включает в себя количествоNaN
!Интересно, что очень часто
len(unique())
это в несколько раз (3x-15x) быстрее, чемnunique()
.источник
.CLIENTCODE.apply(lambda x: len(x.unique()))
, От здесьapply
звонок с лямбдой. Так , например,df.groupby('YEARMONTH')['CLIENTCODE'].apply(lambda x: x.unique().shape[0])
.len(df['column'].unique())
лямбда-функцииTypeError: object of type 'method' has no len()
отChen's
комментариев,3novak's
работал на меня.Используя
crosstab
, это вернет больше информации, чемgroupby
nunique
После небольшого изменения выведите результат
источник
YEARMONTH
иcount
. Также я могу установить количество в порядке убывания?Я также использую,
nunique
но это будет очень полезно, если вам нужно использовать агрегатную функцию, как'min', 'max', 'count' or 'mean'
и т. Д.источник
Различный столбец наряду с агрегациями на других столбцах
Чтобы получить различное количество значений для любого столбца (
CLIENTCODE
в вашем случае), мы можем использоватьnunique
. Мы можем передать входные данные в виде словаря вagg
функции вместе с агрегатами в других столбцах:источник
С новой версией панд легко получить в качестве датафрейма
источник
Здесь есть подход, позволяющий рассчитывать несколько столбцов. Давайте иметь некоторые данные:
Теперь перечислите интересующие вас столбцы и используйте groupby в слегка измененном синтаксисе:
Мы получаем:
источник