2014-10-31 5 views
3

python blaze 모듈을 사용하여 분석하는 방법에 대한 간단한 질문이 있습니다. 그래서, 나는이 코드를 할 노력하고있어 :열 사이의 상관 관계 python blaze

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) 

을 그리고 여기 내가이 오류가있어 : 어떤 불꽃 문서를 읽고 나면

TypeError: len() of unsized object 

을, 내가 문제가 불꽃 열을 변환하는 방법에 대한 것을 발견 이 같은 일부 구조 :

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])와 같은 계산을 할 수 있습니까?) 의미가있는 경우, 파이썬 3.4에 대한 아나콘다를 사용하여 m, 화재의 내 버전 : scipy.stats 같은

import blaze 
print(blaze.__version__) 
#returns 0.6.3 

답변

3

모듈은 종종 명시 적으로 NumPy와 배열 또는 팬더 DataFrame를 기대합니다. 그들의 논리는 이러한 데이터 구조로 구워집니다.

Blaze는 외부 데이터 집합 (예 : sqlite 데이터베이스)에서 numpy 또는 pandas를 수행하는 데 도움이되지만 scipy.stats과 같은 라이브러리에 접근하여 코드를 변경할 수 없습니다. (당신이 여기에서하고있는 것처럼)

  1. 가 ndarray/DataFrame에 sqlite가에서 모든 데이터를 빨아 (이 느린)
  2. 은 그래서 아무튼 것을 scipy.stats 향상 :

    나는 다음과 같은 솔루션을 참조 특정 데이터 구조를 가정합니다.

  3. 더 일반적인 방법으로 알고리즘을 다시 정의하는 것은 매우 간단 할 것 피어슨 상관 관계의 경우 블레이즈

를 포함하는 더 일반적인 인터페이스에 몇 가지 기본적인 통계를 작성합니다 (이 성숙 코드베이스를 변경 요구) (#삼). 아마도 Blaze-stats 또는 일반적인 통계 모듈이 여기에 적합 할 것입니다.

일반적으로 Blaze는 기존의 과학적인 파이썬 코드가 외국 데이터 구조에서 작동한다는 약속을 제공하지 않습니다. 그것은 고결한 목표입니다.

+0

답변 해 주셔서 감사합니다. 이제 ** into ** 함수를 통해 blaze 배열과 ndarray 사이의 간단한 변환을 사용합니다. 이 경우 ndarray 로의 변환이 더 나은 것으로 보입니다. – IPolar