我想在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)
同样的错误: …
我有许多需要分析的 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) 我正在开发一个项目,该项目结合了一些基于注册用户的数据源.特别是一个问题给了我很多问题:
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) 我的公司最近更改了我们的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数据直接输入到熊猫中。
我有来自数千个网站的原始内容(文本和 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) 我有一个收入费用清单,我需要向上或向下舍入到最近的垃圾箱.
例如,如果销售的产品成本如下:
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美元.
编辑
虽然我链接到的解决方案中的一个答案可以向上/向下舍入,但似乎方法可以返回不一致的结果,因此这个新帖子.
R 有一个负二项式函数,可以用mu
而不是概率参数化(例如,浮点数 >= 0 和 <=1)。我正在尝试复制此发行版:
rnbinom(1000,size=0.3,mu=15)
Run Code Online (Sandbox Code Playgroud)
在 Python 中。据我所知,Numpy 的负二项式函数只允许概率。另外,我不清楚size
Numpy 中的参数是什么。
有许多关于在 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 ×8
pandas ×5
ipython ×2
numpy ×2
amazon-ec2 ×1
anaconda ×1
json ×1
matplotlib ×1
mysql ×1
nltk ×1
psycopg2 ×1
python-3.x ×1
r ×1
sqlalchemy ×1
ssl ×1