У меня есть датафрейм:
keyword val
0 nt 0.93
1 atm 0.94
2 bank 1.00
3 long 1.02
4 number 1.11
5 get 2.20
6 money 3.50
7 account 3.80
8 deposit 3.90
9 card 5.00
10 credit 0.8
11 debit 1.23
Я хочу узнать количество ключевых слов на единицу диапазона значений, т.е. от 0,9-1 => [nt, atm] => 2 от 1-1,1 => [bank, long, number] => 3 и т. Д.
2 ответа
Попробуйте использовать groupby
с некоторыми изменениями значения столбца, затем используйте count
в столбце 'keyword'
:
>>> df.groupby(df['val'].astype(int))['keyword'].count()
val
0 3
1 4
2 1
3 3
4 1
Name: keyword, dtype: int64
Изменить:
>>> df.groupby(df['val'].apply("{:.1f}".format))['keyword'].count()
val
0.8 1
0.9 2
1.0 2
1.1 1
1.2 1
2.2 1
3.5 1
3.8 1
3.9 1
5.0 1
Name: keyword, dtype: int64
Если округление ума (1.9
не будет в той же группе, что и 1.1
):
>>> df.groupby(df['val'].round(1))['keyword'].count()
val
0.8 1
0.9 2
1.0 2
1.1 1
1.2 1
2.2 1
3.5 1
3.8 1
3.9 1
5.0 1
Name: keyword, dtype: int64
Используйте pd.cut()
здесь с groupby()
:
bins=[0,1,2,3,5]
df.groupby(pd.cut(df.val,bins)).keyword.apply(list)
val
(0, 1] [nt, atm, bank]
(1, 2] [long, number]
(2, 3] [get]
(3, 5] [money, account, deposit, card]
Для подсчета использовать:
df.groupby(pd.cut(df.val,bins)).keyword.size()
val
(0, 1] 3
(1, 2] 2
(2, 3] 1
(3, 5] 4
Вы можете настроить свои контейнеры, как:
bins=[0,0.99,1,1.99,2,2.99,3,3.99,4,4.99,5]
df.groupby(pd.cut(df.val,bins)).keyword.size()
val
(0.0, 0.99] 2
(0.99, 1.0] 1
(1.0, 1.99] 2
(1.99, 2.0] 0
(2.0, 2.99] 1
(2.99, 3.0] 0
(3.0, 3.99] 3
(3.99, 4.0] 0
(4.0, 4.99] 0
(4.99, 5.0] 1
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.