python 初学者表现:for 循环 Vs 迭代器 Vs Pandas

python beginner performance : for loop Vs iterator Vs Pandas

出于学习目的,我得到了银行对账单 作为 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

我的目标是提取“libelle”中最常用的词:

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

这是应该的吗?还是我应该换一种方式?

我通过修改“python”版本获得了一些改进 (30-40%):

def most_common_words(labels):
    words = ' '.join(labels.values)
    words = words.split(' ')
    return Counter(words).most_common()