2015-01-25 8 views
-1

사전 ('hat1'에서 'hat10'까지 표기)의 특정 키에 대해 발생하는 숫자 1, 2 및 3의 빈도를 그래프로 표시하려고하는데 데이터를 변환하는 데 문제가 있습니다. (아래 그림)을 그래프로 나타낼 수있는 형식으로 변환합니다. 내가 DataFrame.from_dict(data)를 실행목록의 사전에서 막대 그래프 만들기

data = {'hat9': [[1, 2, 3, 1, 2]], 'hat8': [[1, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]], 'hat1': [[1, 2, 3]], 'hat3': [[1, 2, 3, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1]], 'hat2': [[1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]], 'hat5': [[1, 2, 3, 2, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 1, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 2, 3, 1, 3, 3, 3, 3]], 'hat4': [[1, 2, 3, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 3, 1, 2, 1, 3, 2, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1]], 'hat7': [[1, 2, 3, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2]], 'hat6': [[1, 2, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3]], 'hat10': [[1, 2, 3, 3, 3, 3, 3, 3, 1, 2, 2, 1, 2, 3, 3, 2, 3, 3, 3, 3, 3, 2, 1, 1, 3, 3, 1, 2, 2, 3, 3, 1, 3, 3, 3, 3, 3, 2, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 2, 1, 3, 2, 1, 3, 2, 3, 3, 1, 2, 1, 2, 3, 3, 1, 3, 2, 2, 1, 2, 3, 3, 1, 2, 3, 2, 3, 3, 1, 3, 3, 3, 3]]} 

때 나는이처럼 보였다 출력을받은 :

In [100]: DataFrame.from_dict(data) 
Out[100]: 
     hat1            hat10 \ 
0 [1, 2, 3] [1, 2, 3, 3, 3, 3, 3, 3, 1, 2, 2, 1, 2, 3, 3, ... 

               hat2 \ 
0 [1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... 

               hat3 \ 
0 [1, 2, 3, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, ... 

               hat4 \ 
0 [1, 2, 3, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 3, 1, ... 

               hat5 \ 
0 [1, 2, 3, 2, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, ... 

               hat6 \ 
0 [1, 2, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, ... 

              hat7 \ 
0 [1, 2, 3, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2] 

               hat8    hat9 
0 [1, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, ... [1, 2, 3, 1, 2] 
나는 누군가가 나를 더 가능한 형식으로 데이터를 얻을 수 있도록 할 수있을 기대했다

그 수 비교적 쉽게 그래프로 변환 될 수있다. 당신의 도움을 주셔서 감사합니다.

+0

것 같습니다, 왜 ('pandas.DataFrame.hist를 사용하지 ...)'? –

+0

'data'를 pandas DataFrame으로 변환하는 방법을 알고 계십니까? –

답변

1

당신이하기 matplotlib와 히스토그램 만들려면입니다. 예를 들어,

import pylab 
pylab.hist(data['hat4'][0], bins=(1,2,3,4), align='left') 

이 (당신 때문에 당신의 사전 값의 각각 어떤 이유로 [0]에서 인덱스 필요는 길이 1의 목록 자체가 데이터 값의 목록 인 단일 항목입니다).

모자를 어떤 방식 으로든 집계해야하는 경우 어떻게해야합니까?

enter image description here

당신은 당신이 선호하는 경우 팬더 DataFrame과 같은 작업을 수행 할 수 있습니다 당신은`pandas`을 사용하고 같은

import pandas as pd 
df = pd.DataFrame(data) 
pylab.hist(df['hat4'], bins=(1,2,3,4), align='left') 
+0

도움에 감사드립니다. 빠른 질문이 있습니다. 내 데이터를 팬더 데이터 프레임으로 변환하는 것이 더 쉬울 것이라고 생각합니까? –

+0

나는 _how_을 보여주기 위해 나의 대답을 업데이트했다. 그러나 이것이 더 쉽거나 더 나은 아이디어가 당신의 데이터로 무엇을 할 것인지에 달려 있다고 나는 생각한다. – xnx

1

이 밖으로 시도 : 도움이

data = {'hat9': [[1, 2, 3, 1, 2]], 'hat8': [[1, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]], 'hat1': [[1, 2, 3]], 'hat3': [[1, 2, 3, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1]], 'hat2': [[1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]], 'hat5': [[1, 2, 3, 2, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 1, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 2, 3, 1, 3, 3, 3, 3]], 'hat4': [[1, 2, 3, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 3, 1, 2, 1, 3, 2, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1]], 'hat7': [[1, 2, 3, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2]], 'hat6': [[1, 2, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3]], 'hat10': [[1, 2, 3, 3, 3, 3, 3, 3, 1, 2, 2, 1, 2, 3, 3, 2, 3, 3, 3, 3, 3, 2, 1, 1, 3, 3, 1, 2, 2, 3, 3, 1, 3, 3, 3, 3, 3, 2, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 2, 1, 3, 2, 1, 3, 2, 3, 3, 1, 2, 1, 2, 3, 3, 1, 3, 2, 2, 1, 2, 3, 3, 1, 2, 3, 2, 3, 3, 1, 3, 3, 3, 3]]} 


keys = [] 
values = [] 
for key,value in data.iteritems(): 
    keys.append(key) 
    a = 0 
    b = 0 
    c = 0 
    for x in value[0]: 
     if x==1: a+=1; 
     elif x ==2: b+=1; 
     elif x==3: c+=1; 
    values.append([a,b,c]) 

print keys 
print values 

희망을. 키는 당신이 정말로 당신이 보여주고 싶은 각 hat과의 hist 메서드를 호출보다 훨씬 더 많은 일을 할 필요가 없습니다, ['hat9', 'hat8', etc.,..]values = [[freq of 1 in 'hats9', freq of 2 in 'hats9', freq of 3 in 'hats9'], [freq of 1 in 'hats8', freq of 2 in 'hats8', freq of 3 in 'hats8'],..] (3 개 항목 목록의 목록)

관련 문제