小编Bra*_*mon的帖子

Python多处理:理解`chunksize`背后的逻辑

哪些因素决定了chunksize方法的最佳参数multiprocessing.Pool.map()?该.map()方法似乎使用任意启发式作为其默认的chunksize(如下所述); 是什么推动了这种选择,是否有基于某些特定情况/设置的更周到的方法?

示例 - 说我是:

  • 传递iterable.map()拥有约1500万个元素的元素;
  • 24个核的机器上工作,使用默认processes = os.cpu_count()multiprocessing.Pool().

我天真的想法是给每24个工人一个同样大小的块,即15_000_000 / 24625,000.大块应该在充分利用所有工人的同时减少营业额/管理费用.但似乎缺少给每个工人提供大批量的一些潜在缺点.这是不完整的图片,我错过了什么?


我的部分问题源于if chunksize=None:both .map().starmap()call 的默认逻辑,.map_async()如下所示:

def _map_async(self, func, iterable, mapper, chunksize=None, callback=None,
               error_callback=None):
    # ... (materialize `iterable` to list if it's an iterator)
    if chunksize is None:
        chunksize, extra = divmod(len(iterable), len(self._pool) * 4)  # ????
        if extra:
            chunksize += 1
    if len(iterable) == 0:
        chunksize = …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing multiprocessing python-3.x python-multiprocessing

47
推荐指数
3
解决办法
6902
查看次数

python pandas,DF.groupby().agg(),agg()中的列引用

在一个具体问题上,假设我有一个DataFrame DF

     word  tag count
0    a     S    30
1    the   S    20
2    a     T    60
3    an    T    5
4    the   T    10 
Run Code Online (Sandbox Code Playgroud)

对于每个"单词",我想找到具有最多"计数"的"标签".所以回报就像是

     word  tag count
1    the   S    20
2    a     T    60
3    an    T    5
Run Code Online (Sandbox Code Playgroud)

我不关心计数列,或者订单/索引是原始的还是搞砸了.返回字典{ 'the':'S',...}就好了.

我希望我能做到

DF.groupby(['word']).agg(lambda x: x['tag'][ x['count'].argmax() ] )
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我无法访问列信息.

更抽象地说,agg(函数)中的函数看作什么?

顺便说一下,.agg()与.aggregate()相同吗?

非常感谢.

python group-by pandas split-apply-combine

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

如何禁用/覆盖自动完成的回车键?

在Sublime Text 3中,我想禁用enter从自动完成下拉列表中选择项目的tab键,并且只允许键执行此操作.

我在内置Default (OSX).sublime-keymap文件中找到了这个部分:

{ "keys": ["enter"], "command": "commit_completion", "context":
    [
        { "key": "auto_complete_visible" },
        { "key": "setting.auto_complete_commit_on_tab", "operand": false }
    ]
},
Run Code Online (Sandbox Code Playgroud)

似乎如果我从配置中删除它enter不会在下拉列表中选择项目.不幸的是,不建议更改此文件,只在我的User文件中覆盖它.我不认为我实际上可以编辑它而不修改.app内容.

我尝试通过删除不同的部分来覆盖它,并删除除了之外的所有内容"keys": ["enter"],但似乎没有任何效果.

如何在不修改内置Default (OSX).sublime-keymap且仅修改User/Default (OSX).sublime-keymap文件的情况下实现此目的?

keyboard-shortcuts autocomplete sublimetext sublimetext3

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

在pandas中设置切片值的正确方法

我有一个pandas数据帧:数据.它有列["名称","A","B"]

我想做(和工作)的是:

d2 = data[data['name'] == 'fred'] #This gives me multiple rows
d2['A'] = 0
Run Code Online (Sandbox Code Playgroud)

这会将fred行上的A列设置为0.我也做了:

indexes = d2.index
data['A'][indexes] = 0
Run Code Online (Sandbox Code Playgroud)

但是,两人都给了我同样的警告:

/Users/brianp/work/cyan/venv/lib/python2.7/site-packages/pandas/core/indexing.py:128: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
Run Code Online (Sandbox Code Playgroud)

大熊猫是怎么想让我这样做的?

python pandas chained-assignment

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

pandas滚动对象如何工作?

编辑:我强调了这个问题,因为它可能太复杂了.问题的内容在下面以粗体显示.

我想更多地了解使用时实际创建的对象DataFrame.rollingSeries.rolling:

print(type(df.rolling))
<class 'pandas.core.window.Rolling'>
Run Code Online (Sandbox Code Playgroud)

一些背景:考虑常用的替代品np.as_strided.此代码段本身并不重要,但其结果是我在提出此问题时的参考点.

def rwindows(a, window):
    if a.ndim == 1:
        a = a.reshape(-1, 1)
    shape = a.shape[0] - window + 1, window, a.shape[-1]
    strides = (a.strides[0],) + a.strides
    windows = np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)
    return np.squeeze(windows)
Run Code Online (Sandbox Code Playgroud)

rwindows将采用1d或2d ndarray并构建等于指定窗口大小的滚动"块"(如下所示). 对象如何与下面.rollingndarray输出进行比较? 它是一个迭代器,是否为每个块存储了某些属性?或完全不同的东西?我已经尝试使用属性/方法(例如__dict__和)在对象上使用制表符完成,_get_index()并且它们并没有告诉我太多.我也在_create_blocks熊猫中看到过一种方法 - 它是否与该strided方法类似?

# as_strided version

a = np.arange(5)
print(rwindows(a, 3))           # 1d input
[[0 1 …
Run Code Online (Sandbox Code Playgroud)

python numpy cython dataframe pandas

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

URL命名空间的一个真实示例

我正在研究Django文档,但是我遇到了一个我无法理解的部分:在真正的问题中如何使用命名空间的真实示例是什么.我知道语法,但我不知道这个的目的.

django url namespaces django-views

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

熊猫滚动回归:循环的替代方案

我得到了很好的利用了大熊猫的MovingOLS类(来源这里不推荐使用内)stats/ols模块.不幸的是,完全被大熊猫0.20摧毁了.

关于如何以有效的方式运行滚动OLS回归的问题已被多次询问(例如,这里),但在我看来,有点广泛地表达并没有得到很好的答案.

这是我的问题:

  1. 我怎样才能最好地模仿大熊猫的基本框架MovingOLS?这个类最吸引人的特点是能够将多个方法/属性视为单独的时间序列 - 即系数,r平方,t-统计等,而无需重新运行回归.例如,您可以创建类似model = pd.MovingOLS(y, x),然后调用.t_stat,.rmse,.std_err,等.在下面的示例中,相反,我没有看到被迫分别计算每个统计信息的方法.有没有一种方法不涉及创建滑动/滚动"块"(步幅)和运行回归/使用线性代数来获取每个模型参数?

  2. 更广泛地说,大熊猫在幕后发生了什么使得rolling.apply无法采用更复杂的功能?*当你.rolling用外行的术语创建一个对象时,内部发生了什么 - 它与循环每个窗口和创建一个根本不同我正在做下面的高维数组?

*即func传递给.apply:

必须从ndarray输入生成单个值*args和**kwargs传递给函数

以下是我目前处理的一些样本数据,回归贸易加权美元对利率差价和铜价的百分比变化.(这没有多大意义;只是随机选择它们.)我已经从基于类的实现中取出它并尝试将其剥离为更简单的脚本.

from datetime import date
from pandas_datareader.data import DataReader
import statsmodels.formula.api as smf

syms = {'TWEXBMTH' : 'usd', 
        'T10Y2YM' : 'term_spread', 
        'PCOPPUSDM' : 'copper'
       }

start = date(2000, 1, 1)
data = (DataReader(syms.keys(), 'fred', start)
        .pct_change()
        .dropna())
data = data.rename(columns …
Run Code Online (Sandbox Code Playgroud)

python numpy linear-regression pandas statsmodels

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

在Pandas中检查数据框是复制还是查看

有没有一种简单的方法可以检查两个数据框是不同的副本还是不涉及操作的相同基础数据的视图?我试图抓住每一个生成的时间,并且考虑到规则似乎有多特殊,我想要一种简单的测试方法.

例如,我认为"id(df.values)"在各个视图中都是稳定的,但它们似乎不是:

# Make two data frames that are views of same data.
df = pd.DataFrame([[1,2,3,4],[5,6,7,8]], index = ['row1','row2'], 
       columns = ['a','b','c','d'])
df2 = df.iloc[0:2,:]

# Demonstrate they are views:
df.iloc[0,0] = 99
df2.iloc[0,0]
Out[70]: 99

# Now try and compare the id on values attribute
# Different despite being views! 

id(df.values)
Out[71]: 4753564496

id(df2.values)
Out[72]: 4753603728

# And we can of course compare df and df2
df is df2
Out[73]: False
Run Code Online (Sandbox Code Playgroud)

其他答案我已经抬头试图给出规则,但似乎不一致,也不回答如何测试的问题:

当然: - http://pandas.pydata.org/pandas-docs/stable/indexing.html#returning-a-view-versus-a-copy …

python pandas chained-assignment

30
推荐指数
2
解决办法
9256
查看次数

如何返回numpy中的所有最小索引

在numpy中阅读argmin函数的文档有点困惑.它看起来应该做的工作:

读这个

返回沿轴的最小值索引.

我可能会认为

np.argmin([5, 3, 2, 1, 1, 1, 6, 1])
Run Code Online (Sandbox Code Playgroud)

将返回所有索引的数组:将是 [3, 4, 5, 7]

但不是这样,它只返回3.捕获的位置,或者我应该怎么做以获得我的结果?

python numpy

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

Python请求 - 异常类型:ConnectionError - try:except不起作用

我使用web服务来检索一些数据,但有时网址不起作用,我的网站没有加载.你知道我如何处理以下异常,所以如果webservice不工作,网站没有问题吗?

Django Version: 1.3.1 
Exception Type: ConnectionError
Exception Value: 
HTTPConnectionPool(host='test.com', port=8580): Max retries exceeded with url:
Run Code Online (Sandbox Code Playgroud)

我用了

try:
   r = requests.get("http://test.com", timeout=0.001)
except requests.exceptions.RequestException as e:    # This is the correct syntax
   print e
   sys.exit(1)
Run Code Online (Sandbox Code Playgroud)

但没有任何反应

python connection url python-2.x python-requests

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