我正在尝试编写一个脚本,将交叉表查询中的数据复制到Postgres 8.4中的.csv文件中.我能够在psql命令行中运行该命令,但是当我将命令放在一个文件中并使用该-f选项运行它时,我收到语法错误.
这是我正在看的一个例子(从这个伟大的答案):
CREATE TEMP TABLE t (
section text
,status text
,ct integer
);
INSERT INTO t VALUES
('A', 'Active', 1), ('A', 'Inactive', 2)
,('B', 'Active', 4), ('B', 'Inactive', 5)
, ('C', 'Inactive', 7);
\copy (
SELECT * FROM crosstab(
'SELECT section, status, ct
FROM t
ORDER BY 1,2'
,$$VALUES ('Active'::text), ('Inactive')$$)
AS ct ("Section" text, "Active" int, "Inactive" int)
) TO 'test.csv' HEADER CSV
Run Code Online (Sandbox Code Playgroud)
然后我运行它并得到以下语法错误:
$ psql [system specific] -f copy_test.sql
CREATE TABLE
INSERT …Run Code Online (Sandbox Code Playgroud) 我有一个DataFrame,我正在寻找使用groupby,但我正在寻找一些不寻常的功能来聚合.我想让每组中的观察百分比高于某个阈值.例如,阈值为0的DataFrame
df = pd.DataFrame(dict(day=[1, 1, 1, 2, 2, 2, 3, 3, 3, 4], value=[0, 4, 0, 4, 0, 4, 0, 4, 0, 4]))
df
day value
0 1 0
1 1 4
2 1 0
3 2 4
4 2 0
5 2 4
6 3 0
7 3 4
8 3 0
9 4 4
Run Code Online (Sandbox Code Playgroud)
应该成为
df_group = pd.DataFrame(dict(day=[1, 2, 3, 4], value=[.33, .67, .33, 1.0]))
df_group
day value
0 1 0.33
1 2 0.67
2 3 …Run Code Online (Sandbox Code Playgroud) 我通常需要用给定的聚合函数(即求和,平均等)来总结具有不规则定时的时间序列.但是,我目前的解决方案似乎效率低,速度慢.
采取聚合功能:
function aggArray = aggregate(array, groupIndex, collapseFn)
groups = unique(groupIndex, 'rows');
aggArray = nan(size(groups, 1), size(array, 2));
for iGr = 1:size(groups,1)
grIdx = all(groupIndex == repmat(groups(iGr,:), [size(groupIndex,1), 1]), 2);
for iSer = 1:size(array, 2)
aggArray(iGr,iSer) = collapseFn(array(grIdx,iSer));
end
end
end
Run Code Online (Sandbox Code Playgroud)
请注意这两个array和groupIndex可2D.每个列array都是要聚合的独立系列,但groupIndex应将这些列合在一起(作为一行)以指定句点.
然后当我们给它带来一个不规则的时间序列时(注意第二个周期是一个基本周期更长),时间结果很差:
a = rand(20006,10);
b = transpose([ones(1,5) 2*ones(1,6) sort(repmat((3:4001), [1 5]))]);
tic; aggregate(a, b, @sum); toc
Elapsed time is 1.370001 seconds.
Run Code Online (Sandbox Code Playgroud)
使用分析器,我们可以发现该grpIdx行大约占执行时间的1/4(.28秒),iSer循环大约需要3/4(1.17秒)的总时间(1.48秒).
将此与期间无关紧要的情况相比较:
tic; cumsum(a); toc …Run Code Online (Sandbox Code Playgroud) 我正在努力理解朱莉娅中的参数类型创建.我知道我可以使用以下内容创建一个类型:
type EconData
values
dates::Array{Date}
colnames::Array{ASCIIString}
function EconData(values, dates, colnames)
if size(values, 1) != size(dates, 1)
error("Date/data dimension mismatch.")
end
if size(values, 2) != size(colnames, 2)
error("Name/data dimension mismatch.")
end
new(values, dates, colnames)
end
end
ed1 = EconData([1;2;3], [Date(2014,1), Date(2014,2), Date(2014,3)], ["series"])
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何指定values将如何键入.做我喜欢的事似乎合情合理
type EconData{T}
values::Array{T}
...
function EconData(values::Array{T}, dates, colnames)
...
Run Code Online (Sandbox Code Playgroud)
但是,这(和类似的尝试)只是产生和错误:
ERROR: `EconData{T}` has no method matching EconData{T}(::Array{Int64,1}, ::Array{Date,1}, ::Array{ASCIIString,2})
Run Code Online (Sandbox Code Playgroud)
我该如何指定类型values?
我有一些用基于类的单元测试框架编写的测试用例,我确保我正在进行的分析梯度计算与数值计算版本相当接近.问题是,对于我正在运行的测试用例,梯度的比例变化很大.这意味着虽然我想使用AbsTolName-Value对,但在某些情况下,测试通常会因我认为可接受的误差范围而RelTol失败,而在我认为可接受的情况下也会失败.例如,
expected = [1e7 1e-7];
actual = [1e7+1 1e-5];
AbsTol = abs(expected-actual)
RelTol = abs((expected-actual)./expected)
Run Code Online (Sandbox Code Playgroud)
我认为这里的第一个元素是满足测试的,因为它在相对方面非常接近,而第二个元素在这里满足测试,因为它的绝对值接近,但我认为没有办法测试两个元素是否满足.我知道我可以在外面进行比较verifyEqual,但这似乎是因为丢失了测试框架中包含的漂亮诊断.
有没有办法创建一个单元测试,我可以指定我正在考虑逐个元素比较哪个 AbsTol或RelTol满足?
我在Matlab 2014b中有一个简单的情节.例如,为了这个例子:
b1 = bar(1:12, rand(12,1));
ax1 = gca;
Run Code Online (Sandbox Code Playgroud)
使用XTickLabels属性时会弹出以下警告消息:
xticklabels = ax1.XTickLabels;
Warning: The XTickLabels property will be removed in a future release.
Run Code Online (Sandbox Code Playgroud)
此时使用的首选属性是什么?
我的单元阵列S <1x4cell>包含4门单元阵列(<108x1cell>,<106x1cell>,<111x1cell>,<115x1cell>),其中每个都包含大约一百文件的路径列表.
我想合并它们以便获得一个包含所有路径的单个单元格.这样做有一个功能吗?
我有一个很大的3d numpy数组,我想保留.我的第一种方法只是使用泡菜,但这似乎导致了一个解释不佳的错误.
test_rand = np.random.random((100000,200,50))
with open('models/test.pkl', 'wb') as save_file:
pickle.dump(test_rand, save_file, -1)
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-18-511e30b08440> in <module>()
1 with open('models/test.pkl', 'wb') as save_file:
----> 2 pickle.dump(test_rand, save_file, -1)
3
C:\Users\g1dak02\AppData\Local\Continuum\Anaconda\lib\pickle.pyc in dump(obj, file, protocol)
1368
1369 def dump(obj, file, protocol=None):
-> 1370 Pickler(file, protocol).dump(obj)
1371
1372 def dumps(obj, protocol=None):
C:\Users\g1dak02\AppData\Local\Continuum\Anaconda\lib\pickle.pyc in dump(self, obj)
222 if self.proto >= 2:
223 self.write(PROTO + chr(self.proto))
--> 224 self.save(obj)
225 self.write(STOP)
226
C:\Users\g1dak02\AppData\Local\Continuum\Anaconda\lib\pickle.pyc in save(self, obj)
329
330 …Run Code Online (Sandbox Code Playgroud) matlab ×4
python ×2
arrays ×1
cell ×1
crosstab ×1
csv ×1
julia ×1
merge ×1
numpy ×1
pandas ×1
pickle ×1
postgresql ×1
time-series ×1
unit-testing ×1