我对 docker、redis 和任何类型的网络都很陌生(至少我知道 python!)。首先,我已经弄清楚如何获取 redis docker 映像并在 docker 容器中运行它:
docker run --name some-redis -d redis
Run Code Online (Sandbox Code Playgroud)
据我了解,这个 redis 实例有端口 6379 可用于连接到其他容器。
docker network inspect bridge
"Containers": {
"2ecceba2756abf20d5396078fd9b2ecf0d60ab04ca6b8df5e1b631b6fb5e9a85": {
"Name": "some-redis",
"EndpointID": "09f0069dae3632a2456cb4d82ad5e7c9782a2b58cb7a4ee655f57b5c410c3e87",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
Run Code Online (Sandbox Code Playgroud)
如果我运行以下命令,我可以与 redis 实例交互并生成键:值对:
docker run -it --link some-redis:redis --rm redis redis-cli -h redis -p 6379
set 'a' 'abc'
>OK
get 'a'
>"abc"
quit
Run Code Online (Sandbox Code Playgroud)
我已经弄清楚如何制作和运行安装了 redis 库的 docker 容器,该容器将运行 python 脚本,如下所示:
这是我的 Dockerfile:
FROM python:3
ADD redis_test_script.py /
RUN pip install redis …
Run Code Online (Sandbox Code Playgroud) 我有一系列输入文件,例如:
chr1 hg19_refFlat exon 44160380 44160565 0.000000 + . gene_id "KDM4A"; transcript_id "KDM4A";
chr1 hg19_refFlat exon 19563636 19563732 0.000000 - . gene_id "EMC1"; transcript_id "EMC1";
chr1 hg19_refFlat exon 52870219 52870551 0.000000 + . gene_id "PRPF38A"; transcript_id "PRPF38A";
chr1 hg19_refFlat exon 53373540 53373626 0.000000 - . gene_id "ECHDC2"; transcript_id "ECHDC2_dup2";
chr1 hg19_refFlat exon 11839859 11840067 0.000000 + . gene_id "C1orf167"; transcript_id "C1orf167";
chr1 hg19_refFlat exon 29037032 29037154 0.000000 + . gene_id "GMEB1"; transcript_id "GMEB1";
chr1 hg19_refFlat exon 103356007 103356060 0.000000 - …
Run Code Online (Sandbox Code Playgroud) 我编写了一些代码,通过使用 python 在 excel 中编写查询成功地从bloomberg api 中提取数据,然后启动 excel 通过bloomberg 插件获取数据,将数据传输到 csv(以便在 python 和其他中更容易使用)下游需求)和回报。
唯一的问题是,为了将数据拉入 excel,我必须在保存文件之前设置 time.sleep(40),因为通过 excel 的连接需要足够的时间来拉取数据。我想知道是否有一种方法可以自动检测数据何时被提取?- 计划是将其扩展为在循环中或跨多个线程执行许多查询,为了提高效率,我需要检测何时提取数据以开始下一步。
任何想法真的会有帮助吗?查看函数 run_VBA 这是我目前的代码:
import xlsxwriter
import pandas as pd
import xlwings as xl
import glob
import openpyxl
import time
import os
import win32com.client
def write_bloomberg_query_in_excel():
"""main function, make an excel workbook containing an api query, open the file and allow the data to
be pulled from the api, save and close, then transfer the data into a pandas df and csv""" …
Run Code Online (Sandbox Code Playgroud) 我一直在学习 AWS SAM 的诀窍,并成功部署了许多 lambda 表达式以及依赖项和其他 AWS 服务。但是,在尝试部署依赖于某些特定依赖项的 lambda 时,我似乎遇到了问题。
这是我的requirements.txt 文件:
paramiko==2.4.2
cryptography==2.6.1
bcrypt==3.1.6
pynacl==1.3.0
Run Code Online (Sandbox Code Playgroud)
该文件位于“packageRoot/myCodeUri/requirements.txt”中
当我运行 sam build 时,出现以下错误:
2019-08-27 11:18:18 Running PythonPipBuilder:ResolveDependencies
Build Failed
Error: PythonPipBuilder:ResolveDependencies - {pynacl==1.3.0(wheel), cryptography==2.6.1(wheel), bcrypt==3.1.6(wheel)}
Run Code Online (Sandbox Code Playgroud)
此(或至少类似)错误已报告: 8 个多月前,但目前尚未得到答复。
PS 我最初只用 paramiko 尝试过这个,因为据我了解,这是我的脚本使用的唯一库;依赖项应该在构建过程中自动引入,但这也不起作用。
任何帮助都会很棒吗?
我有一组具有不同标题的dfs,我需要逐行绑定:我希望更改cols的名称,以便每个都具有相同的标题.
DF1
name, score
smith, 3
smith, 7
smith, 5
Run Code Online (Sandbox Code Playgroud)
DF2
type, price
food, 3
food, 5
food, 2.6
Run Code Online (Sandbox Code Playgroud)
我希望将它组合起来,使每个标题具有相同的标题并按行组合.我有32个这些数据帧都有不同的标题,所以我打算使用循环
我列出了dfs
groups <- c(df1, df2, df3, etc)
Run Code Online (Sandbox Code Playgroud)
然后尝试组合成一个空的df:
new_df <- data.frame(words=character(),numbers=numeric())
for (i in 1:length(groups))
{
x <- data.frame(words=character(),numbers=numeric())
x[,1] <- groups[i]
x[,2] <- groups[i+1]
new_df <- rbind(new_df, x)
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它只返回一个带有一堆警告的空df.谁能告诉我如何纠正这个?我期待new_df;
words, numbers
smith, 3
smith, 7
smith, 5
food, 3
food, 5
food, 2.6
Run Code Online (Sandbox Code Playgroud)
我相信对于比我更有经验的人来说这很容易.谢谢
我是使用生成器的新手,已经阅读了一些,但是需要一些帮助来处理大块文本文件。我知道已经讨论了该主题,但是示例代码的解释非常有限,如果不了解正在发生的事情,则很难修改代码。
我的问题很简单,我有一系列大型文本文件,其中包含以下格式的人类基因组测序数据:
chr22 1 0
chr22 2 0
chr22 3 1
chr22 4 1
chr22 5 1
chr22 6 2
Run Code Online (Sandbox Code Playgroud)
文件长度在1Gb到〜20Gb之间,太大而无法读入RAM。所以我想一次读取例如10000行的块/箱中的行,以便我可以在这些箱大小的最后一列上执行计算。
基于此链接,我编写了以下内容:
def read_large_file(file_object):
"""A generator function to read a large file lazily."""
bin_size=5000
start=0
end=start+bin_size
# Read a block from the file: data
while True:
data = file_object.readlines(end)
if not data:
break
start=start+bin_size
end=end+bin_size
yield data
def process_file(path):
try:
# Open a connection to the file
with open(path) as file_handler:
# Create a generator object for the …
Run Code Online (Sandbox Code Playgroud) 我有一个数据框如下:
Name,Tutor,Test,Score,Percent,school.year
Mark,Eric,Maths,100,100,2
Mark,Eric,English,91,91,2
Sue,Richard,Maths,88,100,5
Sue,Richard,English,71,80.7,5
Run Code Online (Sandbox Code Playgroud)
我想在 y 轴上绘制百分比,在 x 轴上绘制每个测试的条形图。我的代码按照我想要的方式进行绘图,但 x 轴标签只是名称。我想在 x 轴中添加其他变量(仅添加到标签)。因此,例如标记有 2 个小节;数学 1 分,英语 1 分,他的 xaxis 标签上还标有“标记”“\n”“埃里克”,这样我们就可以知道是谁辅导了他。如果可能,我想添加几个额外的标签,例如学年。到目前为止,我的代码如下;
results <- read.csv('results.csv')
p <- ggplot(results, aes(y=Percent, x=Name, colour=Test, fill=Test)) +
geom_bar(stat='identity', position='dodge') +
ggtitle('Test Results') +
ylab('Percent')
Run Code Online (Sandbox Code Playgroud)
我可以将单个变量绘制为 x 轴标签,例如:
+scale_x_discrete(labels = results$Score)
Run Code Online (Sandbox Code Playgroud)
或者手动更改(虽然顺序有问题);
scale_x_discrete(labels = c('Mark \n Eric','Sue \n Richard', etc))
有没有办法将其他变量添加到 x 标签,最好是换行?非常感谢
我有一个大型 csv 文件,5300 列 x 150 行。每列都有一个数字标题(第一列除外,它是字符串)。每行都有一个与其关联的样本名称。以下是格式示例:
s,1,2,3,4,5,6
a,0,8,7,6,0,5
b,0,0,5,4,0,3
c,0,2,3,4,0,3
d,0,6,7,8,0,9
Run Code Online (Sandbox Code Playgroud)
我希望删除总和(不包括列标题)为零的所有列。最快的方法是什么?我尝试通过分割每一行、将“ith”元素添加到列表中并求和来迭代整个过程。如果总和 == 0,则再次迭代数据并从每行中删除“第 i”个元素。这种方法的问题是它花费了不切实际的时间,并且我可能需要对几个类似的文件重复该过程。
我有一些 python 经验,但对 numpy 完全陌生。我不确定如何根据条件(例如 sum == 0)按列删除。到目前为止我有:
data = np.loadtxt('test.csv', delimiter=',', skiprows=1, usecols=range(1,5))
Run Code Online (Sandbox Code Playgroud)
我想使用类似的东西:
data = delete(data[:,i:])
Run Code Online (Sandbox Code Playgroud)
但不知道如何检查列的总和 == 0 以及如何应用于整个数组。如果有人可以对此进行扩展或有更好的方法,请告诉我。谢谢
这是我的确切代码:
import numpy as np
with open('test.csv','r') as r:
all_data = [line.strip() for line in r]
titles = all_data[0].split(',')
samples = []
for i in all_data:
samples.append(i.split(',')[0])
print titles
print samples
data = np.loadtxt('test.csv', delimiter=',', skiprows=1, usecols=range(1,5))
print data
numeric_data = data[1:, …
Run Code Online (Sandbox Code Playgroud) I have a df as follows:
CHROM POS SRR4216489 SRR4216675 SRR4216480
0 1 127536 ./. ./. ./.
1 1 127573 ./. 0/1:0,5:5:0:112,1,10 ./.
2 1 135032 ./. 1/1:13,0:13:3240:0,30,361 0/0:13,0:13:3240:0,30,361
3 1 135208 ./. 0/0:5,0:5:3240:0,20,160 0/1:5,0:5:3240:0,20,160
4 1 138558 1/1:5,0:5:3240:0,29,177 0/0:0,5:5:0:112,1,10 ./.
Run Code Online (Sandbox Code Playgroud)
I would like to replace the contents of the sample columns depending on certain conditions. The sample columns are SRR4216489, SRR4216675, SRR4216480. I am looking to replace './.' with 0.5, anything with 0/0 at the start with 0.0 and …
我正在尝试将 python lambda 部署到 aws。当给定存储桶名称和文件路径时,此 lambda 只会从 s3 存储桶读取文件。如果我运行以下命令,它可以在本地机器上正常工作:
sam build && sam local invoke --event testfile.json GetFileFromBucketFunction
Run Code Online (Sandbox Code Playgroud)
文件中的数据打印到控制台。接下来,如果我运行以下命令,lambda 将被打包并发送到 my-bucket。
sam build && sam package --s3-bucket my-bucket --template-file .aws-sam\build\template.yaml --output-template-file packaged.yaml
Run Code Online (Sandbox Code Playgroud)
下一步是在 prod 中部署,所以我尝试以下命令:
sam deploy --template-file packaged.yaml --stack-name getfilefrombucket --capabilities CAPABILITY_IAM --region my-region
Run Code Online (Sandbox Code Playgroud)
现在可以在 lambda 控制台中看到 lambda,我可以运行它但不返回任何内容,如果我手动将服务角色更改为允许 s3 get/put 的服务角色,则 lambda 可以工作。然而,这破坏了使用 aws sam cli 的全部意义。
我想我需要在 template.yaml 文件中添加一个策略。此链接在这里似乎是说,我要补充的策略,如一个显示在这里。所以,我补充说:
Policies: S3CrudPolicy
Run Code Online (Sandbox Code Playgroud)
在“Resources:GetFileFromBucketFunction:Properties:”下,我重建应用程序并重新部署,部署失败并在 cloudformation 中出现以下错误:
1 validation error detected: Value 'S3CrudPolicy' at 'policyArn' failed to …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种将字符串转换为列表列表的优雅方法.我正在从文本文件中读取它们,因此不能改变我收到字符串的格式.这里作为示例字符串:
a = "[[1,2,3],[4,5,6],[7,8,9]]"
Run Code Online (Sandbox Code Playgroud)
我想把它转换成这样的东西:
c = [[1,2,3],[4,5,6],[7,8,9]]
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一方法就是使用.split()和.replace()来完成一些涉及几个步骤的笨重
b = a.split('],[')
for i in range(len(b)):
b[i] = b[i].replace('[','')
b[i] = b[i].replace(']','')
b=[[x] for x in b]
b = [float(x[0].split(',')) for x in b]
c=[]
for l in b:
n=[]
for x in l:
n.append(float(x))
c.append(n)
Run Code Online (Sandbox Code Playgroud)
虽然这很有效,但它令人厌恶和笨拙.如果有人知道这样做的优雅方式,请告诉我.非常感谢