首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python blaze列之间的相关性

python blaze列之间的相关性
EN

Stack Overflow用户
提问于 2014-10-31 19:13:25
回答 1查看 412关注 0票数 3

得到了一个关于如何使用python blaze模块进行分析的简单问题。所以,我试着做这段代码:

代码语言:javascript
复制
from blaze import SQL,Table
from sqlalchemy import create_engine
from scipy.stats import pearsonr
sql_path=r'/path/to/my/database.db'
e=create_engine('sqlite:///%s'%sql_path)
blz_sql=SQL(e,'analysis_dataframe')
blz_frame=Table(blz_sql)
blz_cols=blz_frame.columns
corr=pearsonr(blz_frame[blz_cols[0]],blz_frame[blz_cols[10]])
print(corr)

这里我得到了这个错误:

代码语言:javascript
复制
TypeError: len() of unsized object

在阅读了一些blaze文档后,我发现这个问题是关于将blaze列转换成这样的结构:

代码语言:javascript
复制
import pandas as pd
from blaze import into
df=into(pd.DataFrame,blz_frame[blz_cols[0]]

但此转换会使列列表上的pearsonr迭代计算速度变慢。那么,我如何简单地将blaze列转换为np.array来使用计算(就像它上的pearsonr或statsmodels.api.Logit(blz_frame.y,blz_frame[train_cols])?)如果有意义的话,我将Anaconda用于Python 3.4,我的blaze版本:

代码语言:javascript
复制
import blaze
print(blaze.__version__)
#returns 0.6.3
EN

回答 1

Stack Overflow用户

发布于 2014-10-31 23:33:54

scipy.stats这样的模块通常需要一个numpy数组或pandas DataFrame。它们的逻辑被嵌入到这些数据结构中。

Blaze可以帮助你在外来数据集(比如你的sqlite数据库)上做numpy或者pandas之类的事情,但是不能接触到像scipy.stats这样的库,也不能修改他们的代码。

我看到了以下解决方案:

  1. 将sqlite中的所有数据都吸到一个ndarray/DataFrame中(就像你在这里做的那样)(这很慢)
  2. 改进了scipy.stats,这样它就不会假设特定的数据结构。(这将需要在包含Blaze

的更通用界面上更改成熟codebase)

  • Write的一些基本统计数据

在皮尔逊相关的情况下,以更一般的方式重新定义算法将是非常简单的(#3)。也许Blaze-stats或者只是一般的stats模块在这里是合适的。

一般来说,Blaze不能保证现有的科学python代码可以在外来数据结构上工作。这是一个远大的目标。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26673327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档