我的数据带有UTC时间戳.我想将此时间戳的时区转换为"US/Pacific",并将其作为分层索引添加到pandas DataFrame中.我已经能够将时间戳转换为索引,但是当我尝试将其添加回DataFrame时,它会丢失时区格式,无论是作为列还是作为索引.
>>> import pandas as pd
>>> dat = pd.DataFrame({'label':['a', 'a', 'a', 'b', 'b', 'b'], 'datetime':['2011-07-19 07:00:00', '2011-07-19 08:00:00', '2011-07-19 09:00:00', '2011-07-19 07:00:00', '2011-07-19 08:00:00', '2011-07-19 09:00:00'], 'value':range(6)})
>>> dat.dtypes
#datetime object
#label object
#value int64
#dtype: object
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试直接转换系列,我会遇到错误.
>>> times = pd.to_datetime(dat['datetime'])
>>> times.tz_localize('UTC')
#Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# File "/Users/erikshilts/workspace/schedule-detection/python/pysched/env/lib/python2.7/site-packages/pandas/core/series.py", line 3170, in tz_localize
# raise Exception('Cannot tz-localize non-time series')
#Exception: Cannot tz-localize non-time series
Run Code Online (Sandbox Code Playgroud)
如果我将其转换为索引,那么我可以将其作为时间序列进行操作.请注意,索引现在具有太平洋时区.
>>> times_index = …Run Code Online (Sandbox Code Playgroud) 我想从ggplot2创建的网格对象中删除layer(在本例中为结果geom_ribbon).一旦它已经成为对象的一部分,有没有办法可以删除它?
library(ggplot2)
dat <- data.frame(x=1:3, y=1:3, ymin=0:2, ymax=2:4)
p <- ggplot(dat, aes(x=x, y=y)) + geom_ribbon(aes(ymin=ymin, ymax=ymax), alpha=0.3)
+ geom_line()
# This has the geom_ribbon
p
# This overlays another ribbon on top
p + geom_ribbon(aes(ymin=ymin, ymax=ymax, fill=NA))
Run Code Online (Sandbox Code Playgroud)
我希望这个功能允许我在不那么复杂的情节之上构建更复杂的图.我正在使用返回网格对象的函数,然后在完全组装后打印出最终的图.基础图有一条线,geom_ribbon周围有相应的误差条().较复杂的绘图将具有多条线,并且多个重叠geom_ribbon对象分散注意力.我想从多行的图中删除它们.此外,我将能够使用facet或其他ggplot2功能快速创建替代版本.
编辑:接受@ mnel的答案,因为它有效.现在我需要确定如何动态地访问geom_ribbon层,这是在SO问题捕获这里.
编辑2:为了完整性,这是我为解决这个问题而创建的函数:
remove_geom <- function(ggplot2_object, geom_type) {
layers <- lapply(ggplot2_object$layers, function(x) if(x$geom$objname == geom_type) NULL else x)
layers <- layers[!sapply(layers, is.null)]
ggplot2_object$layers <- layers
ggplot2_object
}
Run Code Online (Sandbox Code Playgroud)
编辑3: …
我正在创建一个自定义R包存储库,并希望复制CRAN存档结构,从而将旧版本的包存储在src/contrib/Archive/packageName/目录中.我想install_version在这里使用函数devtools(source here),但该函数依赖于具有类似CRAN的归档结构而不是所有的软件包版本src/contrib/.
是否有任何R包存储库管理工具可以帮助创建此目录结构和其他相关任务(例如更新Archive.rds文件)?
如果管理工具处理type存储库端的包逻辑以便我可以在Linux服务器上使用与本地Mac上相同install.packages()或install_version()代码(也就是说我不必使用type="both"或type="source"在本地安装苹果电脑).
我正在使用Vim-R-plugin和Vim为我的R代码提供语法高亮.常规缩进样式在括号开头的函数中对齐参数.我想将其更改为更像花括号内的代码,其中新行缩进两个空格而不是用花括号内联.
我的函数名称往往是冗长的,默认缩进样式会将所有参数一直推到屏幕右侧.
以下是一些例子:
# Default indentation style
result <- fun(
par1 = "abc",
par2 = "def",
par3 = 3
)
Run Code Online (Sandbox Code Playgroud)
所需的样式模仿for循环和函数定义的缩进样式.
# Desired indentation style
result <- fun(
par1 = "abc",
par2 = "def",
par3 = 3
)
# Similar to for loop indentation
for(i in 1:10) {
print(i)
}
# ... and function definitions
fun <- function(par1 = 1) {
print(par1 + 1)
}
Run Code Online (Sandbox Code Playgroud)
我查看了Vim-R-plugin代码,但它太密集了,我无法理解.有没有办法让我改变它?
作为从我已经创建的绘图(此处为 SO链接)中删除特定geom的努力的一部分,我想动态确定ggplot2对象的每个层的geom类型.
假设我不知道添加图层的顺序,有没有办法动态查找具有特定geom的图层?如果我像下面那样打印出图层,我可以看到图层存储在列表中,但我似乎无法访问geom类型.
library(ggplot2)
dat <- data.frame(x=1:3, y=1:3, ymin=0:2, ymax=2:4)
p <- ggplot(dat, aes(x=x, y=y)) + geom_ribbon(aes(ymin=ymin, ymax=ymax), alpha=0.3) + geom_line()
p$layers
[[1]]
mapping: ymin = ymin, ymax = ymax
geom_ribbon: na.rm = FALSE, alpha = 0.3
stat_identity:
position_identity: (width = NULL, height = NULL)
[[2]]
geom_line:
stat_identity:
position_identity: (width = NULL, height = NULL)
Run Code Online (Sandbox Code Playgroud)
我不熟悉原型对象,我从原型文档中尝试的东西似乎不起作用(例如p$layers[[1]]$str()).
感谢下面的答案,我能够提出一个动态删除图层的功能:
remove_geom <- function(ggplot2_object, geom_type) {
layers <- lapply(ggplot2_object$layers, function(x) if(x$geom$objname == geom_type) NULL else x)
layers <- layers[!sapply(layers, …Run Code Online (Sandbox Code Playgroud) 我的训练过程使用tfrecord格式表示训练和评估数据集.
我测试了阅读器的基准,只有8000记录/秒.和io速度(参见iotop命令)只需400KB-500KB/s.
我在这里使用protobuf的cpp版本
如果可能的话,提供一个可重复性最小的示例(我们通常没有时间阅读数百行代码)
def read_and_decode(filename_queue):
reader = tf.TFRecordReader()
_, serialized_example = reader.read(filename_queue)
return serialized_example
serialized_example = read_and_decode(filename_queue)
batch_serialized_example = tf.train.shuffle_batch(
[serialized_example],
batch_size=batch_size,
num_threads=thread_number,
capacity=capacity,
min_after_dequeue=min_after_dequeue)
features = tf.parse_example(
batch_serialized_example,
features={
"label": tf.FixedLenFeature([], tf.float32),
"ids": tf.VarLenFeature(tf.int64),
"values": tf.VarLenFeature(tf.float32),
})
Run Code Online (Sandbox Code Playgroud)
您尝试了哪些其他尝试的解决方案?
我尝试在tf.train.shuffle_batch中设置num_threads但不起作用.
似乎当设置为2个线程时,它工作在8000records/s,当放大线程数时,它会变慢.(我删除所有花费cpus的操作.只需读取数据.)
我的服务器是24核心cpu.
我正在编写一个使用roxygen2自动对我的包进行氧气化的脚本.我希望它是可执行的,这样它就可以成为准备和安装软件包的一个更大的脚本的一部分,但由于某些原因我不能使它与Rscript一起工作.
这是代码:
#!/usr/bin/env Rscript
library(roxygen2)
roxygenize('.', copy=FALSE)
Run Code Online (Sandbox Code Playgroud)
如果我启动交互式R会话或使用R CMD BATCH提交代码,这可以正常工作.但是,如果我通过Rscript将脚本作为可执行文件直接运行,我得到此输出和错误(无论脚本是在当前目录还是bin中,我都会收到错误).
bin/roxygenize.R
Loading required package: digest
Warning message:
package 'roxygen2' was built under R version 2.13.2
Error in parse.files(r_files) : could not find function "setPackageName"
Calls: roxygenize -> parse.files
Execution halted
Run Code Online (Sandbox Code Playgroud)
看起来setPackageName在基数R中,所以我无法弄清楚为什么它不在那里.另外,我在许多其他情况下使用Rscript,这似乎是唯一失败的地方.
任何帮助深表感谢.
我有坐标,所有这些都应该位于DC中,但是我无法弄清楚如何将它们从NAD 83转换为R中的纬度和经度.我正在使用spTransform()rgdal包中的函数并得到关于不符合的错误数据.
library(rgdal)
nad83_coords <- data.frame(x=c(396842.6, 397886.9, 398315.5, 398154.3, 398010.3), y=c(140887.1, 139847.0, 138743.9, 139534.5, 138697.3))
coordinates(nad83_coords) <- c('x', 'y')
proj4string(nad83_coords) <- CRS("+init=epsg:4269")
Error in `proj4string<-`(`*tmp*`, value = <S4 object of class "CRS">) :
Geographical CRS given to non-conformant data: 398315.5 140887.1
Run Code Online (Sandbox Code Playgroud)
proj4strings的其他组合产生相同的错误.我相信错误是因为坐标太大,但我不确定为什么会这样.坐标文档如下:
值在马里兰州立方米米NAD 83地图投影中.
我对绘图和投影很新,任何帮助都表示赞赏.
我想以有效的方式将Java双打的Java列表(java.util.List [java.lang.Double])转换为Scala双精度的Scala列表(List [Double]).
目前我正在映射将每个Double值转换为Scala Double的列表.我不想映射每个值,我正在寻找一种更有效的方法.
import collection.JavaConversions._
import collection.mutable.Buffer
val j: java.util.List[java.lang.Double] = Buffer(new java.lang.Double(1.0), new java.lang.Double(2.0))
val s: List[Double] = ...
Run Code Online (Sandbox Code Playgroud)
我已经看过来自Scala的文档 - > Java,但没有太多其他方式.
我正在使用tensorflow 0.10,我正在对官方HowTo中读取数据的示例进行基准测试.本文介绍了使用相同的MNIST示例将数据移动到tensorflow的不同方法.
我对结果感到惊讶,我想知道是否有人有足够的低层次理解来解释正在发生的事情.
在HowTo中,基本上有3种方法可以读入数据:
Feeding:在python中构建迷你批处理并传递它 sess.run(..., feed_dict={x: mini_batch})Reading from files:使用tf操作打开文件并创建小批量.(在python中绕过处理数据.)Preloaded data:将所有数据加载到单个tf变量或常量中,并使用tf函数将其分解为小批量.变量或常量固定到cpu,而不是gpu.我用来运行基准测试的脚本位于tensorflow中:
Feeding:examples/tutorials/mnist/fully_connected_feed.pyReading from files:examples/how_tos/reading_data/convert_to_records.py和examples/how_tos/reading_data/fully_connected_reader.pyPreloaded data (constant):examples/how_tos/reading_data/fully_connected_preloaded.pyPreloaded data (variable):examples/how_tos/reading_data/fully_connected_preloaded_var.py我没有修改这些脚本,除了最后两个因为它们崩溃 - 至少版本0.10 - 除非我添加一个额外的sess.run(tf.initialize_local_variables()).
在GTX1060上运行100个小批量100个示例的时间:
Feeding: ~0.001 sReading from files: ~0.010 sPreloaded data (constant): ~0.010 sPreloaded data (variable): ~0.010 s这些结果对我来说非常令人惊讶.我Feeding原本期望它是最慢的,因为它在python中几乎完成所有操作,而其他方法使用较低级别的tensorflow/C++来执行类似的操作.这与我的预期完全相反.有谁知道发生了什么?
我在服务器上有一个共享的R包目录,以便为所有用户维护一致的包版本.当有人试图安装另一个用户最初安装的新版本的软件包时,或者当该软件包在其他地方加载时,他们会尝试安装它.在这些实例中,R在共享包目录中创建00LOCK-PackageName目录,并且权限使得安装程序不具有对目录中的许多文件的写访问权.这需要几个人chmod-ind目录,以允许它被删除,或让我们的系统管理员做同样的事情.
这是一个特别严重的问题,因为我们使用R包来维护和部署我们的报告基础架构.这是我们不断更新和部署到我们的共享服务器的东西.
是否有促进共享R包管理的设置或程序?任何一般提示?
我试图用directlabels如图所示将标签应用于套索情节在这里.我可以在页面上放置标签,但无法更改大小.在列表中传递其他参数允许我更改其他元素,但不能更改文本大小.
require(ggplot2)
require(directlabels)
dat_test <- data.frame(x=1:10, value=c(sin(1:10), cos(1:10), tan(1:10)), fun=rep(c('sin', 'cos', 'tan'), each=10))
p <- ggplot(dat_test, aes(x=x, y=value, group=fun, colour=fun)) + geom_line()
direct.label(p, 'last.qp') # adds labels
direct.label(p, list('last.qp', size=2)) # does not work, same as above
direct.label(p, list('last.qp', rot=30)) # correct rotates text
Run Code Online (Sandbox Code Playgroud)
是否可以更改直接标签的文字大小?
我的包中的一个函数在构建时拒绝添加到包源,然后在运行R CMD检查时失败.
我的包位于github 这里.文件compute_latitude_and_longitude.R当然存在于R目录中:
$ ls R
calculate_latitude_and_longitude.R clean_coordinates_XBLOCK.R clean_crime_data.R
load_crime_data_by_ward.R clean_coordinates.R
clean_coordinates_YBLOCK.R dccrimedata-package.R
Run Code Online (Sandbox Code Playgroud)
我能够构建包,但由于某种原因,构建不包括文件calculate_latitude_and_longitude.R.我可以通过浏览tar球中的R目录来验证它是否跳过此文件.
安装或运行后,R CMD check dccrimedata_0.1.tar.gz我在00install.log文件中收到以下错误:
Error in .install_package_code_files(".", instdir) :
files in 'Collate' field missing from '/Users/erikshilts/workspace/dc_crime_data/dccrimedata.Rcheck/00_pkg_src/dccrimedata/R':
calculate_latitude_and_longitude.R
ERROR: unable to collate and parse R files for package ‘dccrimedata’
Run Code Online (Sandbox Code Playgroud)
我已经尝试重命名该函数,创建一个新文件,注释掉行,删除roxygen标签等,但没有一个有助于将该函数放入包中.
知道出了什么问题吗?
该函数的完整代码如下:
#' Calculate Latitude and Longitude
#'
#' Calculates latitude and longitude from XBLOCK AND YBLOCK coordinates.
#' The coordinates are given in the NAD 83 projection, Maryland state plane,
#' with …Run Code Online (Sandbox Code Playgroud)