2016-03-17 3 views
-1

У меня 5 000 000 строк в моей кадре данных. В моем коде я использую iterrows(), который занимает слишком много времени. Чтобы получить требуемый результат, я должен выполнить итерацию по всем строкам. Поэтому я хотел знать, могу ли я распараллелить код в пандах.Параллельная обработка в pandas python

+1

Vectorize перед тем parrallelize !!! Вы можете векторизовать в panda, избегая iterrows(). Если вы используете iterrows вообще, вы, вероятно, не потратили достаточно времени на изучение основ панд. Сделайте это первым. После этого задайте конкретный вопрос, показывающий код вместе с некоторыми примерами данных. – JohnE

ответ

3

Вот веб-страницу, я обнаружил, что может помочь: http://gouthamanbalaraman.com/blog/distributed-processing-pandas.html

А вот код для многопроцессорной найдено в этой странице:

import pandas as pd 
import multiprocessing as mp 

LARGE_FILE = "D:\\my_large_file.txt" 
CHUNKSIZE = 100000 # processing 100,000 rows at a time 

def process_frame(df): 
    # process data frame 
    return len(df) 

if __name__ == '__main__': 
    reader = pd.read_table(LARGE_FILE, chunksize=CHUNKSIZE) 
    pool = mp.Pool(4) # use 4 processes 

    funclist = [] 
    for df in reader: 
     # process each data frame 
     f = pool.apply_async(process_frame,[df]) 
     funclist.append(f) 

    result = 0 
    for f in funclist: 
     result += f.get(timeout=10) # timeout in 10 seconds 

    print "There are %d rows of data"%(result) 
Смежные вопросы