Чтение небольших объемов текстовых данных из файла в память
Пример ниже иллюстрирует, когда весь набор данных из файла загружается в память:
with open("test.txt", 'r’) as file: print('test.txt content:\n' + file.read())
Причем, при таком подходе, в методе read(N), вместо N можно указывать количество символов, которое необходимо прочитать из файла, тем самым вы можете регулировать объем данных для чтения в память.
Чтение больших объемов текстовых данных из файла в память
Когда требуется загрузить большой объем данных в память, чтобы работать с ним, то самый оптимальный вариант это загружать данные фрагментами по мере их необходимости. Пример ниже иллюстрирует, как этого можно достичь:
# выборка без учета номера строки with open(test.txt", 'г') as file: for observation in file: print('reading data: ' + observation) # выборка с учетом номера строки в переменной j, по которой вы можете отфильтровать выборку with open(test.txt", 'г') as file: for j, observation in enumerate(file): print(f'reading data: str number {j}, data {observation}')
Здесь, открыв файл и получив указатель на него в переменной file, чтение выполняется построчно за счет цикла for. Таким образом можно построчно читать и обрабатывать большие объемы данных из файлов.
Чтение изображений из файла в память
Когда перед вами стоит задача анализа данных изображений, то прежде всего вам нужно загрузить это изображение в память. Допустим, что файл изображения для анализа test.jpg у вас находится локально рядом с кодом скрипта, тогда загрузить его в память можно так:
import matplotlib.image as img import matplotlib.pyplot as plt %matplotlib inline image = img.imread("test.jpg") print(f'Image => shape: {image.shape} px, size: {image.size} bytes') plt.imshow(image) plt.show()
В этом примере используются библиотеки matplotlib, за счет которой мы считываем изображение в память, а также библиотека pyplot, за счет которой мы отображаем изображение на экране.
Чтение табличных данных из текстового файла при помощи pandas
Если в вашем текстовом файле содержатся данные представленные в виде таблицы, которые вы хотели бы загрузить в память и проанализировать, то лучше всего с этим справится библиотека pandas. В ней есть синтаксические анализаторы для различных типов данных. Вот простой пример:
import pandas as pd data_table = pd.io.parsers.read_table("data.txt") print(data_table)
Метод read_table распознает заголовки и присваивает собственный индекс для каждой строки вашей таблицы из текствого файла.
Чтение данных CSV при помощи pandas
Формат CSV предполагает хранение даных в текстовом виде по типу таблицы, элементы которой разделены каким-либо разделителем. Чтобы прочитать такие данные и загрузить в память, воспользуемся библиотекой pandas.
import pandas as pd cars = pd.io.parsers.read_csv("cars.csv") X = cars[['model']] print(X)
В этом примере мы читаем все данные из CSV, в котором содержатся марки автомобилей и их характеристики. Затем мы выводим на экран только колонку с марками автомобилей, игнорируя все остальные данные. Если же вы хотите получить эти данные в виде списка list, то колонку с марками автомобилей нужно получить так: X = cars[['model']].values
.
Чтение данных Excel при помощи pandas
Табличные данные Excel чаще всего хранятся в файлах с форматами .xls и .xlsx. Для того, чтобы читать эти данные в память и работать с ними, также удобнее всего использовать pandas.
import pandas as pd xls = pd.read_excel("data.xls", 'Sheet1', index_col=None, na_values=['NA']) print(xls)
Здесь в примере мы указываем файл xls с данными, а что данные нужно прочитать именно с вкладки ‘Sheet1‘, при этом мы указываем index_col=None, что индекс по строкам нам не требуется, а данные пустых ячеек при загрузке в память мы должны заполнить как ‘NA‘.