Построить мультикадры данных в oop с python - PullRequest
1 голос
/ 22 марта 2020

Знаете ли вы, как я могу отображать фреймы с несколькими данными в python одновременно в oop, теперь мне нужно повторить ту же структуру, но очень неэффективно, если у меня n фреймы данных? ...

df_0.plot(kind='line',y='AB',ax=ax)
df_1.plot(kind='line',y='AB',ax=ax)
df_2.plot(kind='line',y='AB',ax=ax)
plt.legend(['sim 1', 'sim 2', 'sim 3'], loc= 0)
plt.show()
..
.
(...)


The code that I create is this:

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

def t(i):
    global a, b, c
    if i == 0:
        a = pd.DataFrame(np.random.randint(low=0, high=10, size=(2, 2)), columns=['a', 'b'])
        return a
    elif i == 1:
        b = pd.DataFrame(np.random.randint(low=0, high=10, size=(2, 2)), columns=['a', 'b'])
        return b
    else:
        c = pd.DataFrame(np.random.randint(low=0, high=10, size=(2, 2)), columns=['a', 'b'])
        return c

dfnames = ['df0', 'df1', 'df2']
for x in dfnames: exec(x + ' = t(x)', globals()) # generate multiple dataframes and assign the names globaly 

#to plot

ax = plt.gca()
df0.plot(kind='line',x='b',y='a', color='red', ax=ax)
df1.plot(kind='line',x='b',y='a', color='green', ax=ax)
df2.plot(kind='line',x='b',y='a', color='blue', ax=ax)
plt.show()

Я пытаюсь это исправить, используя al oop, но python возвращает мне эту ошибку, как я могу это сделать?

a = plt.gca()
for w in dfnames:
    w.plot(x='a', y='b', kind='line', ax=a)
    plt.show()
Traceback (most recent call last):
  File "...py", line 67, in <module>
    w.plot(x='a', y='b', kind='line')
AttributeError: 'str' object has no attribute 'plot'

Большое спасибо за вашу удивительную помощь!

1 Ответ

1 голос
/ 23 марта 2020

со временем: я нашел быстрое решение и записал глобальные переменные в список, но я хотел бы сделать обобщение с несколькими фреймами данных или преобразовать эти глобальные переменные, определенные ранее в методе exe c () в список, чтобы построить все вместе ...

есть идеи?

ds = [df0, df1, df2, df3 ....] # I need to write again this line...
ax = plt.gca()
for x in ds:
    x.plot(kind='line', y='1', ax=ax)  # generate multiple dataframes
plt.show()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...