我在MacOS 10.6.4上使用PyCharm(1.5.4)作为我的python IDE.我正在修改一些代码来操纵股票价格数据.作为其中的一部分,我想通过使用Pandas 0.6.0附带的DataReader函数从yahoo导入价格数据.代码如下:
http://www.statalgo.com/2011/09/08/pandas-getting-financial-data-from-yahoo-fred-etc/
from pandas import ols, DataFrame
from pandas.stats.moments import rolling_std
from pandas.io.data import DataReader
import datetime
sp500 = DataReader("^GSPC", "yahoo", start=datetime.datetime(1990, 1, 1))
sp500_returns = sp500["adj clos"].shift(-250)/sp500["adj clos"] - 1
gdp = DataReader("GDP", "fred", start=datetime.datetime(1990, 1, 1))["value"]
gdp_returns = (gdp/gdp.shift(1) - 1)
gdp_std = rolling_std(gdp_returns, 10)
gdp_standard = gdp_returns / gdp_std
gdp_on_sp = ols(y=sp500_returns, x=DataFrame({"gdp": gdp_standard}))
sp500.plot()
gdp.plot()
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我收到以下错误:
Traceback (most recent call last):
File "/Users/MyName/PycharmProjects/test/mytest", line 3, in <module>
from pandas.io.data import DataReader
ImportError: No …Run Code Online (Sandbox Code Playgroud) 我在R中使用ggplot2来生成由连续线连接的数据帧中有序点的散点图.在这一行,我想放置几个箭头,显示数据框中点的顺序.我可以在每个相邻的点之间放置一个箭头,如下所示,但随着我添加更多的点,图形变得拥挤的箭头和凌乱.有没有办法让我可以在每个2,3,4相邻的点之间放置箭头?
library(ggplot2)
library(grid)
b = c(1,2,3,6,7,5,4,3,2,3,4,6,8,9,9,8,9,11,12)
c = c(2,3,2,4,4,6,8,7,5,4,3,5,9,9,8,8,10,11,15)
df = data.frame(b, c)
ggplot(df, aes(x=b, y= c)) +
geom_point() +
geom_segment(aes(xend=c(tail(b, n=-1), NA), yend=c(tail(c, n=-1), NA)),
arrow=arrow(length=unit(0.4,"cm"), type = "closed"))
Run Code Online (Sandbox Code Playgroud)
我试图将两个DataFrame与pandas测试进行比较assert_frame_equal.这些框架包含要与某些用户定义的精度进行比较的浮动.
check_less_precise来自的论点assert_frame_equal似乎表明我可以指定小数点后面的位数来进行比较.引用API参考页面 -
check_less_precise:指定比较精度.仅在check_exact为False时使用.比较小数点后的5位数(假)或3位数(真).如果是int,则指定要比较的数字
但是,当浮点数小于1时,这似乎不起作用.
这引发了AssertionError
import pandas as pd
expected = pd.DataFrame([{"col": 0.1}])
output = pd.DataFrame([{"col": 0.12}])
pd.testing.assert_frame_equal(expected, output, check_less_precise=1)
Run Code Online (Sandbox Code Playgroud)
虽然这不是
expected = pd.DataFrame([{"col": 1.1}])
output = pd.DataFrame([{"col": 1.12}])
pd.testing.assert_frame_equal(expected, output, check_less_precise=1)
Run Code Online (Sandbox Code Playgroud)
有人可以帮助解释这种行为,这是一个错误吗?
是否可以在 Airflow 中获取 dag 的实际开始时间?开始时间是指 dag 的第一个任务开始运行的确切时间。
我知道我可以使用宏来获取执行日期。如果作业是使用 trigger_dag 运行的,这就是我所说的开始时间,但如果作业按每日计划运行,则{{ execution_date }}返回昨天的日期。
我还尝试将其放入datetime.now().isoformat()dag 代码的正文中,然后将其传递给任务,但这似乎返回了首次调用任务的时间,而不是 dag 本身的启动时间。
我有一个包含日期时间对象的熊猫系列,这些对象是从日 - 月 - 年字符串创建的
series = pd.Series(['3/11/2000', '3/12/2000', '3/13/2000'])
series = pd.to_datetime(series)
print series
0 2000-03-11
1 2000-03-12
2 2000-03-13
dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)
之后,在使用这些日期时间对象后,我想以日 - 月 - 年的格式将此系列转换为json.但是,to_json返回日期时间与HH:MM:SS等
json = series.to_json(orient='index', date_format='iso', date_unit = 's')
print json
{"0":"2000-03-11T00:00:00Z","1":"2000-03-12T00:00:00Z","2":"2000-03-13T00:00:00Z"}
Run Code Online (Sandbox Code Playgroud)
是否有任何内置和优雅的方式来返回日期
{"0":"2000-03-11","1":"2000-03-12","2":"2000-03-13"}
Run Code Online (Sandbox Code Playgroud)
没有HH:MM:SS等我最接近(没有转换为字符串并编写一个函数来解析)是to_json的date_unit参数,尽管最大的时间单位看似是秒.
有人可以帮忙吗?谢谢
如何安排 dag 的执行日期为工作日,但第二天的开始日期不一定是工作日?
我的理由是,我会在每个工作日结束时获取数据,并希望在第二天早上进行处理。气流常见的陷阱将执行日期描述为数据所属的日期,而开始日期是您运行 ETL 的日期。
例如:我希望一系列 dag 运行具有以下执行和开始日期 -
DAG start_date Task Started Task execution_date
2018-01-01 2018-01-02 Tues 2018-01-01 Mon
2018-01-03 Wed 2018-01-02 Tues
2018-01-04 Thur 2018-01-03 Wed
2018-01-05 Fri 2018-01-04 Thur
2018-01-06 Sat 2018-01-05 Fri
2018-01-06 Tues 2018-01-08 Mon
Run Code Online (Sandbox Code Playgroud)
我设法做到的最接近的是使用时间表:0 2 * * TUE-SAT它在星期二开始时具有错误的执行日期(星期六)(见下文)
DAG start_date Task Started Task execution_date
2018-01-01 2018-01-03 Wed 2018-01-02 Tues
2018-01-04 Thur 2018-01-03 Wed
2018-01-05 Fri 2018-01-04 Thur
2018-01-06 Sat 2018-01-05 Fri
2018-01-09 Tues 2018-01-06 Sat
Run Code Online (Sandbox Code Playgroud)
或时间表:0 2 …
我试图使一个textAreaInput框闪亮,跨越100%的网页,并在浏览器最小化/最大化时调整大小.我可以通过提供参数width = 100%来使用此行为创建一个简单的textInput.即使width在textInput和textAreaInput手册页中具有相同的描述,向textAreaInput提供相同的参数也不会产生相同的行为.这是理想的行为还是错误?
最小的工作示例 -
library(shiny)
shinyApp(
#UI
ui = fluidPage(
fluidRow(
column(12,
textAreaInput("big_box", "Big box", value = "", width = '100%', rows = 5, resize = "both")
)
),
fluidRow(
column(12,
textInput("long_box", "Long box", value = "", width = '100%')
)
)
),
#Server
server = function(input, output) {
}
)
Run Code Online (Sandbox Code Playgroud)
输出示例 -
干杯
我有一个字符串列表['foo1','foo2',...],表示我想从self中删除的变量,如果它们是self的一部分.什么是Pythonic和紧凑的方式来做到这一点?
我的第一次尝试是
if hasattr(self, 'foo1'):
del self.foo1
if hasattr(self, 'foo2'):
del self.foo2
...
Run Code Online (Sandbox Code Playgroud)
但是这显然不适用于大型列表.
有人可以帮忙吗?
我有一个包含几列的 pandas 数据框,用于在最后一列中标记数据,例如,
df = pd.DataFrame( {'1_label' : ['a1','b1','c1','d1'],
'2_label' : ['a2','b2','c2','d2'],
'3_label' : ['a3','b3','c3','d3'],
'data' : [1,2,3,4]})
df = 1_label 2_label 3_label data
0 a1 a2 a3 1
1 b1 b2 b3 2
2 c1 c2 c3 3
3 d1 d2 d3 4
Run Code Online (Sandbox Code Playgroud)
和一个元组列表,
list_t = [('a1','a2','a3'), ('d1','d2','d3')]
Run Code Online (Sandbox Code Playgroud)
我想过滤此数据帧并返回一个新数据帧,其中仅包含与列表中的元组相对应的行。
result = 1_label 2_label 3_label data
0 a1 a2 a3 1
1 d1 d2 d3 4
Run Code Online (Sandbox Code Playgroud)
我天真的(和 C++ 启发)解决方案是使用追加(如向量::push_back)
for l1, l2, l3 in list_t:
if df[(df['1_label'] == l1) & …Run Code Online (Sandbox Code Playgroud) ack-grep 有 3 个复活节彩蛋:
ack-grep --thppt
ack-grep --bar
ack-grep --cathy
Run Code Online (Sandbox Code Playgroud)
虽然我是一个巨大的风扇ack-grep --bar和我得到的ack-grep --thppt,任何人都可以解释这个笑话的背后ack-grep --cathy?
我正在尝试编写一些函数来构建 sqlalchemy select 语句。例如:
import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
metadata = Base.metadata
t_test = sa.Table(
'test', metadata,
sa.Column('col_1', sa.Text),
sa.Column('col_2', sa.Float)
)
def create_test_select():
sa_select = sa.select([t_test.c.col_1, t_test.c.col_2])
return sa_select
def add_test_col1_where_clause(sa_select, x ):
sa_select = sa_select.where(t_test.c.col_1 == x)
return sa_select
Run Code Online (Sandbox Code Playgroud)
我想测试一下这些功能。
为了测试create_test_select我会写一些类似的东西
class Test(unittest.TestCase):
def test(self):
self.assertIn('col1', create_test_select().columns)
self.assertIn('col2', create_test_select().columns)
Run Code Online (Sandbox Code Playgroud)
我如何测试该功能add_test_col1_where_clause?我想知道它向选择添加了正确的 where 子句。我最初的想法是检查 sqlachemy select 对象中的 where 子句,但我无法让它工作。
python ×7
pandas ×3
airflow ×2
r ×2
testing ×2
ack ×1
attributes ×1
date ×1
datetime ×1
del ×1
ggplot2 ×1
importerror ×1
module ×1
pycharm ×1
r-grid ×1
shiny ×1
sqlalchemy ×1
unit-testing ×1