我有两个pandas数组,A和B,由groupby操作产生.A具有由分位数和日期组成的2级多指数.B只有一个日期索引.
在它们之间,日期索引匹配(在A的每个分位数索引内).
是否有一个标准的Pandas功能或成语来"广播"B,这样它的多指数会有一个额外的水平,与A的第一个多指数水平相匹配?
我正在使用 Pandas 0.8.1,目前我无法更改版本。如果较新的版本可以帮助解决下面的问题,请在评论中而不是在答案中注明。此外,这是针对研究复制项目,因此即使在仅附加一个新数据点后重新运行回归可能很愚蠢(如果数据集很大),我仍然必须这样做。谢谢!
在 Pandas 中,参数 to有一个rolling选项,但似乎暗示这需要选择窗口大小或使用整个数据样本作为默认值。我希望以累积方式使用所有数据。window_typepandas.ols
我正在尝试对pandas.DataFrame按日期排序的进行回归。对于每个索引i,我想使用从最小日期到索引日期的可用数据运行回归i。因此,窗口在每次迭代时有效地增长 1,从最早的观察开始累积使用所有数据,并且没有数据从窗口中丢失。
我编写了一个函数(如下)apply来执行此操作,但速度慢得令人无法接受。相反,有没有一种方法可以pandas.ols用来直接执行这种累积回归?
这里有一些关于我的数据的更多细节。我有一个pandas.DataFrame包含一列标识符、一列日期、一列左侧值和一列右侧值。我想使用groupby基于标识符进行分组,然后对由左侧和右侧变量组成的每个时间段执行累积回归。
这是我可以apply在标识符分组对象上使用的函数:
def cumulative_ols(
data_frame,
lhs_column,
rhs_column,
date_column,
min_obs=60
):
beta_dict = {}
for dt in data_frame[date_column].unique():
cur_df = data_frame[data_frame[date_column] <= dt]
obs_count = cur_df[lhs_column].notnull().sum()
if min_obs <= obs_count:
beta = pandas.ols(
y=cur_df[lhs_column],
x=cur_df[rhs_column],
).beta.ix['x']
###
else:
beta = np.NaN
###
beta_dict[dt] = beta
###
beta_df = pandas.DataFrame(pandas.Series(beta_dict, name="FactorBeta"))
beta_df.index.name …Run Code Online (Sandbox Code Playgroud) 我有一个带有降价文件的秘密Github要点。我创建了三个简单的.png图像,这些图像需要嵌入到要显示在要点URL上的文档中。
我克隆了要点仓库,添加了图像文件,然后推送到主数据库。现在,在要点URL上,除了标记文件之外,我还看到了图像文件。
但是,每当我添加以下简单代码尝试显示图像时,它都无法工作(它仅使文本“ Image”超链接,并且如果单击该链接,则会带我到显示“未找到”的页面,即使我可以验证它也是如此)正是链接到图像文件的URL地址):

Run Code Online (Sandbox Code Playgroud)
但是,在我的markdown文档的本地副本中,如果我使图像链接引用了相对的文件路径(例如),那么如果我在本地计算机上的Markdown查看器(例如Mou)中查看该文档,则该链接可以按预期工作。无论基于本地还是基于github的URL,它都不能在要旨URL上工作。
从我读过的所有内容来看,这似乎是将图像添加到要点的正确方法(克隆要点回购,添加文件,推送到主站点,然后从生成的Github URL链接它们)。
它不起作用...我想走哪一步?
Conda 版本 4.2.9,来自 RedHat 4.4.7-1 的 anaconda3 4.2.0 安装。
[user@machine]$ conda info --envs
# conda environments:
#
molr-py3 /home/user/anaconda3/envs/molr-py3
root * /home/user/anaconda3
[user@machine]$ source activate molr-py3
CondaEnvironmentNotFoundError: Could not find environment: molr-py3 .
You can list all discoverable environments with `conda info --envs`.
Run Code Online (Sandbox Code Playgroud)
我什至不确定在这种情况下要采取哪些调试步骤。我已经验证conda来自正确的 anaconda 路径等。
我还尝试chmod -R a+rwX了envs目录,然后是anaconda3目录,但这没有影响。
所有不同的conda-*命令在 .bashrc 中都有别名,以指向 .bashrc 中存在的版本anaconda3/bin,因此它不使用任何anaconda2版本的conda东西。此外,activate脚本 fromanaconda3/bin的别名为 to,activate因此它也不使用该anaconda2 activate …
我创建了一个新的conda环境
user@machine:~/project$ conda create -n test-env -c numba python=3.5.2 llvmdev=3.8
Fetching package metadata ...........
Solving package specifications: .
Package plan for installation in environment /home/user/anaconda2/envs/test-env:
The following NEW packages will be INSTALLED:
llvmdev: 3.8.1-7 numba
openssl: 1.0.2k-0
pip: 9.0.1-py35_1
python: 3.5.2-0
readline: 6.2-2
setuptools: 27.2.0-py35_0
sqlite: 3.13.0-0
system: 5.8-2 numba
tk: 8.5.18-0
wheel: 0.29.0-py35_0
xz: 5.2.2-1
zlib: 1.2.8-3
Proceed ([y]/n)? y
#
# To activate this environment, use:
# > source activate test-env
#
# To deactivate this environment, use: …Run Code Online (Sandbox Code Playgroud) 我有一个生成器函数,它在某些图像目录上无限循环并输出 3 元组的形式
[img1, img2], label, weight
Run Code Online (Sandbox Code Playgroud)
其中img1和img2是batch_size x M x N x 3张量,并且label和weight各自batch_size的X 1张量。
我fit_generator在用 Keras 训练模型时向函数提供了这个生成器。
对于这个模型,我有一个自定义的余弦对比损失函数,
def cosine_constrastive_loss(y_true, y_pred):
cosine_distance = 1 - y_pred
margin = 0.9
cdist = y_true * y_pred + (1 - y_true) * keras.backend.maximum(margin - y_pred, 0.0)
return keras.backend.mean(cdist)
Run Code Online (Sandbox Code Playgroud)
从结构上讲,我的模型一切正常。没有错误,它正在按预期消耗来自生成器的输入和标签。
但现在我正在寻求直接使用每个批次的权重参数,并cosine_contrastive_loss根据特定于样本的权重在内部执行一些自定义逻辑。
如何在执行损失函数时从一批样本的结构中访问此参数?
请注意,由于它是一个无限循环的生成器,因此无法预先计算权重或动态计算它们以将权重归入损失函数或生成它们。
它们具有一致地产生具有所产生的样品,并确有定制逻辑在我的数据生成器,从性能动态地确定的权重img1,img2并且label在此刻它们用于分批生成。
假设我有一些对象x可能是数据类型的单个实例(比方说float),或者它可能是一个float类型列表.
有没有什么我可以确保x包装为一个列表,如果有必要可能是一个单例列表,而不检查其类型或做这样的事情.
我想要list(x)总是工作的东西,无论x是单身还是单身,但这不起作用,因为单身不可迭代.
同时,我不想定义自己的函数来构造来自singeltons的列表,我也不想像这样内联任何内容:
from collections import Iterable
y = [x] if not isinstance(x, Iterable) else list(x)
Run Code Online (Sandbox Code Playgroud)
如果没有比这更简洁的话,那没关系.我正在寻找一些已经内置于语言中的干净方法.
我相信有些人可能认为这种isinstance方法很干净而且很好,但我特别想找到一些更简洁的东西,不要求我先写任何新内容.我在搜索文档页面时找不到任何内容,而且我不确定如何向搜索引擎提出这个问题.
假设该函数some_descriptively_named_function返回 4- tupleof 4 个返回参数。我想调用some_descriptively_named_function,遵守 80 个字符的行长度限制,并将所有 4 个输出解压缩到一个描述性命名的变量中:
some_desc_name1, some_desc_name2, some_desc_name3, some_desc_name4 = some_descriptively_named_function()
Run Code Online (Sandbox Code Playgroud)
一种选择是:
some_desc_name1, some_desc_name2, some_desc_name3, some_desc_name4 = (
some_descriptively_named_function()
)
Run Code Online (Sandbox Code Playgroud)
但是,对于四个未打包的值,即使这样也可以推动它的行长。如果我想对每个论点做一个简短的评论,要很好地阐述它并不容易。
以下工作,但不清楚这是否被认为是好的或非常糟糕。
(some_desc_name1, # Comment 1
some_desc_name2, # Comment 3
some_desc_name3, # Comment 3
some_desc_name4 # Comment 4
) = some_descriptively_named_function()
Run Code Online (Sandbox Code Playgroud)
这对于行长当然很好,但是尝试考虑 PEP8 如何适用于发生在行首的括号是很奇怪的。
是否有一个既定的(希望与 PEP8 相关的)Python 风格指南?
当从一个API转到另一个API时,有时可以帮助在每个API中的相似关键字之间进行映射,允许一个控制器API灵活地分派到其他库,而无需用户在引擎盖下使用不同的API.
假设某个库other_api有一个名为的方法"logarithm",而基础的关键字参数是我需要从我的代码中分解出来的,比如"log_base_val"; 所以要使用它other_api我需要输入(例如):
other_api.logarithm(log_base_val=math.e)
Run Code Online (Sandbox Code Playgroud)
考虑像这样的玩具类:
import other_api
import math
import functools
class Foo(object):
_SUPPORTED_ARGS = {"base":"log_base_val"}
def arg_binder(self, other_api_function_name, **kwargs):
other_api_function = getattr(other_api, other_api_function_name)
other_api_kwargs = {_SUPPORTED_ARGS[k]:v for k,v in kwargs.iteritems()}
return functools.partial(other_api_function, **other_api_kwargs)
Run Code Online (Sandbox Code Playgroud)
有了Foo,我可以映射一些其他API,其中始终调用此参数base,如下所示:
f = Foo()
ln = f.arg_binder("logarithm", base=math.e)
Run Code Online (Sandbox Code Playgroud)
并且ln在逻辑上等同于(with log_base_val=math.ein kwargs,from functools):
other_api.logarithm(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
但是,通过调用手动创建相同的参数绑定functools将导致不同的函数对象:
In [10]: import functools
In [11]: def foo(a, b):
....: return a …Run Code Online (Sandbox Code Playgroud) python ×8
conda ×2
pandas ×2
anaconda ×1
arguments ×1
arrays ×1
environment ×1
functools ×1
gist ×1
github ×1
image ×1
ipython ×1
keras ×1
kernel ×1
list ×1
llvm ×1
markdown ×1
multi-index ×1
numba ×1
optimization ×1
pep8 ×1
pip ×1
python-3.x ×1
regression ×1
tensorflow ×1
unit-testing ×1
zeromq ×1