出于學習目的,我得到了一張銀行對賬單作為 csv 檔案:
data = pd.read_csv('./datasets/code/analyse/operations.csv')
data.columns = ['identifiant_transaction', 'date_operation', 'date_valeur', 'libelle', 'debit', 'credit', 'solde']
print(data.libelle.head())
女巫顯示如下:
0 FORFAIT COMPTE SUPERBANK XX XX XX XX
1 CARTE XX XX CHEZ LUC XX
2 PRELEVEMENT XX TELEPHONE XX XX
3 CARTE XX XX XX XX XX XX
4 CARTE XX XX XX XX
Name: libelle, dtype: object
我的目標是提取“誹謗”中最常用的詞:
XX 142800
CARTE 24700
VIREMENT 2900
ROBINSON 2000
ANCIENS 2000
我首先嘗試:
def most_common_words(labels):
words = []
for lab in labels:
words = lab.split(" ")
return Counter(words).most_common()
然后 :
def most_common_words_iter(labels):
return Counter(chain(*(words.split(" ") for words in labels))).most_common()
最后:
def most_common_words_pandas(labels):
return labels.str.split().explode().value_counts(sort=True)
我的假設是第一個解決方案會因為中間串列而變慢,而第二個或第三個解決方案可能會導致一些免費的集成優化(矢量化、更好的流管理、更少的記憶體分配......)。但不是 :-/
python vs iterable vs pandas
它應該是這樣嗎?或者我應該做不同的事情?
uj5u.com熱心網友回復:
通過修改“python”版本,我得到了一些改進(30-40%):
def most_common_words(labels):
words = ' '.join(labels.values)
words = words.split(' ')
return Counter(words).most_common()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/358409.html
