我一直在尝试处理大量数据(几GB),但我的个人计算机拒绝在合理的时间内完成,所以我想知道我有哪些选项?我使用的是python的csv.reader,但即使拿到 200,000行也很慢.然后我将这些数据迁移到一个sqlite数据库,该数据库检索结果的速度更快,而且没有使用如此多的内存但速度仍然是一个主要问题.
那么,再次......我有什么选择来处理这些数据?我想知道如何使用亚马逊的现场实例,这些实例似乎对此类目的有用,但也许还有其他解决方案可供探索.
假设现场实例是一个不错的选择,考虑到我之前从未使用它们,我想问一下我对它们的期望是什么?有没有人有经验使用它们做这种事情?如果是这样,您的工作流程是什么?我想我可以找到一些博客文章,详细介绍科学计算,图像处理等工作流程,但我没有找到任何东西,如果你能解释一下或者指出一些链接,我会很感激.
提前致谢.
我正在阅读Wes Mckinney的Python for Data Analysis,但我对这种数据操作感到惊讶.你可以看到这里的所有程序,但我会在这里总结一下.假设你有这样的东西:
In [133]: agg_counts = by_tz_os.size().unstack().fillna(0)
Out[133]:
a Not Windows Windows
tz 245 276
Africa/Cairo 0 3
Africa/Casablanca 0 1
Africa/Ceuta 0 2
Africa/Johannesburg 0 1
Africa/Lusaka 0 1
America/Anchorage 4 1
...
Run Code Online (Sandbox Code Playgroud)
tz表示时区和Not Windows和Windows是从原始数据中的用户代理提取的类别,因此我们可以从收集的数据中看到非洲/开罗有3个Windows用户和0个非Windows用户.
然后,为了获得"顶级整体时区",我们有:
In [134]: indexer = agg_counts.sum(1).argsort()
Out[134]:
tz
24
Africa/Cairo 20
Africa/Casablanca 21
Africa/Ceuta 92
Africa/Johannesburg 87
Africa/Lusaka 53
America/Anchorage 54
America/Argentina/Buenos_Aires 57
America/Argentina/Cordoba 26
America/Argentina/Mendoza 55
America/Bogota 62
...
Run Code Online (Sandbox Code Playgroud)
那么在那一点上,我会认为根据文档 …
在尝试计算二维numpy数组的标准偏差时,我发现了一个非常不寻常的错误.基本上,我这样做:
np.std(myarray, axis=1)
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误:
/home/user/env/local/lib/python2.7/site-packages/numpy/core/fromnumeric.pyc in std(a, axis, dtype, out, ddof, keepdims)
2588
2589 return _methods._std(a, axis=axis, dtype=dtype, out=out, ddof=ddof,
-> 2590 keepdims=keepdims)
2591
2592 def var(a, axis=None, dtype=None, out=None, ddof=0,
/home/user/env/local/lib/python2.7/site-packages/numpy/core/_methods.pyc in _std(a, axis, dtype, out, ddof, keepdims)
103
104 if isinstance(ret, mu.ndarray):
--> 105 ret = um.sqrt(ret, out=ret)
106 else:
107 ret = um.sqrt(ret)
AttributeError: sqrt
Run Code Online (Sandbox Code Playgroud)
在第105行中,ret定义为:
array([0.0757800982464383, 0.6065241443345735, 0.3162436337971689,
0.025387106329804794, 0.023465650294750118, 0.01234409423996419,
0.03686346121524665, 0.456152653196993, 0.15598749370862977,
0.0041977155187445945, 0.018816207536006213, 0.018011541017004237,
0.01046808236307669, 0.0037176987848958156, 0.004346127061033225,
0.06885161954332783, 0.004758430435294487, 0.010064124660786879,
0.08732648466448349, 0.14957009536890314, 0.007277246755033778, …Run Code Online (Sandbox Code Playgroud) 我在尝试加载RStudio中的"TSA"包时遇到此错误:
Loading required package: leaps
Loading required package: locfit
locfit 1.5-9.1 2013-03-22
Loading required package: mgcv
Loading required package: nlme
Error : .onAttach failed in attachNamespace() for 'mgcv', details:
call: formatDL(nm, txt, indent = max(nchar(nm, "w")) + 3)
error: incorrect values of 'indent' and 'width'
Error: package ‘mgcv’ could not be loaded
Run Code Online (Sandbox Code Playgroud)
我尝试重新安装mgcv和TSA,但它没有帮助.但是,当我从R命令行加载TSA时,它没有问题.
我该如何解决这个问题?
R版本3.0.2(2013-09-25)
RStudio 0.97.551,64位.
更新:
我在一个32位的RStudio安装中测试了这个问题,它运行得很完美.我不确定这里真正的罪魁祸首是什么.
我正在尝试转换这样的字符串"10|15|1,hi,0,-1,bye,2",前两个元素10|15意味着不同的东西1,hi,0,-1,bye,2.我想将它们彼此分开.实现这一目标的一种天真的方法是:
value = string.split("|");
var first = value[0];
var second = value[1];
var tobearray = value[2];
array = tobearray.split(",");
Run Code Online (Sandbox Code Playgroud)
(当然,如果你知道如何以更好的方式做到这一点,我会很高兴知道).但是,array是一个包含array[0]=1, array[1]=hi, array[2]=0, array[3]=-1等的数组.但是,我想获得一个二维数组,如
array[0][0]=1, array[0][1]=hi, array[0][2]=0
array[1][0]=-1, array[1][1]=bye, array[1][2]=2
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
谢谢
我有一个choiceField用于创建带有一些选项的选择字段.像这样的东西:
forms.py
class NewForm(forms.Form):
title = forms.CharField(max_length=69)
parent = forms.ChoiceField(choices = CHOICE)
Run Code Online (Sandbox Code Playgroud)
但是我希望能够在没有预定义元组的情况下创建选项(这是必需的ChoiceField).基本上,我需要访问request.user来根据每个用户填写一些选项标签,但我不知道是否有任何方法可以在forms.Form类中使用请求.
另一种方法是预填充NewFormvia 的实例:
views.py
form = NewForm(initial={'choices': my_actual_choices})
Run Code Online (Sandbox Code Playgroud)
但我必须添加一个虚拟选择来创建NewForm,my_actual_choices似乎无论如何都不起作用.
我认为解决这个问题的第三种方法是创建ChoiceField的子类并重新定义,save()但我不知道如何去做.
如何获得下图中显示的框的坐标?

fig, ax = subplots()
x = ax.annotate('text', xy=(0.5, 0), xytext=(0.0,0.7),
ha='center', va='bottom',
bbox=dict(boxstyle='round', fc='gray', alpha=0.5),
arrowprops=dict(arrowstyle='->', color='blue'))
Run Code Online (Sandbox Code Playgroud)
我试图检查这个对象的属性,但我找不到适合这个目的的东西.有一个属性get_bbox_patch()可以在正确的轨道上,但是,我得到一个不同的坐标系统(或与不同的属性相关联)
y = x.get_bbox_patch()
y.get_width()
63.265625
Run Code Online (Sandbox Code Playgroud)
非常感谢!
在pandas中,有几种方法可以在给定的窗口中操作数据(例如pd.rolling_mean或pd.rolling_std.)但是,我想设置窗口重叠,我认为这是一个非常标准的要求.例如,在下图中,您可以看到一个跨越256个样本并重叠128个样本的窗口.

如何使用Pandas或Numpy中包含的优化方法来做到这一点?
我注意到以下flexbox布局中Firefox和Chrome之间存在一些有趣的区别:
html,
body {
height: 100%;
min-height: 100%;
margin: 0px;
display: flex;
flex-direction: column;
}
header {
border: 1px solid #D3D3D3;
flex: 0 1 auto;
}
.row {
display: flex;
flex-direction: column;
flex: 1 0 auto;
flex-wrap: wrap;
}
.tab1 {
flex: 1 0 48%;
position: relative;
margin: 0.5em;
background-color: orange;
}
.tab2 {
flex: 1 0 48%;
position: relative;
margin: 0.5em;
background-color: blue;
}
.tab3 {
flex: 1 0 48%;
position: relative;
margin: 0.5em;
border: 1px solid lightgray;
background-color: …Run Code Online (Sandbox Code Playgroud)我正在对一个站点进行负载测试,并注意到我从Web服务器(在这种情况下,龙卷风Web服务器)和Chrome开发者工具收到的时间信息之间存在相当大的差异.Web服务器提供一个作为进程运行的服务(实际上,由主管管理的几个进程)在nginx后面.还有一个与此服务交互的Web界面.这个龙卷风Web服务器可以相当快地检索查询(平均30毫秒).但是,Chrome开发者工具显示的响应时间要慢得多(大约240毫秒).
每个查询都会检索一些信息,并需要查询其他资源(主要是图像).我认为这是造成这么大差异的主要原因,但我尝试使用curl并time_starttransfer测量172ms.
另一方面,对nginx使用此日志记录指令:
log_format timed_combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$request_time $upstream_response_time $pipe';
Run Code Online (Sandbox Code Playgroud)
我能够检查它request_time并且upstream_response_time实际上非常小(45毫秒).
可能是造成这种响应时间差异的原因是什么?
UPDATE
这是Firebug的截图:
我不认为我可以用有限的信息找出延迟.
更新2
我能够通过curl获得更好的信息.不过我不确定它是否准确:
time_namelookup: 0.000
time_connect: 0.062
time_appconnect: 0.000
time_pretransfer: 0.062
time_redirect: 0.000
time_starttransfer: 0.172
----------
time_total: 0.240
Run Code Online (Sandbox Code Playgroud)
从我所看到的,time_starttransfer - time_pretransfer = content_generation所以0.172 - 0.062 = 0.110s.但是,查看日志,Web服务器报告0.044秒,并且request_time从nginx同意(0.045秒).此外,time_connect在curl输出中,我认为应该是延迟,并不是那么大(0.062s).
有趣的是,time_starttransfer - time_connect*2 = 0.048它类似于nginx或龙卷风报道的时间(0.048 vs 0.044).但这种计算不应该是正确的.有谁知道什么是正确的方法来证明chrome开发人员工具/ curl与web服务器/ nginx的响应时间之间的差异?
python ×5
numpy ×2
pandas ×2
amazon-ec2 ×1
arrays ×1
choicefield ×1
css ×1
csv ×1
django ×1
dynamic ×1
firefox ×1
flexbox ×1
javascript ×1
matplotlib ×1
nginx ×1
performance ×1
r ×1
rstudio ×1
string ×1
timing ×1
tornado ×1