小编K.-*_*Aye的帖子

熊猫多指数的好处?

所以我了解到我可以使用DataFrame.groupby而无需使用MultiIndex进行子采样/横截面.

另一方面,当我在DataFrame上有MultiIndex时,我仍然需要使用DataFrame.groupby来进行子采样/横截面.

那么除了在打印时非常有用且漂亮的层次结构显示之外,什么是MultiIndex?

python multi-index pandas

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

如何用pylab绘制给定y值的1-d数据

我想在水平轴上绘制一维阵列中的数据点[编辑:在给定的y值],如下图所示:

http://static.inky.ws/image/644/image.jpg

我怎么能用pylab做到这一点?

python matplotlib

31
推荐指数
2
解决办法
4万
查看次数

什么是.sconsign.dblite文件?

如果删除它会发生什么?

我应该把它置于版本控制之下吗?

scons

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

如何用Seaborn在同一个地块上绘制多个直方图

使用matplotlib,我可以在一个图上创建一个包含两个数据集的直方图(一个与另一个相邻,不是叠加).

import matplotlib.pyplot as plt
import random

x = [random.randrange(100) for i in range(100)]
y = [random.randrange(100) for i in range(100)]
plt.hist([x, y])
plt.show()
Run Code Online (Sandbox Code Playgroud)

这产生以下图.

在此输入图像描述

但是,当我尝试用seabron做这件事时;

import seaborn as sns
sns.distplot([x, y])
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ValueError: color kwarg must have one color per dataset
Run Code Online (Sandbox Code Playgroud)

那么我尝试添加一些颜色值:

sns.distplot([x, y], color=['r', 'b'])
Run Code Online (Sandbox Code Playgroud)

我得到了同样的错误.我看到这篇关于如何叠加图形的文章,但我希望这些直方图是并排的,而不是叠加.

在查看文档时,它没有指定如何将列表列表作为第一个参数'a'.

如何使用seaborn实现这种直方图?

python matplotlib seaborn

22
推荐指数
2
解决办法
4万
查看次数

如何在ipyparallel客户端和远程引擎之间最好地共享静态数据?

我在具有不同参数的循环中运行相同的模拟.每个模拟都使用一个data只读取的pandas DataFrame(),从不修改.使用ipyparallel(IPython parallel),我可以在模拟开始之前将此DataFrame放入我视图中每个引擎的全局变量空间:

view['data'] = data
Run Code Online (Sandbox Code Playgroud)

然后,引擎可以访问DataFrame以获取在其上运行的所有模拟.复制数据的过程(如果是腌制的,data是40MB)只需几秒钟.但是,似乎如果模拟的数量增加,则内存使用量会变得非常大.我想这个共享数据是为每个任务而不是仅为每个引擎复制.从具有引擎的客户端共享静态只读数据的最佳实践是什么?每个引擎复制一次是可以接受的,但理想情况下每个主机只需要复制一次(我在host1上有4个引擎,在host2上有8个引擎).

这是我的代码:

from ipyparallel import Client
import pandas as pd

rc = Client()
view = rc[:]  # use all engines
view.scatter('id', rc.ids, flatten=True)  # So we can track which engine performed what task

def do_simulation(tweaks):
    """ Run simulation with specified tweaks """
    #  Do sim stuff using the global data DataFrame
    return results, id, tweaks

if __name__ == '__main__':
    data = pd.read_sql("SELECT …
Run Code Online (Sandbox Code Playgroud)

python ipython ipython-parallel

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

在Pandas专栏中找到混合类型的好策略是什么?

我经常在解析数据文件时收到此警告:

WARNING:py.warnings:/usr/local/python3/miniconda/lib/python3.4/site-
packages/pandas-0.16.0_12_gdcc7431-py3.4-linux-x86_64.egg/pandas
/io/parsers.py:1164: DtypeWarning: Columns (0,2,14,20) have mixed types. 
Specify dtype option on import or set low_memory=False.
          data = self._reader.read(nrows)
Run Code Online (Sandbox Code Playgroud)

但是如果数据很大(我有50k行),我如何在数据中找到dtype的变化?

python pandas

15
推荐指数
3
解决办法
4826
查看次数

了解pandas数据帧索引

摘要:这不起作用:

df[df.key==1]['D'] = 1
Run Code Online (Sandbox Code Playgroud)

但这样做:

df.D[df.key==1] = 1
Run Code Online (Sandbox Code Playgroud)

为什么?

再生产:

In [1]: import pandas as pd

In [2]: from numpy.random import randn

In [4]: df = pd.DataFrame(randn(6,3),columns=list('ABC'))

In [5]: df
Out[5]: 
          A         B         C
0  1.438161 -0.210454 -1.983704
1 -0.283780 -0.371773  0.017580
2  0.552564 -0.610548  0.257276
3  1.931332  0.649179 -1.349062
4  1.656010 -1.373263  1.333079
5  0.944862 -0.657849  1.526811

In [6]: df['D']=0.0

In [7]: df['key']=3*[1]+3*[2]

In [8]: df
Out[8]: 
          A         B         C  D  key
0  1.438161 -0.210454 -1.983704  0    1
1 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

比较两个 anaconda 安装之间的包

我在 Mac 上安装了两个版本的 Python,分别是 3.5 和 3.7。有什么方法可以知道我在 3.5 中安装了哪些不在 3.7 中的软件包,例如您可以使用 pip(pulp、wordcloud 等)安装的软件包。

到目前为止我尝试过的是使用命令行:

diff -rq anaconda/.../python3.5/site-packages anaconda3/.../python3.7/site-packages
Run Code Online (Sandbox Code Playgroud)

这显示了目录之间的差异,但显示了大量重复包和核心模块的信息。如何找到两个 Anaconda 版本之间的软件包差异?

python anaconda

9
推荐指数
2
解决办法
3332
查看次数

如何在没有tmp存储的情况下将二进制数据传输到numpy数组?

有几个类似的问题,但没有一个直接回答这个简单的问题:

如何捕获命令输出并将该内容流式传输到numpy数组而不创建要读取的临时字符串对象?

那么,我想做的是:

import subprocess
import numpy
import StringIO

def parse_header(fileobject):
    # this function moves the filepointer and returns a dictionary
    d = do_some_parsing(fileobject)
    return d

sio = StringIO.StringIO(subprocess.check_output(cmd))
d = parse_header(sio)
# now the file pointer is at the start of data, parse_header takes care of that.
# ALL of the data is now available in the next line of sio
dt = numpy.dtype([(key, 'f8') for key in d.keys()])

# i don't know how do make this …
Run Code Online (Sandbox Code Playgroud)

python stdin numpy stringio

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

如何有效地结合类设计和矩阵数学?

有一段时间我现在在精神上受到两种物理系统建模设计理念的冲突的困扰,我想知道社区为此提出了什么样的解决方案.

对于复杂(呃)模拟,我喜欢为对象创建类的抽象,以及如何使用我想要研究的真实对象来识别类的对象实例,以及对象的某些属性如何表示现实生活对象的物理特征.让我们把弹道粒子系统作为一个简单的例子:

class Particle(object):
    def __init__(self, x=0, y=0, z=0):
        self.x = x
        self.y = y
        self.z = z
    def __repr__(self):
        return "x={}\ny={}\nz={}".format(self.x, self.y, self.z)
    def apply_lateral_wind(self, dx, dy):
        self.x += dx
        self.y += dy
Run Code Online (Sandbox Code Playgroud)

如果我用一百万个值初始化它,我可能会这样做:

start_values = np.random.random((int(1e6),3))

particles = [Particle(*i) for i in start_values]
Run Code Online (Sandbox Code Playgroud)

现在,让我们假设我需要对我的所有粒子做一个特定的事情,比如添加一个横向风向量,只为这个特定的操作导致ax,y shift,因为我只有一堆(列表)我的所有粒子,我需要遍历所有粒子才能做到这一点,这需要花费这么多时间:

%timeit _ = [p.apply_lateral_wind(0.5, 1.2) for p in particles]
1 loop, best of 3: 551 ms per loop
Run Code Online (Sandbox Code Playgroud)

现在,相反的明显范式,显然更有效,是保持在numpy水平,只是直接在数组上进行数学运算,速度超过10倍:

%timeit start_values[...,:2] += np.array([0.5,1.2])
10 loops, best of 3: 20.3 ms per …
Run Code Online (Sandbox Code Playgroud)

python oop modeling numpy data-modeling

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