小编Dod*_*dge的帖子

我应该何时使用setDT()而不是data.table()来创建data.table?

我很难掌握setDT()功能的本质.当我在SO上阅读代码时,我经常遇到setDT()创建data.table的用法.当然,data.table()无处不在的使用.我觉得我领悟扎实的性质data.table()还没有相关的setDT()逃避我.?setDT告诉我这个:

setDT通过引用将列表(包括命名和未命名)和data.frames转换为data.tables .

以及:

data.table说法,所有set*函数都通过引用来改变它们的输入.也就是说,除了临时工作存储器之外,根本不会复制任何副本,而临时工作存储器与一列一样大.

所以这让我觉得我应该只setDT()用来制作一个data.table,对吗?是setDT()一个简单的列表data.table转换器?

library(data.table)

a <- letters[c(19,20,1,3,11,15,22,5,18,6,12,15,23)]
b <- seq(1,41,pi)
ab <- data.frame(a,b)
d <- data.table(ab)
e <- setDT(ab)

str(d)
#Classes ‘data.table’ and 'data.frame': 13 obs. of  2 variables:
# $ a: Factor w/ 12 levels "a","c","e","f",..: 9 10 1 2 5 7 11 3 8 4 ...
# $ b: num  1 4.14 7.28 …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

如何在不使用strptime的情况下转换data.table中的模糊日期时间列?

我的data.table有一个"模糊"日期时间格式的列:"12/1/2016 15:30".如何将此日期时间转换为data.table中识别的格式R,而不使用strptime()并获取最初转换为POSIXlt的警告消息.这个过程有效,但警告让我觉得还有另一种方法.

我的数据表:

my_dates <- c("12/1/2016 15:30", "12/1/2016 15:31", "12/1/2016 15:32")
this <- c("a", "b", "c")
that <- c(1, 2, 3)

my_table <- data.table(my_dates, this, that)

my_table
   my_dates          this that
1: 12/1/2016 15:30    1    a
2: 12/1/2016 15:31    2    b
3: 12/1/2016 15:32    3    c

my_table[, my_dates := as.POSIXct(strptime(my_dates, "%m/%d/%Y %H:%M"))]

Warning message:
In strptime(my_dates, "%m/%d/%Y %H:%M") :
POSIXlt column type detected and converted to POSIXct. We do not
recommend use of POSIXlt at all because it uses …
Run Code Online (Sandbox Code Playgroud)

datetime r data.table

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

为所有用户安装一个 python 包,而不会搞乱系统 python 安装

我想将Pipenv安装到一台机器上,以便该机器的所有用户都可以使用它,但我也不想弄乱系统 Python 设置。

我可以运行,sudo pip install pipenv但它会继续更改系统 Python 中安装的一堆软件包的版本(我使用的是 Scientific Linux 7.4)。我宁愿让系统 Python 完全与我的 linux 发行版提供的一样(因为我已经读到,弄乱系统 Python 是一个坏主意,因为核心系统工具可能以某种方式依赖它)。

我可以,pip install --user pipenv但只有我的用户可以使用 pipenv。

所以两个问题:

1. 我是否不必要地害怕修改系统 Python?在系统 Python 中更新包实际上可以吗?

2. 如果我的谨慎是有道理的,pip install对于所有用户来说,在不修改系统 Python 的情况下,最好的方法是什么(例如 Pipenv 之类的工具)?

理想情况下,我希望用户能够通过键入来使用 pipenv pipenv,而不必执行位于晦涩目录中的文件。

PS 理想的情况是 pipenv 可以作为我的发行版中的“安全”包提供,但可惜事实并非如此。我也知道 virtualenvs,但我的印象是它们更多地用于特定项目的开发和部署,并不一定适用于系统范围的工具(尽管我准备对此进行纠正)。

python pipenv

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

为什么type(object)返回&lt;class'type'&gt;而不是&lt;class'object'&gt;?

我在REPL中玩耍,发现关于内置object基类的行为使我感到困惑:

>>> object
<class 'object'>
>>> type(object)
<class 'type'>
Run Code Online (Sandbox Code Playgroud)

为什么object在这种情况下不是<class 'object'>呢?这里发生了什么事?

python python-3.x

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

为什么在这个产生小倍数的代码中需要 numpy.ravel() ?

我找到了一些代码来生成一组小的倍数,它运行良好。

fig, axes = plt.subplots(6,3, figsize=(21,21))
fig.subplots_adjust(hspace=.3, wspace=.175)
for ax, data in zip(axes.ravel(), clean_sets):
    ax.plot(data.ETo, "o")
Run Code Online (Sandbox Code Playgroud)

该行for ax, data in zip(axes.ravel(), clean_sets):contians.ravel()但我不明白这实际上在做什么或为什么有必要。

如果我查看文档,我会发现以下内容:

返回一个连续的扁平数组。

返回包含输入元素的一维数组。仅在需要时制作副本。

我猜对应于轴的返回值plt.subplot()是一个无法迭代的多维数组,但我真的不确定。一个简单的解释将不胜感激。


.ravel()在这种情况下使用的目的是什么?

python numpy matplotlib

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

标签 统计

python ×3

data.table ×2

r ×2

datetime ×1

matplotlib ×1

numpy ×1

pipenv ×1

python-3.x ×1