2017-10-19 111 views
0

爲了簡化,我有一個框架df,其中列是['date','float','int']。 日期和彩車不是唯一的,所以我將它們分組:分組時間序列框架的散點圖

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

事情是,我需要重新採樣日期索引,這是我必須通過

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

否則做不開拆將下降一個等級。

現在我想要做的是用'日期'作爲x軸,'浮動'作爲y軸,'int'作爲點的大小繪製框架的散點圖。 我正努力實現這一點,我現在擁有的框架。 也許我所做的預處理是錯誤的種類,有一個更清晰的方法來實現這一點。 Regards,

+0

你能否提供你正在使用一些虛擬數據? – pansen

回答

1

可能沒有必要unstack。你可以做你groupbyresample同時保持長格式的數據幀通過reset_index

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

之後,您可以使用正常ax.scatter方法與s參數,它定義了點的大小,具體如下:

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

非常感謝。我仍然需要解決一般的重新馴化問題,因爲似乎有熊貓的力量! –