перебор каждой строки в dataframe и отображение значений (scatter) в соответствующих столбцах x и y

#python #pandas #matplotlib #seaborn

#python #pandas #matplotlib #seaborn

Вопрос:

У меня есть такой фрейм данных со многими другими вариантами и значениями в каждом списке x и y:

                    x         y
variant                       
*BCDS%q3rn  [45, 59]  [18, 14]
F^W#Bfr18   [82, 76]   [12, 3]

 

Как я могу перебирать каждый вариант (каждая строка имеет уникальную строку) и отображать значения x и y на диаграмме рассеяния? Это приведет к ~ 40 графикам, чего я и хочу, чтобы я мог нарисовать взаимосвязь для каждого варианта. Пожалуйста, сообщите. Спасибо!

Ответ №1:

Вы можете пройти по столбцам объекта Pandas DataFrame и отобразить их либо с помощью встроенной plot функции (используя Matplotlib под капотом), либо вызвав Matplotlib напрямую:

 import pandas as pd
import matplotlib.pyplot as plt
# create random test data
import numpy as np
df = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=['Col 1','Col 2','Col 4','Col 5'])

fig, axs = plt.subplots(1,2)

for col in df:
    # pandas plotting
    df[col].plot(ax=axs[0])
    #matplotlib plotting
    axs[1].plot(df[col])
axs[0].set_title('pandas plotting')
axs[1].set_title('matplotlib plotting')
 

введите описание изображения здесь

Ответ №2:

Вы можете преобразовать каждый столбец в список и выполнить итерацию по ним для построения графика. Ниже я создал линейные графики, но вы можете легко преобразовать код для создания точечных графиков.

 variants = df.index.values.tolist()
x_data = df["x"].to_numpy().tolist()
y_data = df["y"].to_numpy().tolist()

for idx in range(len(variants)):
    plt.plot(x_data[idx], y_data[idx],label= variants[idx])
plt.ylabel('Y')
plt.xlabel('X')
plt.legend()
plt.show()
 

Для ваших выборочных данных график будет выглядеть следующим образом:
введите описание изображения здесь