2016-12-26 3 views
0

파이썬에서 다음과 같은 코드를 사용하여 MongoDB에서 필요한 데이터를 반환합니다. 그래픽 분석을위한 쿼리 결과 깨기 Pymongo

Data = db.dataset.aggregate([{ 
    "$unwind": "$Records" 
}, { 
    "$unwind": "$Records.Properties" 
}, { 
    "$match": { 
     "Records.Properties.Property.Name": 'Data' 
    } 
}, { 
    "$project": { 
     "_id": 0, 
     "value": "$Records.Properties.value" 
    } 
}]) 

timestamp = dataset.find({"Records.Properties.Property.Name":'Data'},{"timestamp":1,"_id":0}) 

Print Data 

for a in timestamp: 
    print a 

내가 두 장기에 대한이와 장난 한 나에게 다음과 같은 결과

{u'ok': 1.0, u'waitedMS': 0L, u'result': [{u'value': u'-0,04149,-0,03866,-0,02914,-0,02319,-0,02027,-0,00234,0,00‌​564,0,01269,0,02852,‌​0,04648,0,05709,0,06‌​261,0,07325,0,08223,‌​0,08665,0,09229,0,09‌​688,0,09754,'}, {u'value': u'0,00218,0,00257,0,00232,0,00329,0,00279,0,00348,0,00322,0,‌​00313,0,00252,0,0031‌​1,0,00347,0,00278,0,‌​00309,0,00304,0,0038‌​2,0,00351,0,00119,0,‌​00277,0,00307'}]} 

{u'timestamp': datetime.datetime(2016, 8, 24, 14, 59, 4)} 
{u'timestamp': datetime.datetime(2016, 8, 21, 5, 59, 7)} 

를 제공하고 내가 그것을 간단해야한다 알고있다. 첫 번째 시간 스탬프를 첫 번째 값 집합에 넣고 두 번째 시간 스탬프를 두 번째 값 집합에 넣을 수 있도록 데이터를 분할하고 싶습니다.

또한 막대 그래프 대 시간 (0.01s por cada 값), (각 '0, xxxx'는 하나의 숫자 임)을 사용할 수 있도록 값 집합을 분해하려고했습니다.

감사합니다. 정말로 도움을 주셔서 감사합니다. 이 결과 목록 또는 문자열 또는 다른 것이 있습니까? 어떤 도움이라도 환상적입니다.

+0

난 [(\의 t ', 1) [0] I 데이터에 대한 그것이 를 출력 Y는 i.split]를'= '사용할 때 '확인 waitedMS 결과' –

답변

0

결과 pymongo의 결과가 특정 형식이므로 데이터를 검색하려면 데이터 [ '결과']를 사용하여 데이터를 추출해야합니다.

for a in Data['result'][:1]:  #only print the first result in the list 
    #print a['value'] 


    span = 2 
datas = a['value'].split(",") 
Data_list = [".".join(datas[i:i+span]) for i in range(0, len(datas), span)] 

for a in Data_list: 
    print a 

그래픽 용도로 데이터를 사용할 수있게하려면 "float"을 사용하여 문자열을 값으로 변환해야합니다. 이어서

T2 = map(float, Data_list) 

이를 그래프로 단순히

import numpy as np 
import matplotlib.pyplot as plt 

num = len(Data_list) 
print num 
x = np.arange(0,num,1) 
print 'Time (s)',x 

plt.plot(x, T2) 
plt.show()