Это очень простой вопрос. У меня есть ось 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()
График, который это дает:
Это явно не соответствует данным - любые предложения?
По умолчанию поведение matplotlib/pandas заключается в том, чтобы нарисовать линию между последовательными точками данных, а не отмечать каждую точку данных символом.
Исправить: изменить data.plot()
на data.plot(style='o')
или df.plot(marker='o', linewidth=0)
.
Результат:
Все, что вам нужно, это сортировка 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()
df.plot(style='o')
.
A
строка?