Используемый формат файла действительно неудачный. Сначала у вас есть пустая строка между заголовком и данными, поэтому вам нужно пропустить первые две строки и не можете использовать заголовок.
Далее у вас есть два пробела в качестве разделителя между некоторыми столбцами, а также между строками, которые должны быть одним столбцом.
Теперь, если вам действительно нужно использовать этот файл как есть, и вы хотите использовать numpy для его чтения, у вас также есть проблема с тем, что в первом столбце нет числовых значений. Так что вам нужно будет поиграть с dtype.
Следующее будет считывать файл и отображать даты в виде строк.
import numpy as np
import matplotlib.pyplot as plt
a = np.genfromtxt("data/inflation.txt", usecols=(0, 3), skip_header=2, dtype=None, encoding=None)
x = a["f0"]
y = a["f1"]
plt.plot(x, y, 'ro--')
plt.show()
Или, если вы хотите вместо этого построить график,
import numpy as np
import datetime
import matplotlib.pyplot as plt
a = np.genfromtxt("data/inflation.txt", usecols=(0, 3), skip_header=2, dtype=None, encoding=None,
converters={0: lambda x: datetime.datetime.strptime(x, "%Y-%m")}, unpack=True)
x = a["f0"]
y = a["f1"]
plt.plot(x, y, 'ro--')
plt.show()
Если использовать панд вместо numpy, это станет немного проще. Построение строк:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("data/inflation.txt", delim_whitespace=True)
plt.plot(df["Date"], df["CPI-Value"], 'ro--')
plt.show()
Или даты составления графика:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("data/inflation.txt", delim_whitespace=True,
parse_dates=[0], infer_datetime_format=True)
plt.plot(df["Date"], df["CPI-Value"], 'ro--')
plt.show()