@Mamol27

Как в pandas с помощью groupby посчитать количество уникальных элементов?

Здравствуйте, я пытаюсь в машинное обучение.
У меня есть датафрейм
df_c.head()
listing_id 	date 	available 	price
0 	241032 	2016-01-04 	t 	$85.00
1 	241032 	2016-01-05 	t 	$85.00
2 	241032 	2016-01-06 	f 	NaN
3 	241032 	2016-01-07 	f 	NaN
4 	241032 	2016-01-08 	f 	NaN

То есть на каждый день есть состояние каждого listing id.
Я пытаюсь получить количество уникальных id в каждом дне (как сгруппировать по отрезкам времени еще не понял), чтобы отследить появление новых, и построить по этому график.
При группировке по дате я полчил Series? хотя, вроде получилось два столбца.

Я сделал приведение типов
df_c.dtypes
listing_id             int64
date          datetime64[ns]
available               bool
price                float64
dtype: object


[In] g1 = df_c.groupby(['date']).listing_id.unique()


[In] type(g1)
[Out] pandas.core.series.Series

[In] g1.shape
[Out] (365,)

[In] g1.index
[Out] DatetimeIndex(['2016-01-04', '2016-01-05', '2016-01-06', '2016-01-07',
               '2016-01-08', '2016-01-09', '2016-01-10', '2016-01-11',
               '2016-01-12', '2016-01-13',
               ...
               '2016-12-24', '2016-12-25', '2016-12-26', '2016-12-27',
               '2016-12-28', '2016-12-29', '2016-12-30', '2016-12-31',
               '2017-01-01', '2017-01-02'],
              dtype='datetime64[ns]', name='date', length=365, freq=None))


[In] g1
[Out ]date
2016-01-04    [241032, 953595, 3308979, 7421966, 278830, 595...
2016-01-05    [241032, 953595, 3308979, 7421966, 278830, 595...
2016-01-06    [241032, 953595, 3308979, 7421966, 278830, 595...
2016-01-07    [241032, 953595, 3308979, 7421966, 278830, 595...
2016-01-08    [241032, 953595, 3308979, 7421966, 278830, 595...
                                    ...                        
2016-12-29    [241032, 953595, 3308979, 7421966, 278830, 595...
2016-12-30    [241032, 953595, 3308979, 7421966, 278830, 595...
2016-12-31    [241032, 953595, 3308979, 7421966, 278830, 595...
2017-01-01    [241032, 953595, 3308979, 7421966, 278830, 595...
2017-01-02    [241032, 953595, 3308979, 7421966, 278830, 595...
Name: listing_id, Length: 365, dtype: object


В общем вместо массивов я хочу получить размер этих массивов. Документация читаю, но пока не совсем понятно, в этом Series получается multiarraay?
  • Вопрос задан
  • 1000 просмотров
Пригласить эксперта
Ответы на вопрос 2
@dmshar
Читал-читал - ничего не понял. Какое-то "приведение типов" (зачем??), распечатка индексов, загадочные два столбца в серии, какие-то мультимассивы, и финальный аккорд "В общем вместо массивов я хочу получить размер этих массивов."
Если посчитать, сколько элементов попало в каждую группу - то вот так

df_c.groupby('date').count().listing_id
так
df_c.groupby('date').['listing_id'].count()
или так
df_c.groupby('date').listing_id.count()

Возможно, я не угадал, что вы имели ввиду - тогда попытайтесь более внятно сформулировать задачу.
Ответ написан
Комментировать
@o5a
Я пытаюсь получить количество уникальных id в каждом дне

df_c.groupby('date')['listing_id'].nunique()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект