我很沮丧地看到scikit-learn不支持Python 3 ...是否有人可以为Python 3推荐的类似软件包?
我正在使用cursor.executemany
从CSV文件中将批量行插入到SQLite表中,其中一些表预计会基于主键字段重复.当我执行命令时,我可以预测得到完整性错误,并且没有插入任何内容.
如何选择性地仅插入非重复行而不必提前手动过滤它们?我知道在纯Python中你可以简单地创建一个错误异常并跳过重复的行 - 我可以在这个用例中实现类似的东西吗?
这似乎是一个愚蠢的问题,但这已经困扰了我一段时间.
DF1:
imp_type value
1 abc
2 def
3 ghi
Run Code Online (Sandbox Code Playgroud)
DF2:
id value2
1 123
2 345
3 567
Run Code Online (Sandbox Code Playgroud)
Merginge 2 df:
df1.merge(df2, left_on='imp_type',right_on='id')
Run Code Online (Sandbox Code Playgroud)
收益率:
imp_type value id value2
1 abc 1 123
2 def 2 345
3 ghi 3 567
Run Code Online (Sandbox Code Playgroud)
然后我需要删除id
列,因为它基本上是imp_type列的副本.为什么默认情况下合并会在两个数据帧之间拉入连接键?如果你不想拉入连接键,我认为至少应该设置为False的参数.有没有这样的东西或者我做错了什么?
交互式控制台(也称为PyDev控制台),我用它来运行带有Control + Alt + Enter
负载的脚本C:\Program Files (x86)\eclipse
作为默认目录.如何将其加载到脚本或项目所在的默认工作目录中?
我现在一直在研究这个问题,似乎没什么用.看起来其他人一直有同样的问题而没有答案:
https://superuser.com/questions/486759/how-can-i-select-a-default-interactive-console-in-pydev
我有一个DataFrame如下,其中Id是一个字符串,Date是一个日期时间:
Id Date
1 3-1-2012
1 4-8-2013
2 1-17-2013
2 5-4-2013
2 10-30-2012
3 1-3-2013
Run Code Online (Sandbox Code Playgroud)
我想整合表格,为每个具有最新日期的Id显示一行.
有关如何做到这一点的任何想法?
如果df['col']='a','b','c'
和df2['col']='a123','b456','d789'
我如何创建df2['is_contained']='a','b','no_match'
,如果从值,其中df['col']
来自值范围内被发现df2['col']
的df['col']
返回值,如果没有发现匹配,“NO_MATCH”返回?此外,我不希望有多个匹配项,但在不太可能的情况下,我想返回一个像“多个匹配项”这样的字符串。
我正在使用Python AWS包boto v2.7与Mturk API进行交互,以创建和管理HIT等.
在尝试使用现有模板创建HIT时,我遇到了困难.亚马逊有关该主题的文档如下:http://docs.aws.amazon.com/AWSMechTurk/2012-03-25/AWSMturkAPI/ApiReference_CreateHITOperation.html
我的代码是:
from boto.mturk.connection import MTurkConnection
mtc = MTurkConnection(aws_access_key_id=ACCESS_ID,
aws_secret_access_key=SECRET_KEY,
host=HOST)
mtc.create_hit(hit_layout=HIT_LAYOUT_ID)
Run Code Online (Sandbox Code Playgroud)
错误是:
MTurkRequestError: MTurkRequestError: 200 OK
<?xml version="1.0"?>
<CreateHITResponse><OperationRequest><RequestId>986926dd-0263-4aca-970c-139b7ed4a0e8</RequestId></OperationRequest><HIT><Request><IsValid>False</IsValid><Errors><Error><Code>AWS.MechanicalTurk.InvalidParameterValue</Code><Message>There was an error parsing the request (1359492767224 s)</Message></Error></Errors></Request></HIT></CreateHITResponse>
Run Code Online (Sandbox Code Playgroud)
看起来MTurk API需要一个命中布局参数,如下所示:http://docs.aws.amazon.com/AWSMechTurk/2012-03-25/AWSMturkAPI/ApiReference_HITLayoutArticle.html
虽然我的原始模板确实使用了占位符值,但为了简单起见,我删除了它们,并试图让代码正常工作.在这种情况下,我认为唯一需要的参数是hit_layout?
这是对boto的api的限制还是我在这里遗漏了什么?
UPDATE
我尝试使用评论中提到的mturkcore模块,结果如下.
码:
import mturkcore
login_dict = {'use_sandbox':True,
'stdout_log':False,
'AWS_ACCESS_KEY_ID':'ACCESS_ID',
'AWS_SECRET_ACCESS_KEY':'PASSWORD'}
mtc = mturkcore.MechanicalTurk(login_dict)
request_params = {"Title":"Test Layout",
"Description":"Test Description",
"HITLayoutId":"2QNNJKM05BMJLZIA6G7TS9RA7TECHE",
"Reward":0.05,
"LifetimeInSeconds":6000,
"AssignmentDurationInSeconds":600
}
mtc.create_request("CreateHIT", request_params)
Run Code Online (Sandbox Code Playgroud)
这会从suds产生错误信息:
TypeNotFound: Type not found: 'HITLayoutId'
Run Code Online (Sandbox Code Playgroud)
我再次按照这里的说明操作:http://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_CreateHITOperation.html这看起来相当简单.
解决方案 …
熟悉的问题,但与Vertica.我想基于每个tag_id的sum(imps)返回前5个geo_country行.这是我开始的查询:
SELECT tag_id,
geo_country,
SUM(imps) AS imps,
RANK() OVER (PARTITION BY tag_id ORDER BY SUM(imps) DESC) AS rank
FROM table1
WHERE tag_id IN (2013150,1981153)
AND ymd > CURRENT_DATE - 3
GROUP BY 1,
2 LIMIT 10;
Run Code Online (Sandbox Code Playgroud)
这实际上只返回WHERE子句(2013150)中第一个标记的行.我知道另一个标签的sum(imps)值足够高,应该在结果中包含它.
另外,我如何实现前N部分?我尝试在OVER函数中添加LIMIT子句,但它看起来不像是一个可接受的参数.
我有一个非常大的数据帧(~1.7MM行×6列).相关数据的简化示例如下:
City Borough
Brooklyn Brooklyn
Astoria Queens
Astoria Unspecified
Ridgewood Unspecified
Ridgewood Queens
Run Code Online (Sandbox Code Playgroud)
所以我试图根据City列中的信息填充'Unspecified'值.例如,City Ridgewood在一个实例中位于Unspecified Borough,但正确地将Borough列为数据集中其他地方的Queens.
我已经探索过Panda的补充,但它似乎不符合我的需求.我也考虑过np.where方法,但我不确定它在这种情况下是如何工作的.我对Pandas很新,但是地图/应用功能可能是我需要的吗?这可能可以通过一千种不同的方式实现,但是在寻找不会因数据大小而爬行的东西.
编辑:我能够创建一个字典,其中包含城市和行政区之间发生率最高的"对",其代码如下:
specified = data[['Borough','City']][data['Borough']!= 'Unspecified']
paired = specified.Borough.groupby(specified.City).max()
paired = paired.to_dict()
Run Code Online (Sandbox Code Playgroud)
配对的词典以城市为关键,自治市镇为价值.现在最后一步是将其应用/映射回行政区列......我该怎么做?
我有一个使用 pivot_table 方法创建的 Pandas 数据框。它的结构如下:
import numpy as np
import pandas
datadict = {
('Imps', '10day avg'): {'All': '17,617,872', 'Crossnet': np.nan, 'N/A': '17,617,872'},
('Imps', '30day avg'): {'All': '17,302,111', 'Crossnet': '110','N/A': '18,212,742'},
('Imps', '3day avg'): {'All': '8,029,438', 'Crossnet': '116', 'N/A': '8,430,904'},
('Imps', 'All'): {'All': '14,156,666', 'Crossnet': '113', 'N/A': '14,644,823'},
('Spend', '10day avg'): {'All': '$439', 'Crossnet': np.nan, 'N/A': '$439'},
('Spend', '30day avg'): {'All': '$468', 'Crossnet': '$0', 'N/A': '$492'},
('Spend', '3day avg'): {'All': '$209', 'Crossnet': '$0', 'N/A': '$219'},
('Spend', 'All'): {'All': '$368', 'Crossnet': …
Run Code Online (Sandbox Code Playgroud) python ×7
pandas ×5
python-2.7 ×2
boto ×1
eclipse ×1
pydev ×1
python-3.x ×1
scikit-learn ×1
sql ×1
sqlite ×1
vertica ×1
vsql ×1