2017-12-21 23 views
2

첫 번째 열이 사전의 'ID'와 사전 목록의 값 중 두 번째 열로 구성된 데이터 집합을 만드는 방법을 알아 내려고 노력 중이므로 해번과 함께이를 그릴 수 있습니다.ID와 값 목록이있는 사전에서 시작하는 두 개의 열만있는 데이터 집합을 만드는 방법

di = {'a' : [1,4,5], 'b' : [1,8],'c' : [56,100,5,568],'d' : [20,10,2],'e' : [1000,3,675]} 

I 따라서이 같은 뭔가를해야만 할 것 : 지금 만이 내 ID를 구분 코드의 조각 내 값이 들어 등등

ID  Value 
a  1 
a  4 
a  5 
b  1 
b  8 
c  56 
c  100 

와 .. 을하지만 여전히 나의 값을 유지 목록이 아니며 내가 검색 한 위의 주어진 결과 예가 아닙니다.

serie = pd.Series(di) 
df = pd.DataFrame({'ID':serie.index, 'Value':serie.values}) 

도움을 주시면 대단히 감사하겠습니다. 미리 감사드립니다. 당신이 행 내부의 목록을 pd.Series를 사용하고 랩을 해제 할 수

lol = [list(zip([x]*len(y), y)) for x, y in di.items()] 
df = pd.DataFrame.from_records([x for y in lol for x in y], columns=['ID', 'Value']) 
sns.swarmplot(x="ID", y="Value", data=df) 

을 또는 :

+0

고마워요! 이것은 실제로 데이터 프레임의 문제를 해결하지만 해 본으로 그릴 수는 없습니다. 다음 명령을 사용했습니다 : sns.swarmplot (x = "ID", y = "값", 데이터 = lol) 하지만 이건 단지 나에게 오류를 준다. 도와 주셔서 감사합니다. –

+0

이것은 실제로 완전히 해결되었습니다! 고마워요! 나는 당신에게 upvote를 줄 것이지만, 나는 명성이 충분하지 않습니다, 나는 내가 당신에게 upvote을주기 위해이 질문으로 돌아갈 것입니다! 다시 한 번 감사드립니다 !! –

+0

제공된 답변을 언제든지 수락하십시오. – Abdou

답변

0

당신은 pd.DataFrame.from_records 기능에 전달할 기록과 같은 목록 (리스트의 기본적 목록)에 사전을 구성 할 수 있습니다 다음과 같습니다 :

df = pd.Series(di).apply(pd.Series).stack() 
df = df.reset_index(level=0).‌​rename(columns=lambd‌​a x: 'ID' if x else 'Value') 
sns.swarmplot(x="ID", y="Value", data=df) 

필요한 것을 얻을 수 있어야합니다.