小编eri*_*mjl的帖子

如何将DataFrame索引/系列列作为数组或列表?

您知道如何将DataFrame的索引或列作为NumPy数组或python列表获取吗?

python pandas

251
推荐指数
5
解决办法
51万
查看次数

在Pandas中附加到空数据框?

是否可以附加到不包含任何索引或列的空数据框?

我试图这样做,但最后继续得到一个空的数据帧.

例如

df = pd.DataFrame()
data = ['some kind of data here' --> I have checked the type already, and it is a dataframe]
df.append(data)
Run Code Online (Sandbox Code Playgroud)

结果如下:

Empty DataFrame
Columns: []
Index: []
Run Code Online (Sandbox Code Playgroud)

python pandas

188
推荐指数
5
解决办法
26万
查看次数

如何使用py.test禁用测试?

说我有一堆测试:

def test_func_one():
    ...

def test_func_two():
    ...

def test_func_three():
    ...
Run Code Online (Sandbox Code Playgroud)

是否有一个装饰器或类似的东西,我可以添加到函数,以防止py.test只运行该测试?结果可能看起来像......

@pytest.disable()
def test_func_one():
    ...

def test_func_two():
    ...

def test_func_three():
    ...
Run Code Online (Sandbox Code Playgroud)

我在py.test文档中搜索过类似的内容,但我想我可能会在这里遗漏一些东西.

python testing pytest

60
推荐指数
7
解决办法
3万
查看次数

Matplotlib:如何使两个直方图具有相同的bin宽度?

我花了一些时间搜索interwebs对于这个答案,我曾尝试寻找所有SO的答案也一样,但我觉得我没有正确的术语下来......请原谅我,如果这是一个重复一些已知的问题,我很乐意删除我的帖子并转而参考该帖子!

无论如何,我试图在Matplotlib中的同一个图上绘制两个直方图.我的两个数据源是500个元素长的列表.为了说明我面临的问题,请看下图:

不均匀的直方图

如您所见,直方图在默认参数下具有不均匀的箱尺寸,即使箱的数量相同.我想保证两个直方图的bin宽度是相同的.有什么方法可以做到这一点吗?

提前致谢!

python matplotlib

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

是否可以在Jupyter笔记本中运行pypy内核?

我一直想知道是否可以在Jupyter笔记本中运行PyPy.我最近尝试在我的本地机器上安装PyPy,它运行得非常好 - 在用纯Python编写的基于代理的模拟中,速度提高了100倍.但是,我想念Jupyter笔记本中的交互性.是否有可能使IPython内核使用PyPy而不是CPython?

python pypy jupyter

15
推荐指数
2
解决办法
5302
查看次数

如何在主机之间迁移 Docker 卷?

Docker 的文档指出卷可以“迁移”——我假设这意味着我应该能够将卷从一台主机移动到另一台主机。(非常乐意在这一点上得到纠正。)但是,同一文档页面没有提供有关如何执行此操作的信息。

深入研究后,我发现了一个较旧的问题(大约 2015 年左右),它指出这是不可能的,但考虑到已经过去了 2 年,我想我会再问一次。

如果它有帮助的话,我正在开发一个 Flask 应用程序,它使用 [TinyDB] + 本地磁盘作为其数据存储 - 我已经确定我不需要比这更奇特的东西;目前这是一个为了学习而完成的项目,所以我决定变得非常轻量级。该项目的结构如下:

/project_directory
|- /app
   |- __init__.py
   |- ...
|- run.py  # assumes `data/databases/ and data/files/` are present
|- Dockerfile
|- data/
   |- databases/
      |- db1.json
      |- db2.json
   |- files/
      |- file1.pdf
      |- file2.pdf
Run Code Online (Sandbox Code Playgroud)

我的和data/*中有该文件夹,这样它们就不会受到版本控制,并且在构建映像时被 Docker 忽略。.dockerignore.gitignore

在开发应用程序时,我还尝试使用尽可能接近真实世界的数据库条目和 PDF,因此我在应用程序中植入了非常小的真实数据子集,这些数据存储在安装的卷上直接进入data/Docker 容器实例化时。

我想要做的是将容器部署在远程主机上,但让远程主机植入启动数据(理想情况下,这将是我在本地使用的卷,以最大程度地方便);稍后,随着更多数据添加到远程主机上,我希望能够将其拉回,以便在开发过程中我可以使用最终用户输入的最新数据。

环顾四周,我想做的“hacky”方式就是简单地使用rsync,这可能会很好。但是,如果我缺少解决方案,我将非常感谢指导!

docker docker-volume

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

熊猫将'NA'转换为NaN

我刚刚在生物学研究中选择了Pandas来做一些数据分析工作.原来我正在分析的一种蛋白质被称为'NA'.

我有一个矩阵,在列标题上有成对的'HA,M1,M2,NA,NP ......',与"行标题"相同(对于可能读过这个的生物学家,我正在使用流感).

当我直接从CSV文件将数据导入Pandas时,它将"行标题"读作"HA,M1,M2 ...",然后NA读取为NaN.有没有办法阻止这个?列标题很好 - 'HA,M1,M2,NA,NP等......'

python bioinformatics pandas

12
推荐指数
2
解决办法
6067
查看次数

约束d3.js强制显示

我想用力布局做一些与众不同的事情(用于可视化图形).星座和所有星座都很有趣,但对于时间序列数据来说,它并没有那么有用.我希望能够通过某个轴约束布局,例如,根据节点在数据集中出现的时间布置节点,同时仍然保留可视化的"弹性".这可能使用d3吗?

timeline graph d3.js force-layout

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

代码优化 - Python中的函数调用数

我想知道如何能够转换此问题以减少np.sum()代码中函数调用的开销.

我有一个input矩阵,比如说shape=(1000, 36).每行代表图中的一个节点.我有一个我正在做的操作,它迭代每一行并对可变数量的其他行进行元素添加.这些"其他"行在字典中定义,该字典nodes_nbrs为每行记录必须汇总在一起的行列表.一个例子是这样的:

nodes_nbrs = {0: [0, 1], 
              1: [1, 0, 2],
              2: [2, 1],
              ...}
Run Code Online (Sandbox Code Playgroud)

在这里,节点0将被转换为节点0和的总和1.节点1将转换为节点之10,和2.等等其他节点.

我目前实施的当前(和天真)方式就是这样.我首先实例化我想要的最终形状的零数组,然后迭代nodes_nbrs字典中的每个键值对:

output = np.zeros(shape=input.shape)
for k, v in nodes_nbrs.items():
    output[k] = np.sum(input[v], axis=0)
Run Code Online (Sandbox Code Playgroud)

这个代码在小测试(shape=(1000, 36))中都很酷很好,但是在较大的测试(shape=(~1E(5-6), 36))中,完成需要大约2-3秒.我最终不得不做这个操作数千次,所以我试图看看是否有更优化的方法来做到这一点.

在进行线性分析之后,我注意到这里的关键杀手是np.sum反复调用该函数,这占用了总时间的大约50%.有没有办法可以消除这种开销?或者还有另一种方法可以优化它吗?


除此之外,这里列出了我已经完成的事情,并且(非常简要地)他们的结果:

  • cython版本:消除了for环路类型检查的开销,在30%的时间减少服用.使用该cython版本,np.sum占整个挂钟时间的80%,而不是50%.
  • 预先声明np.sum为变量npsum,然后npsum …

python optimization numpy matrix cython

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

从距离矩阵计算亲和度矩阵

我使用 clustal omega 得到了 500 个蛋白质序列的距离矩阵(它们彼此同源)。

我想使用亲和传播来聚类这些序列。

最初,因为我亲手观察到距离矩阵只有 0 到 1 之间的值,0 距离 = 100% 同一性,所以我推断我可以只(1 - distance)获取亲和力。

我运行了我的代码,集群看起来很合理,我认为一切都很好......直到我读到通常,亲和矩阵是通过应用“热核”从距离矩阵计算出来的。就在那时,我脑海中的所有地狱都崩溃了。

我的亲和矩阵的概念不正确吗?有没有一种简单的方法来计算亲和度矩阵?scikit-learn 提供以下公式:

similarity = np.exp(-beta * distance / distance.std())
Run Code Online (Sandbox Code Playgroud)

但什么是测试版?我知道 distance.std() 是距离的标准偏差。

我现在对所涉及的概念(而不是实际的编码实现)感到非常困惑和迷失,因此非常感谢任何帮助!

PS 我试过在 Biostars.org 上发帖,但我还没有在那里得到答案......

python bioinformatics affinity

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