我有一个金融工具的逐笔报价数据,我试图使用matplotlib. 我正在使用pandas,并且数据是用DatetimeIndex.
问题是,当我尝试绘制多个交易日时,我无法跳过市场收盘时间和第二天开盘之间的时间范围(参见示例),这当然是我不感兴趣的。
有没有办法让 matplotlib 忽略这一点,而只是将结束语与第二天的开盘“粘”在一起?我试图传递一个自定义的时间范围:
plt.xticks(time_range)
Run Code Online (Sandbox Code Playgroud)
但结果是一样的。任何想法如何做到这一点?
# Example data
instrument = pd.DataFrame(data={
'Datetime': [
dt.datetime.strptime('2018-01-11 11:00:11', '%Y-%m-%d %H:%M:%S'),
dt.datetime.strptime('2018-01-11 13:02:17', '%Y-%m-%d %H:%M:%S'),
dt.datetime.strptime('2018-01-11 16:59:14', '%Y-%m-%d %H:%M:%S'),
dt.datetime.strptime('2018-01-12 11:00:11', '%Y-%m-%d %H:%M:%S'),
dt.datetime.strptime('2018-01-12 13:15:24', '%Y-%m-%d %H:%M:%S'),
dt.datetime.strptime('2018-01-12 16:58:43', '%Y-%m-%d %H:%M:%S')
],
'Price': [127.6, 128.1, 127.95, 129.85, 129.7, 131.2],
'Volume': [725, 146, 48, 650, 75, 160]
}).set_index('Datetime')
plt.figure(figsize=(10,5))
top = plt.subplot2grid((4,4), (0, 0), rowspan=3, colspan=4)
bottom = plt.subplot2grid((4,4), (3,0), rowspan=1, colspan=4)
top.plot(instrument.index, instrument['Price'])
bottom.bar(instrument.index, instrument['Volume'], …Run Code Online (Sandbox Code Playgroud) 我们有一个sqlalchemy用作 ORM的应用程序。除了映射表,我们还用它来映射现有的数据库视图,效果很好。
但是,我们找不到将自定义查询映射到模型的简单方法。例如,假设我们有一个像这样的报告:
q = session.query(
Table1.field1, Table2.field2, func.sum(Table2.field3).label('sum')
).join(
Table2, Table1.id == Table2.id
).filter(
Table1.field1 == param1, Table1.field2 == param2
).group_by(
Table1.field1, Table2.field2
)
Run Code Online (Sandbox Code Playgroud)
我们想将此查询映射到一个类
class Report(CustomBaseModel):
field1 = Column(Integer, primary_key=True)
field2 = Column(Integer, primary_key=True)
sum = Column(Numeric)
Run Code Online (Sandbox Code Playgroud)
我们CustomBaseModel已经实现了很多功能,因此能够在这里使用它会减少代码重复。例如,以这种方式使用声明性基将可以将relationships定义为其他表。
当然这个例子不起作用,因为"report"数据库中没有selectable 。
我尝试__table__ = q.subquery()在Report课堂上进行设置。通过这种方式,查询可以工作,但无法定义列、关系或其他属性。也许有更好的方法来实现这一目标。
假设我在Django中有两个表,TableA并且TableB.表A包含一些布尔字段,bool并TableB包含一个外键字段for_fieldto TableA,它可以是Null.
class TableA(models.Model):
bool = models.BooleanField()
class TableB(models.Model):
for_field = models.ForeignKey('TableA', null=True)
Run Code Online (Sandbox Code Playgroud)
如果我想过滤表B,以便让所有的条目,其中for_field.bool是True或for_field为Null,什么是实现这一目标的最短路径?
我正在使用.filter((Q(for_field__is_null=True) | Q(for_field__bool=True)),但我想知道是否有更短的代码.
我正在开发一个由几个半静态页面(主页,关于等)和博客组成的Wagtail项目.在主页中,我想列出最新的博客条目,我可以将以下代码添加到HomePage模型中:
def blog_posts(self):
# Get list of live blog pages that are descendants of this page
posts = BlogPost.objects.live().order_by('-date_published')[:4]
return posts
def get_context(self, request):
context = super(HomePage, self).get_context(request)
context['posts'] = self.blog_posts()
return context
Run Code Online (Sandbox Code Playgroud)
但是,我还想在页脚中添加最后3个条目,这是网站中所有页面的常见元素.我不确定最好的方法是什么 - 当然我可以为所有模型添加类似的代码,但也许有一种方法可以扩展Page类作为一个整体或以某种方式添加"全局"上下文?这样做的最佳方法是什么?
python ×3
django ×2
datetime ×1
foreign-keys ×1
matplotlib ×1
nullable ×1
pandas ×1
sqlalchemy ×1
wagtail ×1