Задача относительно проста: читать файл, для каждой записи получать записи, для каждой записи проверять год по диктовке и создавать временный профиль.Я хотел бы сделать это максимально эффективно, так как файл (и файл) довольно большой.
Код, который у меня есть, выглядит следующим образом:
import numpy as np
with open('entries.tsv', 'r') as entries:
offset = 1920
size = 100
for line in islice(entries, None):
prot, recs = line.strip().split('\t')
ids = recs.split(" ")
years = Counter([id_dict[id] for id in ids])
print(np.array(sorted(list(years.items()))))
input()
Проблема здесь в том, что вы можете получить выходные данные, где пропущены определенные годы, поскольку нет записей, соответствующих этому году (1995в данном случае):
[[1992 3]
[1993 3]
[1994 2]
[1996 2]
[1997 2]
[1998 5]
[1999 11]
[2000 3]
[2001 4]
[2002 3]
[2003 3]
[2004 2]
[2005 3]
[2006 3]
[2007 3]
[2008 1]
[2009 2]
[2010 2]
[2011 3]
[2012 10]
[2013 4]
[2014 4]
[2015 5]
[2016 2]
[2017 5]
[2018 4]
[2019 1]]
Поскольку я объединю все эти элементы в один большой массив с кучками, я бы хотел, чтобы все они были одинакового размера, например, последние 100 лет.Я на самом деле не нуждаюсь в годах, но имея их там, легче обнаружить этот тип проблемы.
Я не знаю точное количество записей в файле, поэтому я не могу сгенерировать массив заранее.Я думаю, что должен быть более разумный способ, чем создание массива нужного размера и циклическое переключение счетчика для увеличения конкретных индексов.