我有一个庞大的时间序列数据熊猫数据帧.
我目前操纵这个数据帧来创建一个新的,更小的数据帧,每10行滚动平均.即滚动窗口技术.像这样:
def create_new_df(df):
features = []
x = df['X'].astype(float)
i = x.index.values
time_sequence = [i] * 10
idx = np.array(time_sequence).T.flatten()[:len(x)]
x = x.groupby(idx).mean()
x.name = 'X'
features.append(x)
new_df = pd.concat(features, axis=1)
return new_df
Run Code Online (Sandbox Code Playgroud)
要测试的代码:
columns = ['X']
df_ = pd.DataFrame(columns=columns)
df_ = df_.fillna(0) # with 0s rather than NaNs
data = np.array([np.arange(20)]*1).T
df = pd.DataFrame(data, columns=columns)
test = create_new_df(df)
print test
Run Code Online (Sandbox Code Playgroud)
输出:
X
0 4.5
1 14.5
Run Code Online (Sandbox Code Playgroud)
但是,我希望函数使用具有50%重叠的滑动窗口来创建新数据帧
所以输出看起来像这样:
X
0 4.5
1 9.5
2 14.5
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点? …
好的,超级基本的Backbone问题 - 我一直在寻找这个问题,但是尽管有很多类似的问题,我还是太慢了.请放心,我感到很惭愧.
无论如何,足够的自我鞭 - - 为什么不渲染?
var app = app || {};
app.Option = Backbone.Model.extend({
url: 'http://localhost:4711/api'
//This url contains the following JSON: {"title": "Blahblah", "author": "Luke Skywalker"};
});
app.View = Backbone.View.extend({
el: 'body',
initialize: function(){
this.model.fetch();
this.model.bind('change', this.render(), this);
},
render: function(){
this.$el.html(this.model.get('title'));
return this;
}
});
$(function() {
var option = new app.Option();
this.homeView = new app.View({ //Tried changing this to a standard var declaration but didn't work
model: option
});
this.homeView.render();
});
Run Code Online (Sandbox Code Playgroud)
所以我期待在屏幕上看到JSON"Blahblah",但我什么都没看到.JSON正在被正确获取(我可以在firebug控制台中看到成功的GET请求),我想我确保在尝试渲染数据之前获取数据...
那有什么不对?控制台给我这个错误:"TypeError :(中间值).callback.call不是函数"
谢谢!
我有一个机器学习算法,它涉及一系列步骤,例如清理数据、准备训练数据等。每个步骤都存储在 python 类的单独方法中。我想知道构建我的类的最佳实践方法是什么,以便在类实例化时自动执行这些步骤。
这是我所做的(代码是说明性的,但这种方法适用于真正的算法)。感觉有点笨重。有没有更优雅的方式?
class Kaggle():
"""
An algorithm
"""
def __init__( self ):
self.bar = 1
def step_one( self, some_text_data ):
self.bar = 1 ** 2
# Do some data cleaning
# return processed data
def step_two( self ):
foo = step_one(baz)
# do some more processing
def step_three( self ):
bar = step_two()
# output results
def run( self ):
self.step_one()
self.step_two()
self.step_three()
if __name__ == "__main__":
kaggle = Kaggle()
kaggle.run()
Run Code Online (Sandbox Code Playgroud) 我已经设置了 Django (1.8) 管理员以允许超级用户以交互方式创建新用户。我的用户模型是使用自定义的AbstractUser,这意味着我的管理文件如下所示:
管理员.py
\nfrom django.contrib import admin\nfrom app.models import CPRUser\n\nclass UserAdmin(admin.ModelAdmin):\n\n model = CPRUser\n extra = 1\n\nadmin.site.register(CPRUser, UserAdmin)\nRun Code Online (Sandbox Code Playgroud)\n这是模型:
\nclass CPRUser(AbstractUser):\n student = models.PositiveIntegerField(verbose_name=_("student"),\n default=0,\n blank=True)\n saved = models.IntegerField(default=0)\nRun Code Online (Sandbox Code Playgroud)\n这似乎工作正常,我可以通过管理并设置新用户的密码、用户名和所有其他自定义字段。但是,当我尝试使用新创建的用户登录时,身份验证过程的某些部分失败。我从使用视图auth_views.login和样板 django 登录模板的页面登录。
另一方面,如果我使用django shellmanage.py createsuperuser或在 django shell 中创建一个新用户,这些用户可以正常登录。createuser()这让我怀疑这与密码存储或散列有关 - 目前在管理中我只能输入新用户的密码。事实是,这就是我想要做的。我怎样才能得到这个想要的结果 - 我希望非 IT 经理(我不知道他们的详细信息)能够轻松地在管理员中创建新用户。我意识到这种系统的风险。
这些文档在一个部分中设置此交互式用户创建似乎是矛盾的:
\n“\xe2\x80\x9cAdd user\xe2\x80\x9d 管理页面与标准管理页面不同,它要求您选择用户名和密码,然后才能编辑用户的其余部分\xe2\x80\x99s领域。”
\n然后是几段:
\n“用户密码不显示在管理中(也不存储在数据库中)”
\n这是我的管理员的屏幕截图:
\n\n如何让 Django 接受通过管理员交互创建的用户的登录尝试?
\n我正在开发一个应用程序,它在服务器上有node.js和express,mongodb用于前端的db和Backbone.js.我正在努力启用用户登录,所以我使用了passport.js库.我的登录'post'方法有问题:它没有重定向到另一个页面(它是一个SPA,所以我的意思是渲染一个Backbone视图).这是代码:
//standard express setup...
app.post('/api/auth', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err) }
if (!user) {
req.session.messages = [info.message];
return res.redirect('/')
}
req.logIn(user, function(err) {
if (err) {
return next(err);
} else {
console.log('yup, working'); //Can see the response in the console
return res.redirect('/api');
}
});
})(req, res, next);
});
app.get('/api', function (request, response) {
response.send( 'Login successful!' );
});
Run Code Online (Sandbox Code Playgroud)
所以我可以看到console.log消息很好,并且触发了路由的GET请求......但实际上没有发生任何事情.所以我认为我误解了'res.redirect'是如何工作的 - 我想在登录成功后导航到那条路线.我考虑过使用window.location,但这是一个很好的长期解决方案吗?我没有在服务器上使用任何html模板,所以我不能(我不认为)做一些像'res.render('index')那样简单的事情
什么是最好的方法来解决这个问题?提前致谢.
python ×3
backbone.js ×2
django ×1
django-admin ×1
express ×1
javascript ×1
json ×1
kaggle ×1
node.js ×1
numpy ×1
oop ×1
pandas ×1
passport.js ×1
python-2.7 ×1