#python #python-3.x #pandas #dataframe
#python #python-3.x #pandas #фрейм данных
Вопрос:
У меня есть фрейм данных, и я пытаюсь выполнить следующий запрос:
сколько приложений в каждой группе: суперлегкий (<2 МБ) легкий (2 МБ; 30 МБ) объемный (> 30 МБ) и «зависит от устройства»
Мой фрейм данных выглядит примерно так:
app category rating reviews size installs type price content-rating genres last-updated current-ver android-ver
🔥 Football Wallpapers 4K 😍 ENTERTAINMENT 4.7 11661.0 4.0 1000000.0 Free 0.0 Everyone Entertainment 2018-07-14 1.1.3.2 4.0.3 and up
Dr Driving Racer GAME 4.3 183.0 68 10000.0 Free 0.0 Everyone Racing 2018-06-14 2.1 4.1 and up
Dr. B.R.Ambedkar SOCIAL 4.8 1902.0 5.2 100000.0 Free 0.0 Everyone Social 2014-06-05 1.3 2.1 and up
Dr. Battery - Fast Charger - Super Cleaner 2018 TOOLS 4.5 101738.0 10 1000000.0 Free 0.0 Everyone Tools 2018-07-26 2.2.82 4.0 and up
Dr. Booster - Boost Game Speed TOOLS 4.4 138872.0 22 10000000.0 Free 0.0 Everyone Tools 2018-05-15 2.0.1077 4.1 and up
...
Next Launcher 3D Theme Hit-G PERSONALIZATION 4.2 59.0 8.1 1000.0 Paid 1.7 Everyone Personalization 2015-08-16 1.05 2.2 and up
Next Launcher 3D Theme Stun-BW PERSONALIZATION 4.4 2839.0 5.1 100000.0 Free 0.0 Everyone Personalization 2014-01-11 1.00 2.2 and up
Nextdoor - Local neighborhood news amp; classifieds SOCIAL 4.3 51502.0 20 5000000.0 Free 0.0 Teen Social 2018-07-25 2.69 5.0 and up
Niche: College, K-12, and Neighborhood Search LIFESTYLE 4.0 42.0 26 5000.0 Free 0.0 Everyone Lifestyle 2018-07-06 1.0.1 4.4 and up
Download 4 Instagram Twitter SOCIAL 4.5 40467.0 Varies with device 1000000.0 Free 0.0 Everyone Social 2018-08-02 5.03 4.1 and up
Length: 7935, dtype: int64
Решением должен быть pandas.Series
фрейм данных or, который выглядит следующим образом
ranges count
(0, 2] 43
(2, 30] ...
(30, 10000]
varies_on_device 12
Проблема в том, что я не знаю, как использовать pandas.cut
с объектами, обычно массив bins — это числа, которые определяют диапазоны.
Мой подход заключался в:
- выньте элемент из группы «зависит от устройства»
- удалите их из основного фрейма данных
- позже преобразуйте все элементы размера в float
- создайте группу, используя диапазоны cut и bins
- наконец, объединить два фрейма данных
но я думаю, что это не самый оптимизированный и быстрый способ … надеюсь, это понятно
Комментарии:
1. Я думаю, что ваш подход хорош. В противном случае вы можете использовать этот трюк: — заменить Зависит от устройства на -1 -> преобразовать в число с плавающей запятой -> вырезать gruopby -> заменить Зависит от устройства обратно
2. @rpanai ваше решение кажется приятным, попробую, спасибо!