маркировка точек данных с помощью фрейма данных, включая пустые ячейки - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть лист Excel, подобный следующему:

A    B    C    D
3    1    2    8
4    2    2    8
5    3    2    9
          2    9
6    4    2    7

Теперь я пытаюсь нанести «B» на «C» и пометить точки данных записями «A».Он должен показывать мне точки 1/2, 2/2, 3/2 и 4/2 с соответствующими метками.

import matplotlib.pyplot as plt
import pandas as pd
import os

df = pd.read_excel(os.path.join(os.path.dirname(__file__), "./Datenbank/Test.xlsx"))

fig, ax = plt.subplots()
df.plot('B', 'C', kind='scatter', ax=ax)
df[['B','C','A']].apply(lambda x: ax.text(*x),axis=1);

plt.show()

К сожалению, я получаю это:

enter image description here

с ошибкой:

ValueError: posx and posy should be finite values

Как вы можете видеть, она не помечала последнюю точку данных.Я знаю, что это из-за пустых ячеек на листе, но я не могу избежать их.На этих позициях просто нет данных измерений.Я уже искал решение здесь: Аннотируйте точки данных при построении из Pandas DataFrame , но это не решило мою проблему.

Итак, есть ли способ пометить последнюю точку данных?

PS: лист Excel является лишь примером.Так что имейте в виду, что в действительности на разных позициях много пустых ячеек.

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете просто удалить недопустимые строки данных из df перед их построением

df = df[df['B'].notnull()]
...