Простой график не представляет данных

1

Это очень простой вопрос. У меня есть ось x лет и ось оси чисел, линейно возрастающая на 100. При построении графика с помощью pandas и matplotlib мне присваивается граф, который не представляет данные вообще. Мне нужна помощь, чтобы понять это, потому что это такой небольшой код:

CSV выглядит следующим образом:

A,B
2012,100
2013,200
2014,300
2015,400
2016,500
2017,600
2018,700
2012,800
2013,900
2014,1000
2015,1100
2016,1200
2017,1300
2018,1400

Код:

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

data = pd.read_csv("CSV/DSNY.csv")

data.set_index("A", inplace=True)


data.plot()
plt.show()

График, который это дает:

Изображение 174551

Это явно не соответствует данным - любые предложения?

  • 1
    Это абсолютно соответствует данным. A строка?
  • 1
    Данные по оси времени (A) не являются монотонными .... они переходят с 2018 года на 2012 год и принимают другой набор значений B. Вы можете попробовать отсортировать точки данных по времени, но график все равно будет выглядеть странно.
Теги:
pandas
matplotlib

2 ответа

4
Лучший ответ

По умолчанию поведение matplotlib/pandas заключается в том, чтобы нарисовать линию между последовательными точками данных, а не отмечать каждую точку данных символом.

Исправить: изменить data.plot() на data.plot(style='o') или df.plot(marker='o', linewidth=0).

Результат: Изображение 174551

1

Все, что вам нужно, это сортировка A перед графикой.

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

data = pd.read_csv("CSV/DSNY.csv").reset_index()
data = data.sort_values('A')
data.set_index("A", inplace=True)


data.plot()
plt.show()

Изображение 174551

  • 1
    Это создает пилообразный паттерн с вертикальными сегментами, которые могут не соответствовать тому, что ищет OP. Я думаю, что решение состоит в том, чтобы подавить строку и добавить символ маркера с помощью df.plot(style='o') .
  • 0
    Я отредактировал, пожалуйста, проверьте

Ещё вопросы

Сообщество Overcoder
Наверх
Меню