Как сделать цикл для нескольких диаграмм рассеяния в python?

Я пытаюсь автоматизировать процедуру построения большой матрицы данных. Цель состоит в том, чтобы построить каждый столбец с другим столбцом. Каждый столбец представляет собой переменную. См. также изображение ниже.

F.e: пол против возраста, пол против ИМТ, пол против курения, пол против типа и так далее.

Для ясности я упростил задачу до изображения ниже: введите описание изображения здесь

Сначала я пытался построить каждую комбинацию вручную. Но это довольно трудоемкое упражнение, а не то, что я хочу.

Я также пробовал это (не работает):

variables = ["Sex", "Age", "BMI"]
for variable in variables:
plt.scatter(df.variable, df.variable)
plt.xlabel('variable')
plt.ylabel('variable')
plt.title('variable vs. variable')
plt.show()

Любая помощь приветствуется!

PS: Если бы было бы простым упражнением включить линейную регрессию в комбинацию переменных, это также было бы оценено.

Привет,

Надя

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
11 039
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

То, что вы закодировали, отображает каждый столбец против самого себя. То, что вы описали, является вложенным циклом. Простое обновление

col_choice = ["Sex", "Age", "BMI"]

for pos, axis1 in enumerate(col_choice):   # Pick a first col
    for axis2 in enumerate(col_choice[pos+1:]):   # Pick a later col
        plt.scatter(df.loc[:, axis1], df.loc[:, axis2])

I думать генерирует серию, приемлемую для scatter.

Это помогает? Если вы хотите быть более «питоновским», загляните в itertools.product, чтобы сгенерировать варианты столбцов.

Упс! Извиняюсь; вам нужно получить доступ к столбцу, названному переменной стоимостьaxis1 ... вы знаете, как это сделать?

Prune 10.07.2019 18:14

Это потому, что вы указали конкретный (постоянный) столбец, а не брали значение из переменных axis, как указано в моих решениях.

Prune 10.07.2019 20:12

Спасибо, Прюн. Это сработало. Для читателя нужно настроить ось 2, выбрав второй столбец.

Nadia Merquez 11.07.2019 10:42

Вы можете сделать что-то вроде этого:

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

# Create dummy dataframe, or load your own with pd.read_csv()

columns = ["sex", "age", "BMI", "smoke", "type"]
data = pd.DataFrame(np.array([[1,0,0,1,0], [23,16,94,18,24], [32, 26, 28, 23, 19], [0,1,1,1,0], [1,2,2,2,1]]).T, columns=columns)


x_col = "sex"
y_columns = ["age", "BMI", "smoke"]


for y_col in y_columns:

    figure = plt.figure
    ax = plt.gca()
    ax.scatter(data[x_col], data[y_col])
    ax.set_xlabel(x_col)
    ax.set_ylabel(y_col)
    ax.set_title("{} vs {}".format(x_col, y_col))

    plt.legend()
    plt.show()

По сути, если ваш набор данных сохранен в виде файла .csv, вы можете загрузить его с помощью панд, используя pd.read_csv(), и использовать имена столбцов в качестве ключей для доступа к соответствующим строкам и повторять это (здесь я создал фиктивный фрейм данных только ради из него).

Что касается части линейной регрессии, вам следует проверить scikit-learn библиотека. Он имеет множество моделей регрессии для множества различных задач, таких как регрессия, классификация и кластеризация.

Неко спасибо за помощь. На данный момент pycharm по какой-то причине не предоставляет графики...

Nadia Merquez 10.07.2019 18:21

Другие вопросы по теме