我正在运行一个循环嵌套字典的基本脚本,从每个记录中抓取数据,并将其附加到Pandas DataFrame.数据看起来像这样:
data = {"SomeCity": {"Date1": {record1, record2, record3, ...}, "Date2": {}, ...}, ...}
Run Code Online (Sandbox Code Playgroud)
总共有几百万条记录.脚本本身看起来像这样:
city = ["SomeCity"]
df = DataFrame({}, columns=['Date', 'HouseID', 'Price'])
for city in cities:
for dateRun in data[city]:
for record in data[city][dateRun]:
recSeries = Series([record['Timestamp'],
record['Id'],
record['Price']],
index = ['Date', 'HouseID', 'Price'])
FredDF = FredDF.append(recSeries, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
然而,这种情况非常缓慢.在我寻找一种并行化的方法之前,我只是想确保我没有遗漏一些明显会让它表现得更快的东西,因为我对Pandas来说还是一个新手.
在下面的脚本中,我读了许多点对并在地图上绘制线条.我正在使用ggmap从谷歌中提取地图来绘制这条线:
source('./library/latlong2state.R')
library(maps)
library(mapproj)
library(mapdata)
library(geosphere)
library(ggmap)
fileName = "_CanadaData/CanadaHospitalComplete.csv"
getLineColor <- function(val) {
pal <- colorRampPalette(lineColours)
colors <- pal(80)
val.log <- log(val)
if (val > 50) {
col <- colors[80]
} else {
colindex <- max(1, round( 80 * val / 50))
col <- colors[colindex]
}
return(col)
}
# Load the data
location <- read.csv(fileName, stringsAsFactors=FALSE)
# Omit locations that are not on the map of focus (not needed for city maps unless they are on a border)
location$state …Run Code Online (Sandbox Code Playgroud) 我有一些跨越大约 8 个月的房价数据,并跟踪房屋上市直至售出的价格。我想填充中间的数据中的几个空白,但我想保留每个末尾的 NaN 不变。
举一个简单的例子,假设我们有 house1,它在“第 4 天”以 200000 的价格上市,在“第 9 天”以 190000 的价格出售。我们有 house2 在第 1 天到第 12 天保持在 180000 并且在那个时间窗口内不出售。但是,第 6 天和第 7 天出了点问题,我丢失了数据:
house1 = [NaN, NaN, NaN, 200000, 200000, NaN, NaN, 200000, 190000, NaN, NaN, NaN]
house2 = [180000, 180000, 180000, 180000, 180000, NaN, NaN, 180000, 180000, 180000, 180000, 180000]
Run Code Online (Sandbox Code Playgroud)
现在想象一下,这些是 Pandas Dataframes 中按日期索引的列,而不是常规数组。
问题是,我通常用来填补这里空白的函数是DataFrame.fillna()使用 backfill 或 ffill 方法。如果我使用填充,house1 会返回:
house1 = [NaN, NaN, NaN, 200000, 200000, 200000, 200000, 200000, 190000, 190000, 190000, …Run Code Online (Sandbox Code Playgroud) 我正在尝试解析R中的以下XML文件:http://reports.ieso.ca/public/GenOutputCapability/PUB_GenOutputCapability_20140517_v24.xml
到目前为止,我的脚本很简单:
file <- "http://reports.ieso.ca/public/GenOutputCapability/PUB_GenOutputCapability_20140517_v24.xml"
doc <- xmlTreeParse(file, useInternal=TRUE)
rootNode <- xmlRoot(doc)
xpathSApply(rootNode, "//GeneratorName", xmlValue)
Run Code Online (Sandbox Code Playgroud)
每当我运行它时,我的输出只是一个空列表.
将其用于其他XML文件,我可以提取值没问题,但对于这个特定的文件,我无法提取任何内容.我已经尝试了许多不同的节点,大写,使用useInternal = FALSE,以及我可以做的任何其他组合,但仍然没有运气.
我可以使用rootNode [["IMODocBody"]] [["Date"]]语法访问部件以获取日期,例如,因此我知道文件已加载.有任何想法吗?