在这里尝试优化投资组合权重分配,以通过限制风险最大化我的收益函数。我没有问题,可以通过简单的约束(找到所有权重的总和等于1)来找到产生给我的收益函数的最优权重,并使我的总风险低于目标风险的另一个约束是没有问题的。
我的问题是,如何为每个组添加行业权重界限?
我的代码如下:
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
import scipy.optimize as sco
dates = pd.date_range('1/1/2000', periods=8)
industry = ['industry', 'industry', 'utility', 'utility', 'consumer']
symbols = ['A', 'B', 'C', 'D', 'E']
zipped = list(zip(industry, symbols))
index = pd.MultiIndex.from_tuples(zipped)
noa = len(symbols)
data = np.array([[10, 9, 10, 11, 12, 13, 14, 13],
[11, 11, 10, 11, 11, 12, 11, 10],
[10, 11, 10, 11, 12, 13, 14, 13],
[11, 11, 10, 11, 11, 12, …Run Code Online (Sandbox Code Playgroud) 是否可以让Python计算csv文件中'NaN'(作为字符串/文本)的数量?尝试使用pandas' read_csv,但是一些具有空白的列也被读作NaN.我所知道的唯一工作方法是使用excel查找'NaN'作为值.
谁知道其他方法?提前致谢!
我正在尝试切入具有由IntervalIndex和常规索引组成的MultiIndex的DataFrame.示例代码:
from pandas import Interval as ntv
df = pd.DataFrame.from_records([
{'id': 1, 'var1': 0.1, 'ntv': ntv(0,10), 'E': 1},
{'id':2, 'var1': 0.5, 'ntv': ntv(0,12), 'E': 0}
], index=('ntv', 'id'))
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
E var1
ntv id
(0, 10] 1 1 0.1
(0, 12] 2 0 0.5
Run Code Online (Sandbox Code Playgroud)
我想要做的是以特定值切入DataFrame并返回具有包含该值的间隔的所有行.例如:
df.loc[4]
Run Code Online (Sandbox Code Playgroud)
应该回归(平凡)
E var1
id
1 1 0.1
2 0 0.5
Run Code Online (Sandbox Code Playgroud)
问题是我不断得到一个TypeError关于索引,并且文档显示了一个类似的操作(但在单级索引上)确实产生了我正在寻找的东西.
TypeError: only integer scalar arrays can be converted to a scalar index
Run Code Online (Sandbox Code Playgroud)
我尝试了很多东西,似乎没有什么能正常工作.我可以id在数据框中包含该列,但我宁愿保持我的索引唯一,我会不断地调用set_index('id').
我觉得要么a)我缺少关于MultiIndexes的东西,或者b)在MultiIndex中使用IntervalIndex存在错误/歧义.
我有一个非常简单的 Pandas DataFrame,格式如下:
date P1 P2 day
2015-01-01 190 1132 Thursday
2015-01-01 225 1765 Thursday
2015-01-01 3427 29421 Thursday
2015-01-01 945 7679 Thursday
2015-01-01 1228 9537 Thursday
2015-01-01 870 6903 Thursday
2015-01-02 785 4768 Friday
2015-01-02 1137 7065 Friday
2015-01-02 175 875 Friday
Run Code Online (Sandbox Code Playgroud)
其中 P1 和 P2 是不同的感兴趣参数。我想为每个 P1 和 P2创建一个看起来像这样的条形图。如数据所示,我每天都有几个值。我想平均给定日期的给定值,然后针对星期几进行绘制(以便将第 1 周星期一的平均值添加到第 2 周星期一等)。
我是 python 的新手,我目前的方法很糟糕,涉及几个循环。我目前有两个专用的代码部分 - 一个用于计算平均值,另一个用于一次完成一周中的每一天并计算绘图结果。有没有更干净的方法来做到这一点?
标题可能不直观 - 让我举一个例子.说我有df,创建时:
a = np.array([[ 1. , 0.9, 1. ],
[ 0.9, 0.9, 1. ],
[ 0.8, 1. , 0.5],
[ 1. , 0.3, 0.2],
[ 1. , 0.2, 0.1],
[ 0.9, 1. , 1. ],
[ 1. , 0.9, 1. ],
[ 0.6, 0.9, 0.7],
[ 1. , 0.9, 0.8],
[ 1. , 0.8, 0.9]])
idx = pd.date_range('2017', periods=a.shape[0])
df = pd.DataFrame(a, index=idx, columns=list('abc'))
Run Code Online (Sandbox Code Playgroud)
我可以得到每个相应列的索引位置最小值
df.idxmin()
Run Code Online (Sandbox Code Playgroud)
现在,我怎么能拿列方向最大最后一次出现的位置,达到最低的位置?
在视觉上,我想找到下面绿色最大的位置:
忽略最小值后的最大值.
我可以这样做.apply,但可以使用掩码/高级索引来完成吗?
期望的结果: …
使用 sklearn 在随机森林分类器上运行网格搜索。这运行的时间比我想象的要长,我试图估计这个过程还剩下多少时间。我认为它会做的拟合总数是 3*3*3*3*5 = 405。
clf = RandomForestClassifier(n_jobs=-1, oob_score=True, verbose=1)
param_grid = {'n_estimators':[50,200,500],
'max_depth':[2,3,5],
'min_samples_leaf':[1,2,5],
'max_features': ['auto','log2','sqrt']
}
gscv = GridSearchCV(estimator=clf,param_grid=param_grid,cv=5)
gscv.fit(X.values,y.values.reshape(-1,))
Run Code Online (Sandbox Code Playgroud)
从输出中,我看到它循环执行任务,其中每组都是估计器的数量:
[Parallel(n_jobs=-1)]: Done 34 tasks | elapsed: 1.2min
[Parallel(n_jobs=-1)]: Done 184 tasks | elapsed: 5.3min
[Parallel(n_jobs=-1)]: Done 200 out of 200 tasks | elapsed: 6.2min finished
[Parallel(n_jobs=8)]: Done 34 tasks | elapsed: 0.5s
[Parallel(n_jobs=8)]: Done 184 tasks | elapsed: 3.0s
[Parallel(n_jobs=8)]: Done 200 tasks out of 200 tasks | elapsed: 3.2s finished
[Parallel(n_jobs=-1)]: Done 34 tasks | …Run Code Online (Sandbox Code Playgroud) python machine-learning random-forest scikit-learn grid-search
我有如下数据:
id value time
1 5 2000
1 6 2000
1 7 2000
1 5 2001
2 3 2000
2 3 2001
2 4 2005
2 5 2005
3 3 2000
3 6 2005
Run Code Online (Sandbox Code Playgroud)
我的最终目标是将数据放在如下列表中:
[[5,6,7],[5]] (this is for id 1 grouped by the id and year)
[[3],[3],[4,5]] (this is for id 2 grouped by the id and year)
[[3],[6]] (same logic as above)
Run Code Online (Sandbox Code Playgroud)
我已经使用df.groupby(['id', 'year']). 但在那之后,我无法访问组并以上述格式获取数据。
我对需要有点糊涂了.close()两个响应对象requests和aiohttp.(请注意,这是一个单独的实例方法,而不是 - session.close()我在谈论响应对象本身.)
Response(requests)或ClientResponse(aiohttp)在任何时候需要显式调用.close()?async with session.request('GET', 'https://www.pastebin.com')下面.)为什么要定义两个dunder方法,如果它被隐式关闭,如下所示?一些简单的测试(下面)似乎暗示响应在Session上下文管理器中定义时会自动关闭. (这本身调用self.close()中__exit__或__aexit__但这是会话,而不是Response对象的关闭.)
requests>>> import requests
>>>
>>> with requests.Session() as s:
... resp = s.request('GET', 'https://www.pastebin.com')
... resp.raise_for_status()
... print(resp.raw.closed) # `raw` is urllib3.response.HTTPResponse object
... print(resp.raw._pool)
... print(resp.raw._connection)
... c = resp.text
...
True
HTTPSConnectionPool(host='pastebin.com', port=443)
None
>>>
>>> while 1:
... print(resp.raw.closed) …Run Code Online (Sandbox Code Playgroud) 我有一个带有 DateTimeIndex 的 DateFrame,即
import pandas as pd
dates = pd.date_range('2018-04-01', periods=96, freq='15T', tz='Australia/Sydney', name='timestamp')
df = dates.to_frame(index=False)
df.set_index(dates.name, inplace=True)
Run Code Online (Sandbox Code Playgroud)
我想创建一个带有 0/1 指标列的列,夏季为 1,冬季为 0,但我找不到相关的 dst / is_dst 属性,即我想要类似的东西
df['is_dst'] = df.index.is_dst()
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议正确的方法/属性是。或者我是否需要转换到不同的“日期时间”课程?
我需要一些通用的东西——即适用于任何时区,包括没有夏令时的“澳大利亚/布里斯班”。我宁愿不必解析时区偏移量并尝试确定它是夏季/冬季。
当使用 Nginx 作为 uWSGI/Django 的反向代理时, Nginx 配置中uwsgi_param和之间有什么区别?proxy_set_headeruWSGI 参数是否像 HTTP 标头,或者完全不同,如果是,其目的是什么?
背景:我正在 Django 中对与安全相关的 HTTP 标头进行一些修改。我有一个使用 Nginx 作为反向代理的设置,uWSGI 为 Django 应用程序提供服务并作为代理服务器:
_____________________________________
| |
http or https* | uwsgi |
browser --------------> | nginx --------------> uWSGI/Django |
|____________________________________|
* http 301-redirects to https equivalent;
https response returns Strict-Transport-Security header
Run Code Online (Sandbox Code Playgroud)
这里有两种机制可以让 http 请求“变成”https 请求:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload响应标头;在这种情况下,永远不会有 302 重定向;浏览器接受客户端 http 请求并立即强制其转换为等效的 https。也就是说,相关的 Django 设置如下所示:
# tail -n4 project/settings.py
SECURE_HSTS_SECONDS = 31536000 # …Run Code Online (Sandbox Code Playgroud) python ×10
pandas ×7
aiohttp ×1
dataframe ×1
django ×1
grid-search ×1
indexing ×1
matplotlib ×1
nan ×1
nginx ×1
numpy ×1
optimization ×1
portfolio ×1
python-3.7 ×1
python-3.x ×1
scikit-learn ×1
scipy ×1
uwsgi ×1