小编Kri*_*pta的帖子

Python Pandas - 使用to_sql以块的形式写入大数据帧

我正在使用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)

python mysql sql sqlalchemy pandas

15
推荐指数
2
解决办法
1万
查看次数

更改firebase数据模型(多个应用程序版本正在生产中)

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

architecture firebase firebase-realtime-database

13
推荐指数
1
解决办法
555
查看次数

从Numpy数组中删除列的有效方法?

如果我有一个非常大的numpy数组和一个无用的列,我怎么能删除它而不创建原始数组的副本?

np.delete(my_np_array, 0, 1)
Run Code Online (Sandbox Code Playgroud)

上面的代码将返回没有第零列的数组副本.但我想简单地删除该列,my_np_array因为我不需要它.对于非常大的数据集,内存管理变得很重要,并且复制可能不是一种选择.

python arrays numpy slice

6
推荐指数
1
解决办法
6571
查看次数

是否有Python约定以避免冗长的代码行?

我应该创建变量只是为了避免冗长的代码行吗?例如,在下面的代码中,变量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)

python

5
推荐指数
1
解决办法
1306
查看次数

Django:通过send_mass_mail()发送HTML电子邮件

从电子邮件上的文档看来,应该使用HTML,send_mail()但不能使用HTML send_mass_mail()。我的理解是正确的send_mass_mail()吗?如果可以,那么是否存在一种无需编写自定义循环即可获得HTML功能的变通办法?

https://docs.djangoproject.com/zh-CN/1.7/topics/email/

python django django-views django-email python-2.7

5
推荐指数
1
解决办法
2438
查看次数

Celery 可以在 Elastic Beanstalk 上运行吗?

我正在寻找一种在 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

5
推荐指数
1
解决办法
3266
查看次数

如何在Scikit-learn的RandomForestRegressor中排序"feature_importances_"

如果我运行一个模型(在这种情况下称为clf),我得到的输出看起来像这样.如何将其与用于训练分类器的功能输入相关联?

>>> clf.feature_importances_

array([ 0.01621506,  0.18275428,  0.09963659,... ])
Run Code Online (Sandbox Code Playgroud)

python random-forest scikit-learn

4
推荐指数
1
解决办法
1万
查看次数

为什么(false || null)返回null,而(null || false)返回false?

为什么false || null返回的结果不同null || false

return myVar || false如果myVar是null或者false,我可以安全地依赖返回false true吗?

所有组合:

false || null

空值

null || false

true || null

真正

null || true

真正

javascript

4
推荐指数
1
解决办法
3609
查看次数

Scikit-learn Multicore:"AttributeError:StdIn实例没有属性'close'"

我正在使用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的事实有关,但我不知道如何让它工作.任何想法都表示赞赏 - 谢谢!

python pycharm scikit-learn

3
推荐指数
1
解决办法
1575
查看次数

Django使用"登录"两次.导入时如何解决冲突?

from django.contrib.auth import authenticate, login
from django.contrib.auth.views import login
Run Code Online (Sandbox Code Playgroud)

如果我同时要求"登录",那么理想的做法是什么?谢谢!

python django django-views django-authentication python-2.7

1
推荐指数
1
解决办法
89
查看次数