почему нет разницы в скорости между функцией отображения Python и l oop? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть pandas DataFrame, data, с колонкой, short_description, содержащей тексты. Я делаю некоторую предварительную обработку в каждом ряду. Я попытался по l oop до go через каждую строку и выполнить все этапы предварительной обработки один за другим, а затем сохранить результаты в списке.

Это медленно для меня, так как у меня более 800000 строк , Я попробовал функцию python map(), но по-прежнему нет увеличения скорости. Я пробовал с 20000 строками и вижу почти одинаковую разницу в скорости между картой и для l oop.

Ниже приведены мои способы выполнения предварительной обработки: data

# FOR loop
final_output = []
for i in range(0, len(data['short_description'].values)):
    document = data['short_description'].values[i]
    document = document.encode('utf-8')
    document = re.sub(r'\.com', '', document)
    document = document.translate(string.maketrans(string.punctuation,' '*len(string.punctuation)))
    document = document.replace('“', ' ')
    document = document.replace('”', ' ')
    document = document.replace('’', ' ')
    document = document.split()
    document = [lemmer.lemmatize(token) for token in document]
    document = [snowstemmer.stem(wert) for wert in document]
    document_ngrams = list(everygrams(document, 2,4))
    document_ngrams = [' '.join(document_ngrams[gram_index]) for gram_index in range(0, len(document_ngrams))]
    final_output.append(document_ngrams)
def preprocess_steps(df_column):
    document = df_column.encode('utf-8')
    document = re.sub(r'\.com', '', document)
    document = document.translate(string.maketrans(string.punctuation,' '*len(string.punctuation)))
    document = document.replace('“', ' ')
    document = document.replace('”', ' ')
    document = document.replace('’', ' ')
    document = document.split() #tokenization
    document = list(filter(lambda token: lemmer.lemmatize(token), document))
    document = list(filter(lambda wert: snowstemmer.stem(wert), document))
    document_ngrams = list(everygrams(document, 2,4))
    document_ngrams = list(map(lambda x : ' '.join(x), document_ngrams))
    return document_ngrams

final_output=list(map(preprocess_steps, data['short_description']))

Почему нет функции повышения скорости с функцией map()? Какие-либо предложения? Почему я думаю, что должна быть разница в скорости Поскольку я читаю это . Спасибо!

...