小编DaS*_*ode的帖子

Patsy:测试数据中分类字段的新级别

我正在尝试使用Patsy(使用sklearn,pandas)来创建一个简单的回归模型.R风格的公式创作是一个主要的吸引力.

我的数据包含一个名为" ship_city " 的字段,该字段可以包含来自印度的任何城市.由于我将数据划分为训练集和测试集,因此有几个城市只出现在其中一个集合中.代码段如下:

df_train_Y, df_train_X = dmatrices(formula, data=df_train, return_type='dataframe')
df_train_Y_design_info, df_train_X_design_info = df_train_Y.design_info, df_train_X.design_info
df_test_Y, df_test_X = build_design_matrices([df_train_Y_design_info.builder, df_train_X_design_info.builder], df_test, return_type='dataframe')
Run Code Online (Sandbox Code Playgroud)

最后一行引发以下错误:

patsy.PatsyError:将数据转换为分类时出错:值为'Kolkata'的观察值与任何预期的级别都不匹配

我相信这是一个非常常见的用例,其中训练数据不会包含所有分类字段的所有级别.Sklearn的DictVectorizer可以很好地处理这个问题.

有什么方法可以让我和Patsy合作吗?

python scikit-learn patsy

8
推荐指数
2
解决办法
1665
查看次数

用 Python 计算 XIRR

我需要计算一段时间内进行的金融投资的 XIRR。numpy、pandas 或普通 python 中是否有任何函数可以执行此操作?

参考:什么是 XIRR?

原问题中接受的答案不正确,可以改进。

python numpy pandas

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

带有WHERE子句的PostgreSQL Upsert

我正在尝试将Oracle合并查询迁移到PostgreSql.正如在描述这个文章,Postgres的UPSERT语法支持"where子句"确定冲突的条件.

不幸的是,该网页没有提供"where子句"的示例.我尝试在其他地方寻找它但却找不到它.因此这个问题.

按照上面给出的网页中的相同示例,这是一个示例设置:

CREATE TABLE customers (
    customer_id serial PRIMARY KEY,
    name VARCHAR UNIQUE,
    email VARCHAR NOT NULL,
    active bool NOT NULL DEFAULT TRUE
);

INSERT INTO customers (NAME, email) VALUES
 ('IBM', 'contact@ibm.com'),
 ('Microsoft', 'contact@microsoft.com'),
 ('Intel','contact@intel.com');


SELECT * FROM customers;
 customer_id |   name    |         email         | active
-------------+-----------+-----------------------+--------
           1 | IBM       | contact@ibm.com       | t
           2 | Microsoft | contact@microsoft.com | t
           3 | Intel     | contact@intel.com     | t
(3 rows)
Run Code Online (Sandbox Code Playgroud)

我希望我的UPSERT语句看起来像这样:

INSERT INTO customers (NAME, email)
VALUES …
Run Code Online (Sandbox Code Playgroud)

sql postgresql unique upsert

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

标签 统计

python ×2

numpy ×1

pandas ×1

patsy ×1

postgresql ×1

scikit-learn ×1

sql ×1

unique ×1

upsert ×1