сравнивая два столбца с помощью цикла if в Python - PullRequest
0 голосов
/ 04 июня 2018

Я сделал два столбца данных, один из которых - 286 чисел в виде y-сумм, а другой - 286 чисел в виде y1-сумм в зависимости от x.Я хочу сравнить эти два столбца одну строку за одной строкой, и если у больше, чем у1, он должен быть нанесен красным цветом, иначе он будет изображен синим цветом.Но я получаю эту ошибку: если yyy> y1: ^ IndentationError: ожидается блок с отступом

, пожалуйста, помогите мне!

Код:

import pandas as pd

from astropy.table import Table, Column

import numpy as np

import matplotlib.pyplot as plt

np.random.seed(0)

from pandas import DataFrame

data = pd.read_csv('best match.csv')

s01 = pd.DataFrame(5 + data['Vmag'])

ID = pd.DataFrame(data['MAIN_ID'])

s22 = np.multiply(1/1000,data['Plx_1'])

s02 = np.log10(s22)

s03 = np.multiply(5, s02)

yyy = s01['Vmag']+s03

xxx = np.log10(data['Per'])

y1 = -2.8937*xxx - 1.3073

u = np.multiply(0.2, y1)

for row in yyy: 

if yyy > y1:

plt.scatter(xxx, yyy, c='r')

else:

plt.scatter(xxx, yyy, c='b') 

plt.ylim(3.5,-0.8)

plt.xlim(-1.85, -0.4)

plt.ylabel('$M_V$')

plt.xlabel('Log(p)')

Спасибо

Ответы [ 3 ]

0 голосов
/ 04 июня 2018
for row in yyy:
    if yyy > y1:
        plt.scatter(xxx, yyy, c='r')
    else:
        plt.scatter(xxx, yyy, c='b')

должен выглядеть так

0 голосов
/ 04 июня 2018

Возможно, предложение сделать это немного более компактным и без цикла:

y_smaller = np.random.rand(20)
y1 = np.random.rand(20)
x = np.arange(20)

y_larger = y_smaller.copy()
y_smaller[y_smaller > y1] = np.nan
y_larger[np.isfinite(y_smaller)] = np.nan

plt.scatter(x, y_smaller, color='blue')
plt.scatter(x, y_larger, color='red')
plt.scatter(x, y1, marker='x', color='gray')

pyplot игнорирует nan значения при построении, так что это простой способ избавиться от нежелательных данных в массивах.

enter image description here

0 голосов
/ 04 июня 2018

Блоки кода сгруппированы по отступам в Python.Любые циклы, функции, классы или условные операторы («если» не цикл, кстати) должны быть на уровне отступа.

Ссылка

Фиксированный код

...