Панды строят 2 кадра с одинаковыми именами столбцов - PullRequest
0 голосов
/ 27 июня 2019

У меня есть 2 кадра данных, содержащие одинаковые индексы и имена столбцов (10 столбцов. Например: из df1

   A  B  C
1  0  4  8
2  5  6  9
3  2  5  1

из df2:

   A  B  C
1  9  4  5
2  1  4  2
3  5  5  1

Я хочу нанести на графиктот же график, столбец A из df1 против столбца A из df2, столбец B из df1 против столбца B из df2 и т. д., и это для каждого столбца. Как я могу это сделать с pandas и matplotlib

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Это один из способов сделать:

import pandas as pd
import matplotlib.pyplot as plt

d1 = {'A':[0,5,2],'B':[4,6,5],'C':[8,9,1]}
d2 = {'A':[9,1,5],'B':[4,4,5],'C':[5,2,1]}
df1 = pd.DataFrame(data=d1)
df2 = pd.DataFrame(data=d2)

df1_a = df1['A'].tolist()
df1_b = df1['B'].tolist()
df2_a = df2['A'].tolist()
df2_b = df2['B'].tolist()

plt.plot(df1_a, df1_b, 'r') 
plt.plot(df2_a, df2_b, 'b') 
plt.show()
0 голосов
/ 27 июня 2019

Предполагая, что df1 и df2 будут вашими фреймами данных, вы можете использовать приведенный ниже код, который перебирает все столбцы и также сохраняет графики для вас.

import matplotlib.pyplot as plt
import pandas as pd    
for column in df1.columns:
        x = df1[column]
        y = df2[column]

        if len(x) != len(y):
            x_ind = x.index
            y_ind = y.index
            common_ind = x_ind.intersection(y_ind)
            x = x[common_ind]
            y = y[common_ind]

        plt.scatter(x,y)
        plt.savefig("plot" +column+".png")
        plt.clf()

Надеюсь, это поможет!

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