2013-07-11 4 views
1

Я только учусь, чтобы воспользоваться DataFrames в панде, и я хотел бы использовать методы GroupBy для получения участков следующего:черчение и GroupBy метода

У меня есть два dataframes, один для информации оси х и один для y. В каждом кадре данных есть три версии данных, например «A», «B», «C». Мне нужен график y vs 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) 

Есть быстрый способ получения желаемого участка, избегая для петель и с помощью методов панды? Я думаю о слиянии обоих фреймов и методах 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 

Это г (занимать намного больше места, чем нужно), поскольку в нем содержится много недостающих данных.

+0

Это работает! Думаю, я слишком волновался с помощью методов GroupBy и хотел использовать их везде. Однако, как я могу передать стиль построения для каждого столбца? – misi

+0

Я только что обнаружил plt.setp, nevermind! – misi

Смежные вопросы