我正在处理大约20,000,000行和4列的大型数据集。不幸的是,我机器上的可用内存(〜16GB)不足。
示例(时间是自午夜以来的秒数):
Date Time Price Vol
0 20010102 34222 51.750 227900
1 20010102 34234 51.750 5600
2 20010102 34236 51.875 14400
Run Code Online (Sandbox Code Playgroud)
然后,将数据集转换为适当的时间序列对象:
Date Time Price Vol
2001-01-02 09:30:22 20010102 34222 51.750 227900
2001-01-02 09:30:34 20010102 34234 51.750 5600
2001-01-02 09:30:36 20010102 34236 51.875 14400
2001-01-02 09:31:03 20010102 34263 51.750 2200
Run Code Online (Sandbox Code Playgroud)
要释放内存,我想删除多余的“日期和时间”列。我用.drop()方法来做,但是没有释放内存。我也尝试过gc.collect()事后打电话,但这也没有帮助。
这是我用来处理所描述动作的代码。该del部件释放内存,但不释放drop部件。
# Store date and time components
m, s = divmod(data.Time.values, 60)
h, m = divmod(m, 60)
s, m, h = …Run Code Online (Sandbox Code Playgroud) 我有一个包含一些值的mx1数组a.此外,我有一个nxk数组,比如b,包含0到m之间的索引.
例:
a = np.array((0.1, 0.2, 0.3))
b = np.random.randint(0, 3, (4, 4))
Run Code Online (Sandbox Code Playgroud)
对于b中的每个索引值,我想从a获得相应的值.我可以用循环来做到这一点:
c = np.zeros_like(b).astype('float')
n, k = b.shape
for i in range(n):
for j in range(k):
c[i, j] = a[b[i, j]]
Run Code Online (Sandbox Code Playgroud)
是否有任何内置的numpy功能或技巧更优雅?这种方法对我来说有点愚蠢.PS:最初,a和b是Pandas对象,如果有帮助的话.
我在下表中给出了一个映射:
Input Output
<4 0
5 0.4
6 0.5
7 0.65
8 0.75
9 0.85
>=10 1
Run Code Online (Sandbox Code Playgroud)
到现在为止,我写了3个版本:
k1 <- function(h) {
if (h <= 4) { k <- 0
} else if (h == 5) { k <- 0.4
} else if (h == 6) { k <- 0.5
} else if (h == 7) { k <- 0.65
} else if (h == 8) { k <- 0.75
} else if (h == 9) { k <- 0.85 …Run Code Online (Sandbox Code Playgroud) 我想替换数据类实例的属性,类似于namedtuple._replace(),即制作原始对象的更改副本:
from dataclasses import dataclass
from collections import namedtuple
U = namedtuple("U", "x")
@dataclass
class V:
x: int
u = U(x=1)
u_ = u._replace(x=-1)
v = V(x=1)
print(u)
print(u_)
print(v)
Run Code Online (Sandbox Code Playgroud)
返回:
U(x=1)
U(x=-1)
V(x=1)
Run Code Online (Sandbox Code Playgroud)
如何在数据类对象中模仿此功能?
我最近开始将我的自托管服务迁移到docker. 为了简化维护,我使用docker-compose. 一些容器相互依赖,另一些是独立的。
有了 20 多个容器和近 500 行代码,可维护性现在已经下降。
有没有保留一个大docker-compose文件的好方法?
我想rugarch在运行 Red Hat 7.3 和 R 版本 3.3.1 的系统上安装该库。不幸的是,我没有机器的管理员权限。
rugarch由于编译错误,安装失败multicool。运行install.packages('multicool')以错误消息终止:
compilation aborted for multicool.cpp (code 2)
make: *** [multicool.o] Error 2
ERROR: compilation failed for package ‘multicool’
Run Code Online (Sandbox Code Playgroud)
这是完整的输出:
> install.packages('multicool')
Installing package into ‘/pfs/data1/home/kn/kn_kn/kn_pop260093/R/x86_64-pc-linux-gnu-library/3.3’
(as ‘lib’ is unspecified)
trying URL 'https://cloud.r-project.org/src/contrib/multicool_0.1-10.tar.gz'
Content type 'unknown' length 11387 bytes (11 KB)
==================================================
downloaded 11 KB
* installing *source* package ‘multicool’ ...
** package ‘multicool’ successfully unpacked and MD5 sums checked
** libs
icpc -I/opt/bwhpc/common/math/R/3.3.1-mkl-11.2.3-intel-15.0_O2_pragma_noopt/lib64/R/include -DNDEBUG …Run Code Online (Sandbox Code Playgroud) 我想在远程服务器上执行一行:
ssh user@machine 'for i in 1 2; do echo "$i"; done'
Run Code Online (Sandbox Code Playgroud)
如何使用命令通过R将此命令发送到服务器system()?问题是system()需要一个用引号括起来的字符串,如果我引用上面的行,那么引号会相互抵消.
我使用rsync备份数据.现在我在备份包含逗号和空格字符的文件夹时遇到了麻烦.我使用一个带有源名称的数组:
dirs=(
/home/user/Desktop
...
/home/user/foo, bar
)
Run Code Online (Sandbox Code Playgroud)
最后一个条目的正确语法是什么?
python ×3
r ×3
pandas ×2
bash ×1
compilation ×1
docker ×1
numpy ×1
python-3.7 ×1
redhat ×1
rsync ×1