我正在使用Pandas的to_sql函数写入MySQL,由于帧大(1M行,20列)而导致超时.
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html
有没有更正式的方法来分块数据并在块中写行?我编写了自己的代码,这似乎有用.我更喜欢官方解决方案.谢谢!
def write_to_db(engine, frame, table_name, chunk_size):
start_index = 0
end_index = chunk_size if chunk_size < len(frame) else len(frame)
frame = frame.where(pd.notnull(frame), None)
if_exists_param = 'replace'
while start_index != end_index:
print "Writing rows %s through %s" % (start_index, end_index)
frame.iloc[start_index:end_index, :].to_sql(con=engine, name=table_name, if_exists=if_exists_param)
if_exists_param = 'append'
start_index = min(start_index + chunk_size, len(frame))
end_index = min(end_index + chunk_size, len(frame))
engine = sqlalchemy.create_engine('mysql://...') #database details omited
write_to_db(engine, frame, 'retail_pendingcustomers', 20000)
Run Code Online (Sandbox Code Playgroud) Firebase在生产中有多个版本的iOS应用程序时,更改数据模型的最佳方法是什么?
由于中间没有"应用程序服务器"层,因此数据库模型中的任何更改都可能会破坏旧版本的应用程序.
性能相关问题示例:
在版本1.0中,我天真地保留了与"/ posts /"下的帖子相关的所有内容.现在在2.0版本中,我想采用Firebase的建议并添加一个'/ user-post'端点来快速列出给定用户的所有帖子.
使用iOS应用1.0版的人不会将任何数据写入'/ user-posts',因为该端点以前不存在.因此,使用2.0版本的人看不到使用旧版应用程序的人创建的任何帖子.
从理论上讲,我可以在某个地方创建一个服务器来监听'/ post /'上的更改,并将它们添加到'/ user-posts'中.如果您有很多不同版本的应用程序,那么这似乎很难维持.
新功能问题示例:
让我们在你的移动应用程序的1.0版中说你写了新帖子到'/ posts /'.现在,在您的应用程序的2.0版本中,您将引入一个团队功能,所有帖子都需要在'/ team/team-id/posts'中.
尚未升级到2.0版的人仍将写入'/ posts'.使用版本2.0的用户从'/ team/team-id/posts'中读取这些帖子是不可见的.
我意识到你可以同时保留两个端点(以及基于团队ID的索引/帖子),但随着时间的推移,这似乎很难维护.
传统方案:
如果我使用的是Django或Express,我会进行数据库迁移,然后更新服务器端端点以创建博客帖子.
这将从客户端对数据库进行更改.我理论上可以在我的架构中添加一个应用程序服务器层Firebase,但这似乎不建议:https://firebase.googleblog.com/2013/03/where-does-firebase-fit-in-your -app.html
如果我有一个非常大的numpy数组和一个无用的列,我怎么能删除它而不创建原始数组的副本?
np.delete(my_np_array, 0, 1)
Run Code Online (Sandbox Code Playgroud)
上面的代码将返回没有第零列的数组副本.但我想简单地删除该列,my_np_array因为我不需要它.对于非常大的数据集,内存管理变得很重要,并且复制可能不是一种选择.
我应该创建变量只是为了避免冗长的代码行吗?例如,在下面的代码中,变量stream_records设置后仅使用一次。
stream_records = stream.get_latest_records( num_records_to_correlate ).values('value')
stream_values = [float(record['value']) for record in stream_records]
Run Code Online (Sandbox Code Playgroud)
我应该这样做吗?
stream_values = [float(record['value']) for record in stream.get_latest_records( num_records_to_correlate ).values('value')]
Run Code Online (Sandbox Code Playgroud)
我正在尝试针对可读性进行优化。对于是否更需要记住很多变量名还是更难于阅读较长的代码行,我会有些意见。
编辑:
考虑可读性的另一个有趣的选项(由于John Smith Optional):
stream_values = [
float(record['value'])
for record in stream.get_latest_records(
num_records_to_correlate
).values('value')
]
Run Code Online (Sandbox Code Playgroud) 从电子邮件上的文档看来,应该使用HTML,send_mail()但不能使用HTML send_mass_mail()。我的理解是正确的send_mass_mail()吗?如果可以,那么是否存在一种无需编写自定义循环即可获得HTML功能的变通办法?
我正在寻找一种在 Elastic Beanstalk 环境中运行 Celery 的直接方法。这是否存在,还是我需要改用 SQS?
我试过在 .config 文件中放一行,但没有很好的结果。这是我的 .config 文件:
container_commands:
01_syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
02_collectstatic:
command: "./manage.py collectstatic --noinput"
03_migrate:
command: "./manage.py migrate --noinput"
04_start_celery:
command: "./manage.py celery worker &"
Run Code Online (Sandbox Code Playgroud)
当我通过 SSH 连接到 EC2 服务器并运行时,ps -ef | grep celery它显示 Celery 没有运行。
任何帮助表示赞赏。谢谢!
django amazon-web-services celery amazon-elasticache amazon-elastic-beanstalk
如果我运行一个模型(在这种情况下称为clf),我得到的输出看起来像这样.如何将其与用于训练分类器的功能输入相关联?
>>> clf.feature_importances_
array([ 0.01621506, 0.18275428, 0.09963659,... ])
Run Code Online (Sandbox Code Playgroud) 为什么false || null返回的结果不同null || false?
return myVar || false如果myVar是null或者false,我可以安全地依赖返回false true吗?
所有组合:
false || null
空值
null || false
假
true || null
真正
null || true
真正
我正在使用PyCharm从Scikit-learn运行RandomForestRegressor.这在执行整个脚本时工作正常:
clf = ensemble.RandomForestClassifier(n_estimators=100, n_jobs = 4, verbose=1, oob_score=True)
clf = clf.fit(x_train, y_train)
Run Code Online (Sandbox Code Playgroud)
当我尝试从控制台运行该行时,我反复出现此错误:
AttributeError: StdIn instance has no attribute 'close'
File "/usr/local/Cellar/python/2.7.6_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 249, in _bootstrap
sys.stdin.close()
Run Code Online (Sandbox Code Playgroud)
如果我将n_jobs参数更改为n_jobs=1I,则不会出现错误,但它无法利用多线程.
我假设这与PyCharm控制台重定向stdin的事实有关,但我不知道如何让它工作.任何想法都表示赞赏 - 谢谢!
from django.contrib.auth import authenticate, login
from django.contrib.auth.views import login
Run Code Online (Sandbox Code Playgroud)
如果我同时要求"登录",那么理想的做法是什么?谢谢!
python ×7
django ×3
django-views ×2
python-2.7 ×2
scikit-learn ×2
architecture ×1
arrays ×1
celery ×1
django-email ×1
firebase ×1
javascript ×1
mysql ×1
numpy ×1
pandas ×1
pycharm ×1
slice ×1
sql ×1
sqlalchemy ×1