小编Foo*_*Bar的帖子

熊猫:每个小组按月汇总

我有下pandas表

                          TUFNWGTP  TELFS  t070101  t070102  t070103  t070104  \
TUDIARYDATE status                                                              
2003-01-03  emp     8155462.672158      2        0        0        0        0   
2003-01-04  emp     1735322.527819      1        0        0        0        0   
            emp     3830527.482672      2       60        0        0        0   
2003-01-02  unemp   6622022.995205      4        0        0        0        0   
2003-01-09  emp     3068387.344956      1        0        0        0        0
Run Code Online (Sandbox Code Playgroud)

我希望将每日数据汇总到每个子组的月度数据.

也就是说,如果没有子status索引,我会这样做

df.resample('M', how='sum')
Run Code Online (Sandbox Code Playgroud)

如何为每个子组执行每月聚合?

python resampling pandas

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

熊猫:将两行彼此分开

这是我的数据框中的两行:

>>> test.loc[test.index.year == 2009]
                     0         1           2           3           4  \
date                                                                   
2009-01-01  252.855283  353.6261  556.295659  439.558188  432.936844   

                     5           6  employment  
date                                            
2009-01-01  439.437132  433.269903   64.116667 

>>> test.loc[test.index.year == 2007]
                     0           1           2           3           4  \
date                                                                     
2007-01-01  269.277757  380.608002  401.765546  491.893821  433.864499   

                     5           6  employment  
date                                            
2007-01-01  492.396073  489.260588     69.1375  
Run Code Online (Sandbox Code Playgroud)

当我尝试时divide,我得到了

>>> test.loc[test.index.year == 2009].divide(test.loc[test.index.year == 2007])
             0   1   2   3   4   5   6  employment
date                                              
2007-01-01 NaN NaN NaN NaN NaN NaN NaN         NaN
2009-01-01 NaN …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

多个热图子图:相同的热棒

以下是我绘制热图的方法:

import matplotlib.pyplt as plt 

ax = plt.gca()
im = ax.imshow(values)
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size='5%', pad=0.05)
plt.colorbar(im, cax=cax)
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个2x2子图,有4个不同的热图,并且都具有相同的热棒.我对如何实现这一目标完全不了解,并希望能够朝着正确的方向努力.

python matplotlib heatmap

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

从matplotlib heatplot中删除空格

我在matplotlib中有一个热图,我想删除图中北部和东部的空白,如下图所示. 在此输入图像描述

这是我用来生成图的代码:

# plotting
figsize=(50,20)
y,x = 1,2
fig, axarry = plt.subplots(y,x, figsize=figsize)
p = axarry[1].pcolormesh(copy_matrix.values)

# put the major ticks at the middle of each cell
axarry[1].set_xticks(np.arange(copy_matrix.shape[1])+0.5, minor=False)
axarry[1].set_yticks(np.arange(copy_matrix.shape[0])+0.5, minor=False)

axarry[1].set_title(file_name, fontweight='bold')

axarry[1].set_xticklabels(copy_matrix.columns, rotation=90)
axarry[1].set_yticklabels(copy_matrix.index)

fig.colorbar(p, ax=axarry[1])

Phylo.draw(tree, axes=axarry[0])
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

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

Data.table:组合列(聚合的单个功能)

我有一些类似的数据

foo <- data.table(uid=c("a","b", "c"), var1=c(T, F, F), var2=c(F, T, F))

我想(var1, var2)融入var3使用以下聚合的函数:

  • w IF var1 == T & var2 == T (其他:)
  • x IF var1 == T
  • y IF var2 == T
  • z IF var1 == F & var2 == F

也就是说,鉴于我foo,预期的结果是

uid var3
  a    x
  b    y
  c    z
Run Code Online (Sandbox Code Playgroud)

此外,任何额外的列foo都(var1, var2)应该被接纳到新的列中data.table

r data.table

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

Pandas:按时间分组,然后绘制每组的密度

我试图按时间对数据帧进行分组,然后绘制每个子组的变量密度。我正在做:

myDf.groupby(pd.TimeGrouper('AS'))['myVar'].plot(kind='density')
Run Code Online (Sandbox Code Playgroud)

结果如下:

date
2006-01-01    Axes(0.125,0.1;0.775x0.8)
2007-01-01    Axes(0.125,0.1;0.775x0.8)
2008-01-01    Axes(0.125,0.1;0.775x0.8)
2009-01-01    Axes(0.125,0.1;0.775x0.8)
2010-01-01    Axes(0.125,0.1;0.775x0.8)
Name: myVar, dtype: object
Run Code Online (Sandbox Code Playgroud)

和情节:

输出

如何将正确的图例添加到图中?现在无法知道哪一行对应哪一年。

python matplotlib pandas

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

熊猫:从多索引中的日期中选择

假设我有 MultiIndex 系列

date        foo
2006-01-01  1         12931926.310
            3         11084049.460
            5         10812205.359
            7          9031510.239
            9          5324054.903
2007-01-01  1         11086082.624
            3         12028419.560
            5         11957253.031
            7         10643307.061
            9          6034854.915
Run Code Online (Sandbox Code Playgroud)

如果它不是 MultiIndex,我可以选择那些带有 year2007到df.loc['2007']. 我在这里怎么做?我的自然猜测是df.loc['2007', :],但这给了我一个空洞Series([], name: FINLWT21, dtype: float64)。

最终目标

最终,我也有兴趣替换不同日期的所有行而不是2007年份的行2007。

也就是说,我的预期输出是

date        foo
2006-01-01  1         11086082.624
            3         12028419.560
            5         11957253.031
            7         10643307.061
            9          6034854.915
2007-01-01  1         11086082.624
            3         12028419.560
            5         11957253.031
            7         10643307.061
            9          6034854.915
Run Code Online (Sandbox Code Playgroud)

我试图实施@unutbu 的解决方案,但是

mySeries.loc[dateIndex.year != 2007] …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

scipy中不完整的Gamma功能

我想计算一下wolfram alpha所谓的不完整伽马函数(见这里):

`gamma[0, 0.1]`
Run Code Online (Sandbox Code Playgroud)

wolfram alpha输出是1.822.唯一scipy让我类似于此的东西scipy.special.gammainc,但它的定义与wolfram alpha定义其不完整伽玛函数的定义不同.

不出所料

import scipy
scipy.special.gammainc(0, 0.1)
Run Code Online (Sandbox Code Playgroud)

给了我nan.是否scipy支持我在寻找什么呢?

python scipy

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

Pathos.multiprocessing的Pool似乎是非本地的?

我的代码呢

from pathos.multiprocessing import ProcessingPool
def myFunc(something):
    thispool = ProcessingPool(nodes=Result.cores)
    listOfResults = thispool.map(something)
    return listOfResults

for i in range(1000):
    myFunc(i)
Run Code Online (Sandbox Code Playgroud)

现在,在我实际涉及的更多代码中,内存使用量不断增长.代码应该不采取任何措施,但如果我使用12个内核运行它,这12个内核最初将占用近1mb内存,但在几个小时的运行时间内,每个内核需要几GB.

所以,我认为池会泄漏内存,我最好在每次迭代后关闭它:

def myFunc(something):
    thispool = ProcessingPool(nodes=Result.cores)
    listOfResults = thispool.map(something)
    thispool.close()
    thispool.join()
    return listOfResults
Run Code Online (Sandbox Code Playgroud)

但是,现在,经过几次迭代,我得到了

ValueError: Pool not running
Run Code Online (Sandbox Code Playgroud)

在this pool.map()行.如果我创建一个新的

test = ProcessingPool(nodes=4)
Run Code Online (Sandbox Code Playgroud)

并尝试运行test.map(),我得到同样的错误.这很奇怪,我初始化了一个新的变量......确实pathos.processing.ProcessingPool有一个独特的进程池的功能,如果我关闭一个,我关闭所有?

pathos.multiprocessing.ProcessingPool在没有内存泄漏的情况下实现内部循环的正确方法是什么?

当我改用时multiprocessing.Pool,不会出现问题.

python multiprocessing pathos

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

Matplotlob:绘制开放区间,将线连接到空圆

我想绘制一条以空圆圈结尾的线。本质上是开放区间的可视化[0, 1)我的尝试是:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 1, 20)
y = 1 + x*2
l, = plt.plot(x[:-1], y[:-1])
plt.scatter(x[-1], y[-1], marker='o', facecolor='none', edgecolor=l.get_color())
Run Code Online (Sandbox Code Playgroud)

不幸的是,这条线没有连接到圆圈。或者,我可以绘制所有plt.plot(x, y),但该线在圆圈内。什么是绘制它的好方法,使线恰好接触圆并且不会走得更远?

我正在寻找一种方法,允许我为其他行重现此方法,并且不需要对每个用例进行大量微调。

python matplotlib

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