индекс вне границ // Python, датафрейм, сюжет - PullRequest
0 голосов
/ 04 апреля 2019

Я хочу построить точку с максимальным значением из фрейма данных.

import pandas as pd
import matplotlib.pyplot as plt

dane = pd.read_table('C:\\xxx.txt', names=('rok', 'kroliki', 'lisy', 'marchewki'))
df = pd.DataFrame(dane)

data = df[1:]
data=data.astype(float)

x = int(data['kroliki'].max())
y = int(data['lisy'].max())
z = int(data['marchewki'].max())

p= data['rok'].where(data['kroliki'] == x)
q = data['rok'].where(data['lisy'] == y)
r = data['rok'].where(data['marchewki'] == z)

p1 = int(p[p.notnull()])
q1 = int(q[q.notnull()])
r1 = int(r[r.notnull()])
point = pd.DataFrame({'x':[p1],'y':[q1],'z':[r1]})
point.plot((p1,x),(q1,y),(r1,z))

У меня такая ошибка:

IndexError: index 1993 is out of bounds for axis 0 with size 4

Может кто-нибудь знать, что не так с этим кодом?Спасибо

1 Ответ

0 голосов
/ 04 апреля 2019

Я думаю, что когда вы используете Pandas для построения графика, он будет искать индексы внутри себя, а не для значений.

Итак, в вашем случае, когда вы делаете:

point.plot(p1,x)

Панды будут искать индекс 1993 в направлении х, т. Е. Во всех столбцах.Другими словами, вы должны иметь столбцы 1993 года.

Я пытался воспроизвести вашу проблему следующим образом:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,100,size=(10, 4)), columns=('rok', 'kroliki', 'lisy', 'marchewki'))

data = df[1:]
data=data.astype(float)

x = int(data['kroliki'].max())
y = int(data['lisy'].max())
z = int(data['marchewki'].max())

p = data['rok'].where(data['kroliki'] == x)
q = data['rok'].where(data['lisy'] == y)
r = data['rok'].where(data['marchewki'] == z)

p1 = int(p[p.notnull()])
q1 = int(q[q.notnull()])
r1 = int(r[r.notnull()])

point = pd.DataFrame({'x':[p1],'y':[q1],'z':[r1]})
point.plot((p1,x),(q1,y),(r1,z))

Я получаю следующую ошибку:

>>> AttributeError: 'tuple' object has no attribute 'lower'

Икогда я запускаю каждую точку отдельно:

>>>> IndexError: index 85 is out of bounds for axis 0 with size 3

Чтобы решить ее:

import matplotlib.pyplot as plt

plt.plot((point.x, point.y, point.z), (x,y,z),'ko')

И я получил следующий результат:

enter image description here

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

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