У меня есть большой набор данных текстов и соответствующих им ярлыков. Раньше я читал csv-файлы, используя модуль csv
, а затем строил массивы numpy
на этих данных, пока не обнаружил, что большие текстовые массивы в numpy неэффективны для памяти.
with open('sample.csv', 'r') as f:
data = csv.reader(f.readlines())
texts = np.array([d[0] for d in data])
И это занимает около 13 ГБ памяти. Но когда pandas
читает те же самые данные, как будто ничего не происходит, никаких данных в памяти нет. Под этим я подразумеваю, что использование памяти не на 50% и даже не на 20% занимает всего 300 МБ.
data = pd.read_csv('sample.csv')
texts2 = np.array(data['text'])
Единственная разница между массивами texts
и texts2
- это тип dtype:
texts.dtype
dtype('<U92569')
texts2.dtype
dtype('O')