Добавление и повторение новых строк в пустом фрейме данных с пандами для целей кластеризации - PullRequest
0 голосов
/ 29 апреля 2018

В настоящее время я работаю над большим количеством данных по кластеризации каждого из классов RFM_class. Класс rfm имеет 125 различных значений в диапазоне от 111 до 555, общее количество строк моего фрейма данных, в настоящее время выбранных в 10000 строки для пробных целей сценария.

Логика, лежащая в основе того, что я пытаюсь сделать, состоит в том, чтобы взять каждый класс RFM (125 различных значений) и выполнить метод clustering для каждого подмножества класса RFM_, зациклив их для каждого класса RFM_, чтобы получить cluster_class столбец с пустым фреймом данных, а затем снова добавьте значение в пустой фрейм данных. И пустой массив данных будет объединен с моей главной таблицей. Это снимок основной таблицы, я сжал только до 4 столбцов, источник - 11 столбцов.

df_test
RFM_class  customer_id   num_orders recent_day  amount_order   
555            1               1489       0        18539000  
555            2                 72       3         1069000
145            3                 13     591         1350000
555            4                208       0         2119000
445            5                 40       9          698000

То, что я делаю, недостаточно далеко до кластеризации, поэтому я действительно застрял в цикле каждого из RFM_class Это то, что я пытаюсь делать последние пару дней, стараясь только взять каждый RFM_class

rfm_list = list(set(df_test['rfm']))
core_col = ['num_orders','recent_day','amount_order']
cl_class = []

for row in rfm_list:    
    a=pd.DataFrame(df_test[core_col][df_test.rfm==row],columns=core_col)
    cl_class.append(a)

cl_class

но результат не такой, как ожидалось, потому что выполнение append, похоже, не добавляет новые строки в мой пустой фрейм данных. Есть ли функция, чтобы сделать это на пандах? в настоящее время используется Python 3.0

1 Ответ

0 голосов
/ 29 апреля 2018

Вы можете использовать groupby для кластеризации значений. Например: рассмотрите этот пример CSV-файла, где вы хотите сгруппировать по столбцам фрукты:

Fruit,Date,Name,Number
Apples,10/6/2016,Bob,7
Apples,10/6/2016,Bob,8
Apples,10/6/2016,Mike,9
Apples,10/7/2016,Steve,10
Apples,10/7/2016,Bob,1
Oranges,10/7/2016,Bob,2
Oranges,10/6/2016,Tom,15
Oranges,10/6/2016,Mike,57
Oranges,10/6/2016,Bob,65
Oranges,10/7/2016,Tony,1
Grapes,10/7/2016,Bob,1
Grapes,10/7/2016,Tom,87
Grapes,10/7/2016,Bob,22
Grapes,10/7/2016,Bob,12
Grapes,10/7/2016,Tony,15

Пример кода для итерации по кластерам:

import pandas as pd;
df = pd.read_csv("filename.csv");
grouped = df.groupby("Fruit");
for name, group in grouped:
    print(name);

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...