我正在使用docker-compose来部署多容器python Flask Web应用程序.我在构建期间难以理解如何在postgresql数据库中创建表,所以我不必用psql手动添加它们.
我的docker-compose.yml文件是:
web:
restart: always
build: ./web
expose:
- "8000"
links:
- postgres:postgres
volumes:
- /usr/src/flask-app/static
env_file: .env
command: /usr/local/bin/gunicorn -w 2 -b :8000 app:app
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- web
links:
- web:web
data:
restart: always
image: postgres:latest
volumes:
- /var/lib/postgresql
command: "true"
postgres:
restart: always
image: postgres:latest
volumes_from:
- data
ports:
- "5432:5432"
Run Code Online (Sandbox Code Playgroud)
我不想输入psql才能输入:
CREATE DATABASE my_database;
CREATE USER this_user WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE …Run Code Online (Sandbox Code Playgroud) 我有困难装载包含GIS数据如下JSON(https://data.cityofnewyork.us/resource/5rqd-h5ci.json)成GeoDataFrame.
我尝试设置几何时,以下代码失败.
import requests
import geopandas as gpd
data = requests.get("https://data.cityofnewyork.us/resource/5rqd-h5ci.json")
gdf = gpd.GeoDataFrame(data.json())
gdf = gdf.set_geometry('the_geom')
gdf.head()
Run Code Online (Sandbox Code Playgroud) 我正在努力保持数据科学项目组织良好,所以我在我的src目录中创建了一个目录,其中包含utils一个名为的文件helpers.py,其中包含一些将在许多脚本中使用的辅助函数.我应该如何func_name从src/utils/helpers.py一个完全不同的目录中导入文件的最佳实践是什么,例如src/processing/clean_data.py?
我看到了这个问题的答案,我已经实现了一个有效的解决方案,但这感觉很难看:
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))))
Run Code Online (Sandbox Code Playgroud)
我这样做了吗?我是否需要将此添加到每个要导入的脚本中func_name,例如train_model.py?
我当前的项目文件夹结构:
myproject
/notebooks
notebook.ipynb
/src
/processing
clean_data.py
/utils
helpers.py
/models
train_model.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
示例文件:
# clean_data.py
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))))
from src.utils.helpers import func_name
func_name()
# helpers.py
def func_name():
print('I'm a helper function.')
Run Code Online (Sandbox Code Playgroud) 假设样本量不相等,在下列情况下我会用什么样的测试来比较样本均值(如果以下任何一种情况不正确,请更正):
正态分布=真和方差齐性=真
scipy.stats.ttest_ind(sample_1, sample_2)
Run Code Online (Sandbox Code Playgroud)
正态分布=真和方差齐性=假
scipy.stats.ttest_ind(sample_1, sample_2, equal_var = False)
Run Code Online (Sandbox Code Playgroud)
正态分布=假和方差的均匀性=真
scipy.stats.mannwhitneyu(sample_1, sample_2)
Run Code Online (Sandbox Code Playgroud)
正态分布=假和方差齐性=假
???
Run Code Online (Sandbox Code Playgroud) 在我的UserForm中,我想为我的TextBox设置一个默认值,在聚焦时会突出显示.
Private Sub UserForm_Initialize()
NameTextBox.Value = "Your Name Here"
NameTextBox.SetFocus
End Sub
Run Code Online (Sandbox Code Playgroud)
当此代码运行时,光标应设置在默认文本的末尾,即"...... Here"之后.我希望突出显示"Your Name Here",以便在生成表单时,用户可以开始替换该默认/占位符文本.
你能帮我写代码来设置可编辑的默认值吗?
当我在Windows计算机上运行以下脚本时,我没有看到该log_pid函数的任何日志消息,但是当我在Unix/Mac上运行时,我会这样做.我之前已经读过,与Mac相比,Windows上的多处理方式不同,但我不清楚应该做些什么更改才能让这个脚本在Windows上运行.我正在运行Python 3.6.
import logging
import sys
from concurrent.futures import ProcessPoolExecutor
import os
def log_pid(x):
logger.info('Executing on process: %s' % os.getpid())
def do_stuff():
logger.info('this is the do stuff function.')
with ProcessPoolExecutor(max_workers=4) as executor:
executor.map(log_pid, range(0, 10))
def main():
logger.info('this is the main function.')
do_stuff()
if __name__ == '__main__':
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.info('Start of script ...')
main()
logger.info('End of script ...')
Run Code Online (Sandbox Code Playgroud) 如果标题不清楚,我深表歉意,但我很难表达这个问题。如果我只是展示我想做的事情,那可能是最好的。
一些上下文:我解析了一个文档的名称,并将每个名称与它出现的页码一起存储。我需要转换 DataFrame 以便每个名称都有一行,页码列组合了名称出现的所有页面。我认为这需要 GroupBy,但我不完全确定。
我目前的数据:
data = np.array([['John', 'Smith', 1], ['John', 'Smith', 7], ['Eric', 'Adams', 9], ['Jane', 'Doe', 14], ['Jane', 'Doe', 16], ['John', 'Smith', 19]])
pd.DataFrame(data, columns=['FIRST_NM', 'LAST_NM', 'PAGE_NUM'])
FIRST_NM LAST_NM PAGE_NUM
0 John Smith 1
1 John Smith 7
2 Eric Adams 9
3 Jane Doe 14
4 Jane Doe 16
5 John Smith 19
Run Code Online (Sandbox Code Playgroud)
所需的数据帧:
FIRST_NM LAST_NM PAGE_NUM
0 John Smith 1,7,19
1 Eric Adams 9
2 Jane Doe 14,16
Run Code Online (Sandbox Code Playgroud) 我正在开发一个运行python脚本的简单Web应用程序,大约需要5-10分钟.我没有让用户在网站上等待,而是使用Celery在后台运行作业,并在脚本完成时向用户发送电子邮件通知.
我的问题很简单:Celery的日志工作在哪里?目前,如果作业因为遇到致命错误而失败,我无从得知.
将芹菜日志文件显示如何设置日志,但它并不完全清楚,我在那里我可以访问日志(我想保存为一个文件)工作完成后.
app.py
#----------------------------------------------------------------------------#
# Imports
#----------------------------------------------------------------------------#
from flask import Flask, render_template, request, flash, send_file, redirect, url_for
from werkzeug import secure_filename
import logging
from logging import Formatter, FileHandler
from forms import *
import my_module
from tasks import make_celery
from celery.utils.log import get_task_logger
#----------------------------------------------------------------------------#
# App Config.
#----------------------------------------------------------------------------#
app = Flask(__name__)
app.config.from_object('config')
celery = make_celery(app)
logger = get_task_logger(__name__)
format = "%(asctime)s - [%(levelname)s] %(message)s"
logging.basicConfig(filename='app-errors.log',
filemode='a',
format=format,
level=logging.DEBUG)
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
logging.getLogger(__name__).addHandler(console)
#----------------------------------------------------------------------------#
# Controllers.
#----------------------------------------------------------------------------#
@celery.task …Run Code Online (Sandbox Code Playgroud) 我正在参加Walmart Kaggle比赛,我正在尝试创建一个"FinelineNumber"栏目的虚拟列.对于上下文,df.shape返回(647054, 7).我正在尝试制作一个虚拟列df['FinelineNumber'],它有5,196个唯一值.结果应该是形状的数据框(647054, 5196),然后我计划到concat原始数据框.
几乎每次我运行时fineline_dummies = pd.get_dummies(df['FinelineNumber'], prefix='fl'),我得到以下错误消息The kernel appears to have died. It will restart automatically.我在具有16GB RAM的MacBookPro上的jupyter笔记本中运行python 2.7.
有人可以解释为什么会发生这种情况(以及为什么它发生在大多数时间但不是每次都发生)?它是一个jupyter笔记本或熊猫bug?此外,我认为它可能与RAM不足,但我在具有> 100 GB RAM的Microsoft Azure机器学习笔记本上得到相同的错误.在Azure ML上,内核每次都会死掉 - 几乎立刻就会死掉.
python pandas ipython-notebook azure-machine-learning-studio
有没有一种方法可以使用类似于的语法来汇总多个pandas DataFrame pd.concat([df1, df2, df3, df4])。我从文档中知道我可以做df1.sum(df2, fill_value=0),但是我有一长串需要汇总的DataFrame,并且想知道是否可以在不编写循环的情况下做到。
有点相关的问题/答案:熊猫求和多个数据帧(堆栈溢出)
结果应为以下示例:
idx1 = pd.MultiIndex.from_tuples([('a', 'A'), ('a', 'B'), ('b', 'A'), ('b', 'D')])
idx2 = pd.MultiIndex.from_tuples([('a', 'A'), ('a', 'C'), ('b', 'A'), ('b', 'C')])
idx3 = pd.MultiIndex.from_tuples([('a', 'A'), ('a', 'D'), ('b', 'A'), ('b', 'C')])
np.random.seed([3,1415])
df1 = pd.DataFrame(np.random.randn(4, 1), idx1, ['val'])
df2 = pd.DataFrame(np.random.randn(4, 1), idx2, ['val'])
df3 = pd.DataFrame(np.random.randn(4, 1), idx3, ['val'])
Run Code Online (Sandbox Code Playgroud)
df1
df2
df3
结果应如下所示: