小编Sul*_*yev的帖子

使用列表中的名称创建数据框

我有很多选项卡的 excel 文件。我想连接所有这些,一次一个标签。

我在做:

mypath = "mypath"
files = os.listdir(mypath)
files = [os.path.join(mypath,f) for f in files if f[-4:]=='xlsx']

sheets = pandas.ExcelFile(files[0]).sheet_names
Run Code Online (Sandbox Code Playgroud)

现在,假设我的选项卡是 alpha、beta、gamma 等,我想创建一个数据框列表 df_alpha、df_beta 等,它们是我目录中文件的所有 alpha 选项卡的联合。

通过做:

for sheet in sheets:
    df = pandas.DataFrame()
    for f in files:
        df = pandas.concat([df, pandas.read_excel(f, sheet_name=sheet)])
Run Code Online (Sandbox Code Playgroud)

我可以得到我想要的,但当然我只有一个数据框,它是每个文件中最后一个选项卡的联合。如何更改代码以便我有一个 dfs 列表,每个名称都命名为 df_alpha、df_beta 等?

python excel concatenation pandas dictionary-comprehension

3
推荐指数
1
解决办法
66
查看次数

将 Matplotlib 与 Dask 结合使用

假设我们有 pandas dataframepd和 dask dataframe dd。当我想用 matplotlib 绘制 pandas 时,我可以轻松做到:

fig, ax = plt.subplots()
ax.bar(pd["series1"], pd["series2"])
fig.savefig(path)
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试对 dask dataframe 执行相同操作时,我得到的Type Errors是:

TypeError: Cannot interpret 'string[python]' as a data type
Run Code Online (Sandbox Code Playgroud)

string[python]这只是一个示例,无论您的dd["series1"]数据类型是什么,都将在此处输入。

所以我的问题是:使用matplotlibwith 的正确方法是什么dask?将这两个库结合起来是否是一个好主意?

python matplotlib pandas dask dask-dataframe

3
推荐指数
2
解决办法
2102
查看次数

将版本添加到管道

是否有任何标准或推荐的方法将版本号添加到管道(在我的例子中用 Snakemake 编写)?

例如,我有这个管道,刚才我添加了一个CHANGELOG.md文件,其中当前版本位于顶部。是否有更好的方法来识别用户正在部署的版本?

python pipeline version python-3.x snakemake

3
推荐指数
1
解决办法
53
查看次数

为什么 Snakemake 更喜欢使用 script 指令调用脚本而不是从 shell 调用?

标准化工作流程中的 Snakemake 规则使用指令运行 Python 脚本script,例如此模板规则:

rule XXXXX:
    input:
        ...,
    output:
        ....,
    params:
        ...,
    conda:
        "../envs/python.yaml"
    script:
        "../scripts/XXXX.py"
Run Code Online (Sandbox Code Playgroud)

然后在脚本中,可以使用snakemake对象。然而,脚本与该规则紧密耦合,这似乎是一个很大的缺点。

为什么这种方法比使用调用脚本的 shell 的方法更受青睐,例如在本规则中?

rule XXXXX:
    input:
        ...,
    output:
        ....,
    params:
        absolute_script_path = ..., # get
        argument1 = ..., 
    conda:
        "../envs/python.yaml"
    shell:
        "python {params.absolute_script_path} {input} {params.argument1} > {output}"
Run Code Online (Sandbox Code Playgroud)

在这种方法中,python 脚本与 Snakemake 规则解耦。而且它看起来更有凝聚力,因为调用的参数在规则中很清楚,而不是隐藏在脚本中。我刚刚开始编写 Snakemake 工作流程,所以我只是一个初学者。我不明白为什么第一种方法比第二种方法更受青睐(或在标准化 Snakemake 工作流程中使用)?我错过了什么吗?第二种方法有问题吗?非常感谢您的解答!

python bioinformatics python-3.x snakemake

2
推荐指数
1
解决办法
413
查看次数

joblib:加载所有缓存值(或搜索所有值)

使用joblib.Memory我可以缓存某些函数的结果,但我想知道是否有一种有效的方法来找出有缓存值的参数列表。

例如,假设该函数slow_func是针对 的某些值进行计算和缓存的x,我可以找出我缓存了哪些值吗?

from joblib import Memory
mem = Memory(location='cache')

@mem.cache
def slow_func(x):
    return x
Run Code Online (Sandbox Code Playgroud)

python caching joblib

1
推荐指数
1
解决办法
394
查看次数