我刚刚开始使用Bokeh.下面我创建一些用于rect图的 args .
x_length = var_results.index * 5.5
Run Code Online (Sandbox Code Playgroud)
将指数乘以5.5可以让我在标签之间留出更多空间.
names = var_results.Feature.tolist()
y_length = var_results.Variance
y_center = var_results.Variance/2
Run Code Online (Sandbox Code Playgroud)
var_results是一个Pandas数据帧,具有典型的,顺序的,非重复索引.var_results还有一个列Features是非重复名称的字符串,最后它有一个Variancedtype float 的列.
r = figure(x_range = names,
y_range = (-0.05,.3),
active_scroll = 'wheel_zoom',
x_axis_label = 'Features',
y_axis_label = 'Variance')
r.rect(x_length,
y_center,
width=1,
height=y_length,
color = "#ff1200")
output_notebook()
show(r)
Run Code Online (Sandbox Code Playgroud)
我基本上是用矩形制作条形图.Bokeh似乎非常可定制.但是我的图表在边缘看起来很粗糙.
正如您所看到的,在图表下方和X轴标题"特征"上方有一个丑陋的污迹.这是标签标题(技术上是矩形标题).如何为标签创建空间并将其旋转到45度,以便它们可读,而不仅仅是重叠的混乱?
在处理从websocket服务器推送到client.py的数据时,我遇到了很长的(3小时)延迟(编辑:一开始就是短暂的延迟,然后在一天中变得更长).我知道它不会被服务器延迟.
例如,我每5秒钟看到keep_alive日志事件及其各自的时间戳.这样运行顺利.但是当我看到在日志中处理的数据帧实际上是在服务器发送它之后 3小时.我是在做什么来推迟这个过程吗?
我是否正确地调用了我的协程'keep_alive'?keep_alive只是服务器的一条消息,用于保持连接的活动状态.服务器回显消息.我也记得太多了吗?这可能会延迟处理(我不这么认为,因为我看到记录事件立即发生).
async def keep_alive(websocket):
"""
This only needs to happen every 30 minutes. I currently have it set to every 5 seconds.
"""
await websocket.send('Hello')
await asyncio.sleep(5)
async def open_connection_test():
"""
Establishes web socket (WSS). Receives data and then stores in csv.
"""
async with websockets.connect(
'wss://{}:{}@localhost.urlname.com/ws'.format(user,pswd), ssl=True, ) as websocket:
while True:
"""
Handle message from server.
"""
message = await websocket.recv()
if message.isdigit():
# now = datetime.datetime.now()
rotating_logger.info ('Keep alive message: {}'.format(str(message))) …Run Code Online (Sandbox Code Playgroud) 为什么 Google 认为我的 Django 应用程序通过 SMTP (smtp.gmail.com) 发送电子邮件的请求不安全?阅读他们的安全标准并没有多大帮助:
更安全的应用程序如何帮助保护您的帐户当第三方应用程序符合我们的安全标准时,您可以:
在连接您的 Google 帐户之前,查看您授予该应用的帐户访问权限级别 让该应用仅访问您 Google 帐户的相关部分,例如您的电子邮件或日历 将您的 Google 帐户连接到该应用,而不暴露您的密码 断开与 Google 的连接随时从应用程序帐户
从 Django 发送电子邮件时这是一个非常常见的问题。有教程和stackoverflow 问题/答案(第二个答案)可以通过更改 Google 帐户中的设置以允许安全性较低的应用程序来“解决”此问题。我已经完成了这项工作,并且对此感到满意,直到我从控制对不太安全的站点的访问中读到此内容:
由于 Google 开始关闭 Google 帐户对安全性较低的应用程序的访问权限,因此强制选项不再可用。我们建议立即关闭安全性较低的应用程序访问。您应该开始使用安全性较低的应用程序的替代品。
随着 Google 逐渐不再允许安全性较低的应用访问 Google 帐户,您将收到有关影响您的更改的电子邮件通知。
当我尝试搜索“如何通过 Google 确保 Django 安全”或“为什么 Django 对 Google 来说显示为不安全的应用程序”时,我看到的结果反映了更多相同的指导:只需翻转开关即可允许 Google 帐户上的不安全应用程序。我想知道为什么 Django 被认为是不安全的,这样也许我可以将其配置为安全的。
编辑:我还没有验证这些步骤使 Django 成为一个“更安全的应用程序”。在此之前,使用应用程序密码可以让我关闭“允许安全性较低的应用程序”。实施起来非常简单。
我希望限制在浏览器树/层次结构中看到的数据库数量,因为它是一个拥有数百个数据库的 AWS 服务器。根据这个答案,我找到了如何做到这一点。但我无法编辑此字段(数据库限制)。单击、双击、右键单击等都没有运气。
我发现它说
注意:您必须确保要连接的服务器的 pg_hba.conf 文件允许来自客户端主机的连接。
在文档中。这是显而易见的答案吗?如果是这样,有没有办法让我与我不是管理员的远程服务器的 pg_hba.conf 进行交互?或者还有其他原因导致我无法编辑此字段?
Scrapy 集群很棒。它可用于使用 Redis 和 Kafka 执行巨大的、连续的爬网。它真的很耐用,但我仍在努力找出满足我特定需求的最佳逻辑的更精细细节。
在使用 Scrapy Clusters 时,我可以设置三个级别的蜘蛛,它们依次接收彼此的 url,如下所示:
site_url_crawler >>> gallery_url_crawler >>> content_crawler
(site_crawler 会给gallery_url_crawler 提供类似cars.com/gallery/page:1 的内容。gallery_url_crawler 可能会给content_crawler 提供12 个网址,这些网址可能看起来像cars.com/car:1234、cars.com/car:1235、cars.com/ car:1236 等。 content_crawler 会收集我们想要的所有重要数据。)
我可以通过添加到 gallery_url_crawler.py
req = scrapy.Request(url)
for key in response.meta.keys():
req.meta[key] = response.meta[key]
req.meta['spiderid']= 'content_crawler1'
req.meta['crawlid'] = 'site1'
yield req
Run Code Online (Sandbox Code Playgroud)
通过这种策略,我可以将 url 从一个爬虫传送到另一个爬虫,而无需等待后续爬虫完成。然后创建一个队列。为了充分利用集群,我希望在存在瓶颈的地方添加更多爬虫。在这个工作流程中,瓶颈在最后,即抓取内容时。所以我尝试了这个:
site_url_crawler >>> gallery_url_crawler >>> content_crawler + content_crawler + content_crawler
由于缺乏更好的说明,我只是想表明我使用了最终蜘蛛的三个实例来处理更长的队列。
但似乎 content_crawler 的每个实例都在耐心等待当前 content_crawler 完成。因此,生产力没有提高。
我的最终想法是这样的:
site_url_crawler >>> gallery_url_crawler >>> content_crawler1 + content_crawler2 + content_crawler3
所以我尝试使用单独的蜘蛛来接收最终队列。
不幸的是,我无法对此进行试验,因为我无法像这样将 kafka 消息传递给 demo.inbound gallery_url_crawler.py …
我最近一直在通过迭代多个文件、行等来构建 Pandas 数据帧。我一直在通过在字典中附加项目然后转换为数据帧来构建它们:
我知道还有其他工具,例如 apply() 和 interrows() 可以逐行逐行应用或筛选数据。这不是这个问题的主题。
new_data_dict = {}
for r in df.index:
new_data = df.loc[r] **2
new_data_dict[r] = new_data
new_df = pd.DataFrame.from_dict(new_data_dict, orient = 'index')
Run Code Online (Sandbox Code Playgroud)
这是构建熊猫 df 的最有效方法吗?我没有将它与 pandas.DataFrame.append 进行比较。我有两个关于 append 的想法。一方面,创建数据帧或系列(单行)只是为了附加它似乎不必要地繁重。另一方面,pandas 中内置的所有内容都非常快,例如上述方法 apply() 和 iterrows() 以及 groupby() 等。
逐行构建数据框的“大流行”方式是什么?
在xarray中使用DataArray对象,找到具有值的所有单元格的最佳方法是!= 0.
例如在熊猫中我会这样做
df.loc[df.col1 > 0]
Run Code Online (Sandbox Code Playgroud)
我的具体例子我正在试着看三维脑成像数据.
first_image_xarray.shape
(140, 140, 96)
dims = ['x','y','z']
Run Code Online (Sandbox Code Playgroud)
查看xarray.DataArray.where的文档,看起来我想要这样的东西:
first_image_xarray.where(first_image_xarray.y + first_image_xarray.x > 0,drop = True)[:,0,0]
Run Code Online (Sandbox Code Playgroud)
但我仍然得到零的数组.
<xarray.DataArray (x: 140)>
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., …Run Code Online (Sandbox Code Playgroud) 基于此问答(由 Nehal J Wani 回答),似乎可以创建并修改某个配置文件,以便在激活 conda 环境时自动更改目录。有人知道如何在 Windows 中执行此操作和/或可以将以下代码转换为 Windows 友好的步骤吗?
(root) [watchmen@manhattan ~]# mkdir /tmp/myproject
(root) [watchmen@manhattan ~]# conda create -yn myproject python=3.6
(root) [watchmen@manhattan ~]# source activate myproject
(myproject) [watchmen@manhattan ~]# mkdir -p $CONDA_PREFIX/etc/conda/activate.d
(myproject) [watchmen@manhattan ~]# cat <<EOF > $CONDA_PREFIX/etc/conda/activate.d/gotodirs.sh
> #!/bin/bash
> pushd /tmp/myproject
> EOF
(myproject) [watchmen@manhattan ~]# chmod +x $CONDA_PREFIX/etc/conda/activate.d/gotodirs.sh
(myproject) [watchmen@manhattan ~]# pwd
/root
(myproject) [watchmen@manhattan ~]# source deactivate
[watchmen@manhattan ~]# source /conda/bin/activate myproject
/tmp/myproject ~
(myproject) [watchmen@manhattan myproject]# pwd
/tmp/myproject
Run Code Online (Sandbox Code Playgroud) 我的表类看起来很典型,只是它可能包含一个 before_render() 函数。before_render 的优点是我可以访问 self. 这使我可以访问有关我正在使用的模型的动态信息。如何访问动态信息(例如来自 before_render)以更改 Meta 类中的 order_by 变量?
def control_columns(table_self):
# Changes yesno for all Boolean fields to ('Yes','No') instead of the default check-mark or 'X'.
for column in table_self.data.table.columns.columns:
current_column = table_self.data.table.columns.columns[column].column
if isinstance(current_column,tables.columns.booleancolumn.BooleanColumn):
current_column.yesno = ('Yes','No')
class DynamicTable(tables.Table):
def before_render(self, request):
control_columns(self)
class Meta:
template_name = 'django_tables2/bootstrap4.html'
attrs = {'class': 'custom_table', 'tr': {'valign':"top"}}
order_by = 'index'
Run Code Online (Sandbox Code Playgroud) 考虑这个 pg_restore 命令:
pg_restore -h 123.123.123.123 -d my_database -U my_user --no-owner --no-privileges --no-password -t specific_table 616f6d35-202104.backup
Run Code Online (Sandbox Code Playgroud)
当我在本地运行它时,它可以工作。但是当我运行它时,我的 ECS 实例不会恢复。没有错误,退出代码为 0。
如果我在语句中创建数据库(通过添加 --create 标志并将 my_database 更改为 postgres),如下所示:
pg_restore -h 123.123.123.123 -d postgres -U my_user --create --no-owner --no-privileges --no-password -t specific_table 616f6d35-202104.backup
Run Code Online (Sandbox Code Playgroud)
它仍然在本地工作。当我在 ECS 中运行它时,它会创建数据库但仍然没有恢复表。如果我排除特定表:
pg_restore -h 123.123.123.123 -d my_database -U my_user --no-owner --no-privileges --no-password 616f6d35-202104.backup
Run Code Online (Sandbox Code Playgroud)
然后它起作用了。但它加载了我不想要的整个数据库。所以这与在本地工作但不在我的 ECS 实例中的 -t 标志有关。
编辑: 似乎确实存在版本不匹配。我能得到的最接近的环境是ECS 上的PostgreSQL v10.16和具有 Postgres 服务器 123.123.123.123的目标 EC2 上的 v10.4。仍然不起作用。这可能是问题吗?如果是这样,我如何安装 postgresql 或 postgresql-client 的特定次要版本?
对于 docker …
我使用递归特征消除和交叉验证 (rfecv) 来找到我拥有的几个特征的最佳准确度分数 (m = 154)。
rfecv = RFECV(estimator=logreg, step=1, cv=StratifiedKFold(2),
scoring='accuracy')
rfecv.fit(X, y)
Run Code Online (Sandbox Code Playgroud)
排名 ( rfecv.ranking_) 和相关分数 ( rfecv.grid_scores_) 令我感到困惑。正如您从前 13 个特征(排在前 10 名)中看到的,它们的排名不是基于分数。我知道排名与交叉验证过程中排除该功能的方式和时间有关。但是分数与排名有什么关系呢?我希望排名最高的功能得分最高。
Features/Ranking/Scores
b 1 0.692642743
a 1 0.606166207
f 1 0.568833672
i 1 0.54935204
l 2 0.607564808
j 3 0.613495238
e 4 0.626374391
l 5 0.581064621
d 6 0.611407556
c 7 0.570921354
h 8 0.570921354
k 9 0.576863707
g 10 0.576863707
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的 Lambda 函数提供 S3FullAccessPolicy 策略。请注意,目标存储桶未在其中配置template.yaml- 它已经存在。考虑到本文档中的语法示例,我有三个选择:
1.AWS托管策略名为:
Policies:
- S3FullAccessPolicy
Run Code Online (Sandbox Code Playgroud)
2.AWS SAM策略模板(SQSPollerPolicy)定义:
Policies:
- S3FullAccessPolicy:
BucketName: abc-bucket-name
Run Code Online (Sandbox Code Playgroud)
3.或者内联政策文件:
Policies:
- Statement:
...
Run Code Online (Sandbox Code Playgroud)
在尝试 #1 时,我收到一个错误,提示我似乎需要提供一个 arn。如果是这种情况我该在哪里提供呢?错误:
1 validation error detected: Value 'S3FullAccessPolicy' at 'policyArn' failed to satisfy constraint:
Member must have length greater than or equal to 20
Run Code Online (Sandbox Code Playgroud)
对于#2,我提供了存储桶名称,但它表示该策略“无效”。我尝试添加引号并用 arn 替换名称 - 但没有成功。
#3 - 我可以在这里找到策略的代码,但它在 yaml 中,所以我想知道这是否就是我应该使用的代码。
我在这里缺少什么?我愿意使用这些选项中的任何一种,但现在我的选择是 0/3。
完整的 Lambda 函数:
testFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: lambda/testFunction/
Handler: app.lambda_handler
Runtime: python3.8
Timeout: 900 …Run Code Online (Sandbox Code Playgroud) lambda amazon-s3 amazon-web-services aws-cloudformation aws-sam
python ×8
pandas ×3
django ×2
amazon-ecs ×1
amazon-s3 ×1
anaconda ×1
apache-kafka ×1
aws-sam ×1
bar-chart ×1
bokeh ×1
cmd ×1
conda ×1
database ×1
dataframe ×1
email ×1
gmail ×1
lambda ×1
pgadmin ×1
pgadmin-4 ×1
postgresql ×1
python-3.x ×1
redis ×1
scikit-learn ×1
scrapy ×1
websocket ×1
windows ×1