2017-10-19 4 views
0

단순화하기 위해 컬럼이 [ 'date', 'float', 'int'] 인 프레임 df가 있습니다.그룹화 된 시계열 프레임의 산점도

dd = df.groupby(['date', 'float']).sum() 

것입니다, 나는 그것이 떨어질 것이다 언 스택없이 다른

dd = dd.unstack().resample('B').last() 

을 통해해야 할 날짜 인덱스를 다시 샘플링해야합니다 날짜와 수레 그래서 그룹을 고유하지 않습니다 수준.

이제 '날짜'를 x 축, '부채꼴'을 y 축으로, 'int'를 점의 크기로 사용하여 프레임의 분산을 그립니다. 지금 가지고있는 프레임으로이 목표를 달성하기 위해 고심하고 있습니다. 아마 내가하는 선처리가 잘못된 종류이고 이것을 달성하는 더 깨끗한 방법이있을 것입니다. 감사합니다.

+0

당신은 당신이 사용하고 일부 더미 데이터를 제공 할 수 있습니까? – pansen

답변

1

아마도 unstack 일 필요는 없습니다. 긴 형식의 dataframe을 유지하면서 당신은 reset_index 통해 groupbyresample 수행 할 수 있습니다

df.groupby(["date", "float"])\ 
    .sum()\ 
    .reset_index(-1)\ 
    .resample("B")\ 
    .last() 

을 그 후, 당신은 점의 크기를 정의하는 s 인수를 사용하여 일반 ax.scatter 방법을 사용할 수 있습니다, 다음과 같이

import matplotlib.pyplot as plt 
import pandas as pd 
import numpy as np 

# mocking your dataframe 
dates = pd.date_range(start="2017-10-10", periods=20) 
values = np.random.random(20) 
sizes = np.random.randint(1, 80, 20) 

df = pd.DataFrame({"dates": dates, 
        "values": values, 
        "sizes": sizes}) 

# plot setup 
fig,ax= plt.subplots() 
fig.set_size_inches(15, 7) 

# scatter 
ax.scatter(x=df["dates"].values, 
      y=df["values"].values, 
      s=df["sizes"].values) 

# setting x axis bounds 
ax.set_xlim((df["dates"].min(), df["dates"].max())) 

enter image description here

+0

대단히 감사합니다. 나는 판다의 힘을 누비는 것처럼 보이기 때문에 일반적으로 재 색인 생성을 해결해야한다! –

관련 문제