У меня есть следующие панды DataFrame.
import pandas as pd
df = pd.read_csv('filename.csv')
print(df)
A B C D
0 2 0 11 0.053095
1 2 0 11 0.059815
2 0 35 11 0.055268
3 0 35 11 0.054573
4 0 1 11 0.054081
5 0 2 11 0.054426
6 0 1 11 0.054426
7 0 1 11 0.054426
8 42 7 3 0.048208
9 42 7 3 0.050765
10 42 7 3 0.05325
....
Проблема в том, что данные естественно «сгруппированы» в группы, но эти данные не приводятся. Из приведенного выше строки 0-1 представляют собой одну группу, строки 2-3 - группу, строки 4-7 - группу, а 8-10 - группу.
Мне нужно вменять эту информацию. Можно использовать машинное обучение; однако можно ли это сделать только с помощью панд?
Могут ли пользователи группироваться по значениям столбцов для создания этих групп? Проблема в том, что значения не точны . Для третьей группы столбец B
имеет группы 1, 2, 1, 1.
1 ответ
Решение на чистом pandas будет включать в себя биннинг, предполагая, что ваши значения близки друг к другу, а размер вашего бункера достаточно велик для вариации кластера, но меньше, чем расстояние между значениями кластера. Этот ответ зависит от ваших данных.
Подход биннинга использует функцию cut
в пандах. Вы предоставляете серию (или массив) и количество ячеек, которые хотите использовать для функции. Функция равномерно делит диапазон вашей серии на заданное количество ячеек и определяет, куда попадает каждое значение во входных данных. Результатом для приведенного ниже набора столбцов будет то, в какую ячейку попало значение, и по которому вы можете сгруппировать, следуя исходному ходу мыслей.
На практике для бункеров размером ~ 5 это будет выглядеть следующим образом:
for col in df.columns:
binned_name = col + '_binned'
num_bins = np.ceil(df[col].max()/5)
df[binned_name] = pd.cut(df[col],num_bins,labels=False)
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.