Как читать, группировать и объединять большие плоские файлы в pandas используя чанк - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть большой файл, который я пытаюсь прочитать в pandas. Я могу группировать и объединять данные, но нужно читать их порциями из-за ограничений памяти. Я хотел бы один окончательный кадр данных сгруппированных данных, показанных ниже. Раньше я никогда не бегал, так что не уверен, что делаю неправильно.

Вот код, который я использую:

import pandas as pd
mc = pd.read_csv('C:\\final2019new_paired.csv', chunksize=100000)

chunk_list = []

for chunk in mc:

    group = chunk.groupby(['anti_theft_code', 'atfault',  'BIlmt','CLded', 'CMded',  'cnty', 'componly'
                           , 'CREDIT_MODEL_CODE', 'DRIVER_AGE', 'DS_AB', 'DS_AD', 'DS_AK', 'DS_AT', 'DS_CH', 'DS_DD'
                           , 'DS_DE', 'DS_DF', 'DS_FP', 'DS_FQ', 'ds_gd', 'DS_IP', 'DS_KS', 'DS_LB', 'DS_LY', 'DS_MC'
                           , 'DS_ME', 'DS_ML', 'DS_MM', 'DS_MO', 'DS_MP', 'DS_MR', 'DS_MT', 'DS_MV', 'DS_PD', 'DS_PF'
                           , 'DS_PN', 'DS_PY', 'DS_RP', 'DS_SB', 'DS_SF', 'DS_SP', 'DS_ST', 'DS_TP', 'DS_TR', 'effyear'
                           , 'FIN_RESP_CD', 'majorvio', 'MARITAL_STATUS', 'minorvio', 'mpcnt',  'MPded', 'MPlmt', 'MVEH_CC'
                           , 'mveh_pkg_typ_cd', 'payplan', 'PDlmt', 'prdtype', 'product', 'RATING_CLASS_CODE', 'score'
                           , 'SD_AB', 'SD_SB', 'SD_TP', 'SD_TR', 'ST_AD', 'ST_AI', 'ST_CI', 'ST_DD', 'ST_DF', 'ST_MF'
                           , 'ST_MI', 'ST_MS', 'ST_RC', 'ST_RI', 'state', 'stored_locked_ind', 'term', 'terr'
                           , 'TOTL_YRS_LCNS_CNT', 'unit_drv_exp', 'units', 'unitval', 'unitzip', 'v_age', 'yrs_owned']
                 ).agg({'bi_cnt': 'sum', 'bi_eu':'sum', 'bi_earned': 'sum', 'bi_incrd': 'sum', 'bi_lae': 'sum'
                        , 'BI_prm': 'sum'
                        , 'cl_cnt': 'sum', 'cl_incrd': 'sum','coll_earned': 'sum', 'coll_eu':'sum', 'coll_if':'sum'
                        , 'cl_lae':'sum','cm_cnt':'sum', 'cm_incrd':'sum', 'cm_lae':'sum', 'CM_prm':'sum', 'cmt_cnt':'sum'
                        , 'cmt_incrd':'sum', 'cmt_lae':'sum', 'comp_earned':'sum', 'comp_if':'sum', 'mp_earned':'sum'
                        , 'mp_eu':'sum', 'mp_cnt':'sum','mp_incrd':'sum', 'mp_lae':'sum', 'MP_prm':'sum', 'pd_cnt':'sum'
                        , 'pd_earned':'sum', 'pd_eu':'sum', 'pd_if':'sum', 'pd_lae':'sum', 'PD_prm':'sum', 'um_cnt':'sum'
                        , 'um_earned':'sum', 'um_eu':'sum', 'um_if':'sum', 'um_incrd':'sum', 'um_lae':'sum'
                        , 'totalep':'sum'}).reset_index()

    chunk_list.append(group)


mc_raw = pd.concat(chunk_list)

Я просто получаю пустой список.

Может кто-нибудь увидеть, где я делаю ошибку?

...