我有一个形状(RxC)1.5M x 128的数据帧.我执行以下操作:
所以我的(pesudo)代码:
<df = Read dataframe from file>
g = df.groupby(grp_cols)
g[nongrp_cols].apply(lambda d: d.apply(lambda s: s.value_counts()) / len(d.index))
代码对我来说工作正常,所以现在我正在分析它以提高性能.apply()函数运行大约需要20-25分钟.我认为问题是它是在每列(122次)上迭代8700次(每个子组),这可能不是最好的方式(给定我编码的方式).
任何人都可以推荐一些方法来加快速度吗?
我尝试使用python多处理池(8个进程)将子组划分为相同的集合进行处理,但最终得到一些酸洗错误...
谢谢.
我读了以下SO thead,现在我想了解它.这是我的例子:
import dask.dataframe as dd
import pandas as pd
from dask.multiprocessing import get
import random
df = pd.DataFrame({'col_1':random.sample(range(10000), 10000), 'col_2': random.sample(range(10000), 10000) })
def test_f(col_1, col_2):
return col_1*col_2
ddf = dd.from_pandas(df, npartitions=8)
ddf['result'] = ddf.map_partitions(test_f, columns=['col_1', 'col_2']).compute(get=get)
Run Code Online (Sandbox Code Playgroud)
它会在下面生成以下错误.我究竟做错了什么?另外我不清楚如何将其他参数传递给函数map_partitions?
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\conda\conda\envs\tensorflow\lib\site-packages\dask\dataframe\utils.py in raise_on_meta_error(funcname)
136 try:
--> 137 yield
138 except Exception as e:
~\AppData\Local\conda\conda\envs\tensorflow\lib\site-packages\dask\dataframe\core.py in _emulate(func, *args, **kwargs)
3130 with raise_on_meta_error(funcname(func)):
-> 3131 return func(*_extract_meta(args, True), **_extract_meta(kwargs, True))
3132
TypeError: test_f() …Run Code Online (Sandbox Code Playgroud) 目前,我正在尝试将 dask 与 gensim 配合使用来进行 NLP 文档计算,并且在将我的语料库转换为“ TaggedDocument ”时遇到问题。
因为我尝试了很多不同的方法来解决这个问题,所以我将列出我的尝试。
每次处理这个问题的尝试都会遇到略有不同的困境。
df.info()
<class 'dask.dataframe.core.DataFrame'>
Columns: 5 entries, claim_no to litigation
dtypes: object(2), int64(3)
Run Code Online (Sandbox Code Playgroud)
claim_no claim_txt I CL ICC lit
0 8697278-17 battery comprising interior battery active ele... 106 2 0
Run Code Online (Sandbox Code Playgroud)
>>tagged_document[0]
>>TaggedDocument(words=['battery', 'comprising', 'interior', 'battery', 'active', 'elements', 'battery', 'cell', 'casing', 'said', 'cell', 'casing', 'comprising', 'first', 'casing', 'element', 'first', 'contact', 'surface', 'second', 'casing', 'element', 'second', 'contact', 'surface', 'wherein', 'assembled', 'position', 'first', 'second', 'contact', 'surfaces', 'contact', 'first', 'second', …Run Code Online (Sandbox Code Playgroud)