Как читать данные из файла в Python - Kaif

Как читать данные из файла в Python

Эта статья предоставит вам подробный обзор того, как можно использовать Python для чтения больших текстовых файлов. Полнофункциональный, готовый к выполнению фрагмент кода включен в это пошаговое руководство, чтобы вы быстро освоились в течение 10 минут после прочтения этой статьи.

Позвольте нам сначала познакомить вас с расширенными структурами данных, доступными в Python, которые мы будем использовать для хранения и обработки данных из файлов, на всякий случай, если вы новичок в программировании на Python.

Расширенные структуры данных в Python

Python имеет две передовые и мощные структуры данных, которые делают его превосходящим по функциональности по сравнению с C / C ++ и делают его идеальным языком для приложений с интенсивным использованием числовых данных, конкурирующих с доминирующим в отрасли Matlab®.

ndarrays и фреймы данных
ndarrays и фреймы данныхАдаптировано из документации с открытым исходным кодом Numpy и Pandas

Массивы NumPy

Массивы Numpy или ndarrays представляют собой массивы, которые можно масштабировать до размеров n. Их лучше всего использовать в качестве структур двумерных массивов для представления матриц. Сам модуль Numpy содержит мощные библиотеки функций для множества числовых и алгебраических операций.

Фреймы данных Pandas

Фреймы данных основаны на двумерном ndarrays чтобы добавить дополнительную функциональность. Двумерный ndarray теперь есть отдельный столбец для индекса массива, и все заголовки столбцов теперь адресуются индивидуально. Что еще более важно, каждый столбец теперь может содержать разные типы данных (int, float или string).

Текстовый файл для чтения кодом Python

Давайте перейдем к руководству и познакомим вас с демонстрационным текстовым файлом.

Это таблица данных с 14 строками по 20 столбцов, сохраненная в виде текстового файла. Он содержит данные во всех трех форматах данных: int, float и string. Имя файла: BusData.

Рис. 1. Файл данных, который нужно проанализировать с помощью нашего кода. 
Рис. 1. Файл данных, который нужно проанализировать с помощью нашего кода.Файл CDF IEEE 14-Bus System

Затем просмотрите приведенный ниже фрагмент кода, чтобы прочитать этот файл, и мы будем объяснять этот код построчно в следующем разделе.

Код Python для чтения данных из текстового файла

# Copyrights © Ali Khan (Author)
# Permitted to use with attribution

import numpy
import pandas

def Read ():
    
    global BusData, BusDataList, BusDataArray, BusDataReshaped
    
    X = open('C:/Users/user/OneDrive - Washington State University (email.wsu.edu)/EE - 521/BusData.txt', 'r')
    BusData = X.read()                      
    
    BusDataList = BusData.split()
    BusDataArray = numpy.array(BusDataList)
    BusDataReshaped = BusDataArray.reshape(14,20) #Make a matrix out of 1D Array

Read()

BusDataFrame = pandas.DataFrame(BusDataReshaped, columns =['BusNumber', 'Bus', 'Busx', 'BusClass', 'Unused1', 'Unused2', 'BusType', 'Unused3', 'Unused4', 'BusLoadMW', 'BusLoadMVAR', 'BusGenMW', 'BusGenMVAR', 'InitialVoltAngle', 'InitialVolt', 'Qlimit+', 'Qlimit-', 'Unused5', 'Shunt', 'Unused'])

print(BusDataFrame.BusClass[6])

Код Пояснение

Инициализация: импорт Numpy и Pandas

Строка 4: Импортируйте пакет numpy в проект.

Строка 5: Импортируйте пакет pandas в проект.

Строка 7: Запустите определение функции Read (). Всегда полезно разбивать код на функции.

Строка 9: Определите глобальные переменные.

В Python только глобальные переменные будут отображаться в проводнике переменных, и на них можно будет ссылаться вне функций. Для демонстрации здесь я определил все четыре как глобальные, иначе только АвтобусДанные переменная должна была быть объявлена ​​глобальной.

Рис. 2. Обозреватель переменных Spyder, показывающий детали каждой переменной. 
Рис. 2. Обозреватель переменных Spyder, показывающий детали каждой переменной.Авторские права © Али Хан (Автор)

Откройте и прочтите целевой файл

Строка 11: Функция open () указывает на расположение каталога файла BusData.txt. Определение присваивается случайной величине X.

Строка 12: Функция read () считывает весь файл как строку и присваивает ее переменной BusData. Рис. 2 показывает, что BusData теперь строка из 1792 символа.

Разделить файл по символам

Строка 14: Функция split () в Python разбивает строку на список в точках, где находится пробел. Теперь данные преобразованы в список из 280 элементов и присвоены переменной. BusDataList. См. Рис 2.

Преобразовать в массив Numpy

Строка 15: Список преобразуется в массив numpy функцией numpy.array (). Рис. 2 показывает, что BusDataArray теперь представляет собой массив строк типа данных и состоит из 280 элементов.

Проблема в том, что она по-прежнему не похожа на нашу исходную таблицу данных в файле. Его нужно изменить.

Строка 16: Функция numpy.reshape () из пакета numpy преобразует массив в желаемые размеры 14 x 20. На рис. 2 показано, что АвтобусДанные переменная теперь представляет собой ndarray и имеет размеры 14 x 20.

Как мы видим, тип данных всех значений по-прежнему является строковым, но помните, что в исходном файле также были целые числа и числа с плавающей запятой. Чтобы убедиться, что все данные обрабатываются в соответствии с их правильным типом данных, нам нужно преобразовать их во фрейм данных Pandas.

Рис. 3. BusDataFrame, показывающий его первые 13 столбцов в проводнике переменных. 
Рис. 3. BusDataFrame, показывающий его первые 13 столбцов в проводнике переменных.Авторские права © Али Хан (Автор)

Преобразование массива Numpy в кадр данных

Строка 20: строка 20, наконец, выполняет работу по преобразованию массива строк в фреймворк pandas.

Функция Pandas.dataframe () принимает измененный массив numpy и имена всех 20 заголовков столбцов в качестве входных данных. На рис. 3 показан сформированный фрейм данных, а на рис. 2 это подтверждается в проводнике переменных.

Рис 4: Результат печати 
Рис 4: Результат печати

Ссылка на значения фрейма данных Pandas

Строка 22: Значения этого фрейма данных могут быть очень удобно доступны через dataframe.columnheader. [индекс] синтаксис.

Проверка типов переменных покажет, что все три типа данных — строки, целые числа и числа с плавающей запятой каждого столбца — автоматически сохраняются фреймом данных.