小编mea*_*ngs的帖子

TclError:EC2上没有显示名称和$ DISPLAY环境变量

我想在Amazon EC2(Linux AMI)上使用iPython.我已经安装了Anaconda并启动了iPython来测试我已经创建的一些脚本.现在我只对在终端(不是笔记本电脑)中运行它感兴趣.

在我的代码的开头我总是这样做:

import json
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
Run Code Online (Sandbox Code Playgroud)

但是,我从文本编辑器尝试了CTRL + C,然后在终端中使用%paste我得到错误:

TclError: no display name and no $DISPLAY environment variable
Run Code Online (Sandbox Code Playgroud)

如果我按照这个建议尝试ssh -X name @ host 没有显示名称和使用tkinter通过ssh的$ DISPLAY环境变量,我得到:

/opt/X11/bin/xauth:  file /Users/adrianp/.Xauthority does not exist
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
X11 forwarding request failed on channel 0
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我尝试了https://superuser.com/questions/249045/x11-forwarding-from-amazon-ec2-ami,但仍然收到警告:

 Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Run Code Online (Sandbox Code Playgroud)

同样的错误: …

python amazon-ec2 ipython anaconda

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

在 Python 中读取数千个 JSON 文件的最快方法

我有许多需要分析的 JSON 文件。我正在使用 iPython ( Python 3.5.2 | IPython 5.0.0),将文件读入字典并将每个字典附加到列表中。

我的主要瓶颈是读取文件。有些文件较小,读取速度很快,但较大的文件会减慢我的速度。

这是一些示例代码(抱歉,我无法提供实际的数据文件):

import json
import glob

def read_json_files(path_to_file):
    with open(path_to_file) as p:
        data = json.load(p)
        p.close()
    return data

def giant_list(json_files):
    data_list = []
    for f in json_files:
        data_list.append(read_json_files(f))
    return data_list

support_files = glob.glob('/Users/path/to/support_tickets_*.json')
small_file_test = giant_list(support_files)

event_files = glob.glob('/Users/path/to/google_analytics_data_*.json')
large_file_test = giant_list(event_files)
Run Code Online (Sandbox Code Playgroud)

支持票证的大小非常小——我见过的最大的是 6KB。所以,这段代码运行得非常快:

In [3]: len(support_files)
Out[3]: 5278

In [5]: %timeit giant_list(support_files)
1 loop, best of 3: 557 ms per loop
Run Code Online (Sandbox Code Playgroud)

但较大的文件肯定会减慢我的速度...这些事件文件每个可以达到约 2.5MB:

In [7]: len(event_files) # there …
Run Code Online (Sandbox Code Playgroud)

python json ipython python-3.x

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

Sqlalchemy在查询期间失去连接

我正在开发一个项目,该项目结合了一些基于注册用户的数据源.特别是一个问题给了我很多问题:

import numpy as np
import pandas as pd
from pandas import Series, DataFrame
from sqlalchemy import create_engine

# of course, the info here is obscured
prod_engine = create_engine('mysql+mysqlconnector://password@host:3306/database',pool_timeout=3600,pool_recycle=3600)

query_users = """
SELECT users.id,
CASE
    WHEN ((users.role = '' OR users.role IS NULL) AND users.plan LIKE 'pro%') OR users.role REGEXP '(pro|agent|manager)' THEN 'professional' ELSE 'consumer'
END AS 'modified_role',
users.created_at,
users.logged_in_at AS 'last_login',
COUNT(DISTINCT(folders.id)) AS 'folder_count',
IF(COUNT(DISTINCT(folders.id)) > 1, '2 or more','0 to 1') AS 'folder_group',
MIN(folders.created_at) AS 'first_folder_created',
MAX(folders.created_at) AS …
Run Code Online (Sandbox Code Playgroud)

python mysql sqlalchemy pandas

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

需要SSL时将Python /熊猫连接到Redshift

我的公司最近更改了我们的Redshift集群,现在它们需要SSL连接。过去,我通过此处详细介绍的方法将Python / pandas连接到Redshift:http : //measureallthethin.gs/blog/connect-python-and-pandas-to-redshift/

从SQLAlchemy文档看来,我需要做的就是添加connect_args={'sslmode':'require'}create_engine()调用中,正如该线程指出的那样:如何使用来自SqlAchemy + pg8000的SSL连接到Postgresql?

但是,我现在收到此错误:

OperationalError:(psycopg2.OperationalError)sslmode值“ require”在未编译SSL支持时无效

我将Anaconda发行版用于许多软件包,并且发现我需要按照以下说明更新psycopg2软件包:https : //groups.google.com/a/continuum.io/d/msg/conda/Fqv93VKQXAc/mHqfNK8xZWsJ

但是,即使在更新了psycopg2之后,我仍然遇到相同的错误,并且在如何进行进一步调试方面不知所措。我想弄清楚这一点,以便可以将Redshift数据直接输入到熊猫中。

python ssl psycopg2 pandas amazon-redshift

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

从语料库中去除非英语单词

我有来自数千个网站的原始内容(文本和 HTML 标记)。最终目标是探索主题建模聚类。有很多关于如何使用 Python 过滤掉非英语单词的示例,但不幸的是,大多数示例都不适用于我正在使用的语料库。几个原因:

  • 数据集中不包含地理信息,因此不能仅按英语国家过滤
  • 即使可以推断出某些地理数据(例如,.in顶级域),从该站点提取的文档仍有可能包含英文

这就是为什么以下帖子在我的情况下不太适用的原因:

在python中,提取非英语单词是一个好的开始,特别是因为它也去除了标点符号,但它仍然包含非英语单词:

import pandas as pd
from pandas import Series, DataFrame

In  [1]: test_str = Series(['?', 'hello','?????','Yo!','??? ???','+44 designer','{{appDetails.title}} {{"TERM','The Pen Company ?',np.nan,' Shopping Cart:0 Log In/Register'])

In  [2]: test_str.str.findall('[^\W]+')
Out [2]:
0                                       [?]
1                                   [hello]
2                                   [?????]
3                                      [Yo]
4                                [???, ???]
5                            [44, designer]
6                 [appDetails, title, TERM]
7                       [The, Pen, Company]
8                                       NaN
9    [Shopping, Cart, 0, Log, In, Register]
dtype: …
Run Code Online (Sandbox Code Playgroud)

python nltk pandas

5
推荐指数
0
解决办法
5891
查看次数

四舍五入到最近的Bin

我有一个收入费用清单,我需要向上向下舍入到最近的垃圾箱.

例如,如果销售的产品成本如下:

import numpy as np
bins = np.array([9.95,19.95,79.95])
Run Code Online (Sandbox Code Playgroud)

我有几个这样的指控:

x = np.array([6.68, 9.20, 12.5, 18.75, 21.59])
Run Code Online (Sandbox Code Playgroud)

我按照这个例子,这绝对是最接近的解决方案:

y = np.take(bins,np.digitize(x,bins))
Run Code Online (Sandbox Code Playgroud)

我认为将right=参数保留为默认值np.digitize 可以完成我需要的操作,但结果仍然是四舍五入的:

In [10]: y
Out[10]: array([  9.95,   9.95,  19.95,  19.95,  79.95])
Run Code Online (Sandbox Code Playgroud)

在我的特殊情况下,我需要向上向下舍入到最近的bin.例如,12.50美元的费用仅比$ 9.95低2.55美元,但所选择的选项19.95美元是7.45美元.

编辑

虽然我链接到的解决方案中的一个答案可以向上/向下舍入,但似乎方法可以返回不一致的结果,因此这个新帖子.

python numpy pandas

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

用 mu 参数化的 R 的 rnbinom 的 Python 等价物

R 有一个负二项式函数,可以用mu而不是概率参数化(例如,浮点数 >= 0 和 <=1)。我正在尝试复制此发行版:

rnbinom(1000,size=0.3,mu=15)
Run Code Online (Sandbox Code Playgroud)

在 Python 中。据我所知Numpy 的负二项式函数只允许概率。另外,我不清楚sizeNumpy 中的参数是什么。

python numpy r

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

Matplotlib中使用LineCollection时是否可以设置透明度?

有许多关于在 Matplotlib 中使用 LineCollections 的有用帖子。

我有工作代码,但无法弄清楚如何设置线条的透明度。例如,在 Pandas 中,这很简单:

df.plot(kind='line',alpha=.25)
Run Code Online (Sandbox Code Playgroud)

但是,我选择了 LineCollection 方法,因为我想绘制一个包含 >15k 行的数据框,而上面的示例不起作用。

我尝试ax.set_alpha(.25)在我的代码中添加:

fig, ax = plt.subplots()

ax.set_xlim(np.min(may_days), np.max(may_days))
ax.set_ylim(np.min(may_segments.min()), np.max(may_segments.max()))

line_segments = LineCollection(may_segments,cmap='jet')

line_segments.set_array(may_days)
ax.add_collection(line_segments)

ax.set_alpha(.05)

ax.set_title('Daily May Data')

plt.show()
Run Code Online (Sandbox Code Playgroud)

但没有任何变化。

不幸的是,我无法提供我正在使用的数据样本;然而,我发现这个Matplotlib gallery 文档的第二个例子很容易复制。

python matplotlib pandas

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