2013-07-11 38 views
1

我剛學趁DataFrames的熊貓,我想用的GroupBy的方法來產生以下的情節:繪圖和的GroupBy方法

我有兩個dataframes,一爲x軸的信息和一個爲y。在每個數據框中都有三種版本的數據,分別是'A','B','C'。我需要爲每一個(即三行)繪製一個y對x的圖。

示例代碼:

df_x 

<class 'pandas.core.frame.DataFrame'> 
Int64Index: 100 entries, 0 to 99 
Data columns (total 3 columns): 
A  100 non-null values 
B  100 non-null values 
C 100 non-null values 
dtypes: float64(2), object(1) 

df_y 

<class 'pandas.core.frame.DataFrame'> 
Int64Index: 100 entries, 0 to 99 
Data columns (total 3 columns): 
A  100 non-null values 
B  100 non-null values 
C 100 non-null values 
dtypes: float64(2), object(1) 

有沒有產生預期的陰謀,避免for循環和使用方法,熊貓一個快速的方法?我正在考慮合併這兩個框架並使用GroupBy方法,但我不知道如何去做這件事。

謝謝!

回答

0

我認爲你可以直接做這個陰謀使用pyplot:

In [11]: plot(df_x, df_y) # matplotlib.pyplot.plot 
Out[11]: 
[<matplotlib.lines.Line2D at 0x109c02910>, 
<matplotlib.lines.Line2D at 0x109c02b90>, 
<matplotlib.lines.Line2D at 0x109c02ed0>] 

看來你需要設置的傳說後,雖然:

pylab.legend(df_x.columns) 

如果你真的想重塑你的數據到形成使用.plot,也許你可以使用:

In [21]: df_x = pd.DataFrame([[1,2,1],[2,3,4]], columns=list('ABC')) 

In [22]: df_y = pd.DataFrame([[2,6,1],[4,9,4]], columns=list('ABC')) 

In [23]: pd.DataFrame({'x': df_x.stack(), 'y': df_y.stack()}).reset_index(level=1).pivot('x', 'level_1', 'y') 
Out[23]: 
level_1 A B C 
x 
1   2 NaN 1 
2   4 6 NaN 
3  NaN 9 NaN 
4  NaN NaN 4 

這爲g因爲它包含了很多缺失的數據,所以效率會大大降低(佔用的空間比需要的多得多)。

+0

工作!我想我對GroupBy方法感到興奮,並希望在任何地方使用它們。但是,如何爲每個列傳遞繪圖樣式? – misi

+0

我剛剛發現plt.setp,沒關係! – misi