У меня есть 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()
? Какие-либо предложения? Почему я думаю, что должна быть разница в скорости Поскольку я читаю это . Спасибо!