小编Xin*_*ang的帖子

如何加快 pandas groupby bin 的聚合速度?

我为每一列创建了不同的 bin,并根据这些对 DataFrame 进行分组。

\n
import pandas as pd\nimport numpy as np\n\nnp.random.seed(100)\ndf = pd.DataFrame(np.random.randn(100, 4), columns=[\'a\', \'b\', \'c\', \'value\'])\n\n# for simplicity, I use the same bin here\nbins = np.arange(-3, 4, 0.05)\n\ndf[\'a_bins\'] = pd.cut(df[\'a\'], bins=bins)\ndf[\'b_bins\'] = pd.cut(df[\'b\'], bins=bins)\ndf[\'c_bins\'] = pd.cut(df[\'c\'], bins=bins)\n
Run Code Online (Sandbox Code Playgroud)\n

的输出df.groupby([\'a_bins\',\'b_bins\',\'c_bins\']).size() 表明组长度为2685619。

\n

计算各组的统计数据

\n

然后,计算各组的统计数据如下:

\n
%%timeit\ndf.groupby([\'a_bins\',\'b_bins\',\'c_bins\']).agg({\'value\':[\'mean\']})\n\n>>> 16.9 s \xc2\xb1 637 ms per loop (mean \xc2\xb1 std. dev. of 7 runs, 1 loop each)\n
Run Code Online (Sandbox Code Playgroud)\n

预期产出

\n
    \n
  1. 有可能加快这个速度吗?
  2. \n
  3. 更快的方法还应该支持通过输入a, b, and c值来查找值,如下所示:
  4. \n …

python numpy scipy pandas scipy.stats

8
推荐指数
1
解决办法
1782
查看次数

在另一个成对的bin数组中获取数据数组最小值的最快方法

我有三个一维数组:

  • idxs: 索引数据
  • weights: 中每个指标的权重 idxs
  • bins:用于计算其中最小重量的 bin。

这是我当前使用的方法idxs来检查weights在哪个 bin 中调用的数据,然后计算 bin 权重的最小值/最大值:

插图

  1. 获取slices显示每个垃圾箱idxs元素所属的。
  2. 排序slicesweights同时。
  3. 计算weights每个 bin(切片)中的最小值。

numpy 方法

import random
import numpy as np

# create example data
out_size = int(10)
bins = np.arange(3, out_size-3)
idxs = np.arange(0, out_size)
#random.shuffle(idxs)

# set duplicated slice manually for test
idxs[4] = idxs[3]
idxs[6] = idxs[7]

weights = idxs

# get which bin idxs belong …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy pandas dask

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

如何在python中自定义颜色条?

使用此代码,我不知道如何自定义颜色栏。这个网站上的颜色图不能满足我。

shade = m.contourf(Lon,Lat,TBB,np.arange(-90, -20, 10),extend='both',cmap=plt.cm.get_cmap('jet'))       
m.colorbar(shade)
Run Code Online (Sandbox Code Playgroud)

my_colorbar

我想用明显的颜色条绘制这样的图片。所以我该怎么做? 颜色条

python matplotlib colorbar colormap

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

如何按列计算每个唯一元素的出现次数?

我有一个二维数组,想要按列获取所有唯一数字的出现次数。

这是一个例子:

import numpy as np

a = np.array([[2,2,3,3],
              [2,3,3,3],
              [3,3,4,4]])
Run Code Online (Sandbox Code Playgroud)

结果应该是

[[2,1,0,0],
 [1,2,2,2],
 [0,0,1,1]])
Run Code Online (Sandbox Code Playgroud)

例如,第一行是2每列中出现的数字,0 表示2不在第三和第四列中。第二行是数字的出现3,最后一行是数字的出现4。简而言之,我想获取每个排序的唯一值的每列计数。

我尝试过np.unique(a, return_counts=True, axis=0),但得到了错误的结果:

(array([[2, 2, 3, 3],
        [2, 3, 3, 3],
        [3, 3, 4, 4]]),
 array([1, 1, 1]))
Run Code Online (Sandbox Code Playgroud)

python numpy numpy-ndarray

0
推荐指数
1
解决办法
64
查看次数

如何加快大数据创建Point GeoSeries的速度?

我有两个一维数组,想将它们组合成一个 Point GeoSeries,如下所示:

import numpy as np
from geopandas import GeoSeries
from shapely.geometry import Point

x = np.random.rand(int(1e6))
y = np.random.rand(int(1e6))
GeoSeries(map(Point, zip(x, y)))
Run Code Online (Sandbox Code Playgroud)

在我的笔记本电脑上大约需要 5 秒。是否可以加速GeoSeries的生成?

python pandas shapely geopandas

0
推荐指数
1
解决办法
48
查看次数