2017-01-18 16 views
2

.csv에서 가져온 일부 데이터를 탐색하려고합니다. 파일에는 약 100 개의 '회사'가 있으며 각 회사에는 'SG'및 'RG'측정 항목이 있습니다. 데이터에는 이러한 측정 항목에 대한 몇 년 동안의 데이터가 있습니다.팬더 데이터 프레임을 사용하여 해 본에서 timeseries 플로팅

주어진 '회사'에 대해 동일한 차트에 'SG'와 'RG'라인을 오버레이하기 위해 일부 해골 시계열 차트를 작성하려고합니다.

Summary of the lux dataframe

은 누구도 날 같은 플롯을 생성하는 방법에 대한 몇 가지 지침을 줄 수 :이 이미지는 무슨 뜻인지 설명해야합니까? 예를 들어 'Barbour'Company (위 이미지에서)를 'SG'와 'RG'의 두 줄로 구성하십시오.

%matplotlib inline 
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns 

답변

0

당신의 데이터를 전송하는 편이 더 좋습니다 :

(참고, 모든 데이터 유형과 같은, 수레하지만, 거기에 약간의 NaN을 가진, 나는 정면 보통의 물건을 포함했다 seaborn을 사용할 때 long-form (일반적으로). 예외적으로 히트 맵을 사용하려면 깨끗한 2 변수 테이블이나 매트릭스로 피벗해야합니다.

어쨌든 긴 형태로 볼 때, 각 행은 정확하게 하나의 관측치를 가지며, 지원하는 기능은이 행에 대한 추가 열입니다. 특정 경우에, 각 행에는 여러 관측치가 있습니다 (각 y에 대해 1 개 회사와 측정 기준을 고려하면 귀중한 것입니다.) 그래서 우리는 이것을 장기적인 형식으로 변환하고 싶습니다.이 형식은 당신의 관찰의 또 다른 특징 일뿐입니다. 다행히도 pnd.melt은 정확한 목적을 위해 작성되었습니다.

의가 당신을 기반으로, 일반적인 pnd.DataFrame 시작하자 : 긴 형식으로 변환

In [1]: import pandas as pnd 
In [2]: import seaborn as sns 

In [3]: df = DataFrame.from_dict({ 
    ...:  'company': ['A', 'B', 'A', 'B', 'C'], 
    ...:  'metric': ['SG', 'SG', 'RG', 'RG', 'SG'], 
    ...:  '2005': [1, 2, 3, 4, 5], 
    ...:  '2006': [4, 5, 6, 7, 8]})  
In [4]: df 
Out[4]: 
    2005 2006 company metric 
0  1  4  A  SG 
1  2  5  B  SG 
2  3  6  A  RG 
3  4  7  B  RG 
4  5  8  C  SG 

pnd.melt를 사용하여 :

In [5]: df_melt = pnd.melt(df, 
          id_vars=['company', 'metric'], 
          value_vars=['2005', '2006'], 
          var_name='year', 
          value_name='value') 
In [6]: df_melt 
Out[6]: 
    company metric year value 
0  A  SG 2005  1 
1  B  SG 2005  2 
2  A  RG 2005  3 
3  B  RG 2005  4 
4  C  SG 2005  5 
5  A  SG 2006  4 
6  B  SG 2006  5 
7  A  RG 2006  6 
8  B  RG 2006  7 
9  C  SG 2006  8 

그리고 마지막으로 sns.factorplot와 당신이 X 같은 매개 변수를 사용할 수있다을 , 색조, 행, 열을 사용하여 요소 분해를 수행하여 데이터를 시각화합니다.

In [7]: sns.factorplot(data=df_melt, 
         x='year', 
         y='value', 
         hue='metric', 
         col='company') 

Out[7]: <seaborn.axisgrid.FacetGrid at 0x7f6286fee890> 

In [8]: from matplotlib import pyplot as plt 
In [9]: plt.show() 

figure1

+0

피터 - 도와 주셔서 대단히 감사드립니다. 나는 이것을 읽고 당신의지도를 따를 것입니다. 이 지역 사회에 처음 왔기 때문에 나는 이방인들의 친절함에 정말로 감사드립니다. 다시 한번 감사드립니다. – NickP

+0

걱정하지 말고 도와주세요. 행운을 빈다. – peterfields