2017-02-01 4 views
1

Я написал функцию, которая принимает серию pandas (поплавков или целых чисел), сортирует ее, затем вычисляет для каждого члена x долю значений в серии, большей, чем x. Я использую tqdm.Как я могу ускорить эту операцию применения панд?

import pandas as pd 
from tqdm import tqdm, tqdm_pandas 
tqdm.pandas() 

def my_func(data): 
    data.sort_values(inplace=True) 
    n = len(data) 
    # return data.apply(lambda x: len(data[data > x])/n) # if not using tdqm 
    return data.progress_apply(lambda x: len(data[data > x])/n) 

Это займет несколько минут, чтобы работать на серии с ~ 300000 строк. Я могу что-то сделать, чтобы ускорить его?

ответ

0

Использование DataFrame.rank:

data = pd.DataFrame(np.arange(5)) 
data.rank(pct=True) 

возвращает

0 0.2 
1 0.4 
2 0.6 
3 0.8 
4 1.0 
Смежные вопросы