Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Современные средства разработки программного обеспечения. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
151
где разделителем является не запятая, а точка с запятой. Кроме того, строки разделяются двумя символами перевода строки вместо одной. В таких случаях можно указать разделитель и ограничитель строки.
Чтение CSV-файлов с помощью Pandas
Можно читать файлы Python CSV с помощью Pandas, используя функцию
pandas.read_csv().
Пример. Пусть имеется файл employees.csv с содержимым:
name,department,birthday_month
Ivan Petrow,HR,July
Anna Pawlowa,IT,October
Petr Dalow,Finance,January
В этом примере pd.read_csv() считывает CSV-файл в фрейм данных Pan-
das. Полученный фрейм данных можно использовать для различных манипуляций с
данными и задач анализа.
import pandas as pd # Read the CSV file into a DataFrame df = pd.read_csv('employees.csv') print(df)
Результат:
name department birthday_month
0 Ivan Petrow HR July
1 Anna Pawlowa IT October
152
2 Petr Dalow Finance January
Можно получать доступ к определенным столбцам, фильтровать данные и вы­полнять различные операции, используя функциональность фрейма данных pandas. Например, если нужно получить доступ к столбцу “name”, можно использо­вать df['name'].
# Access the 'name' column
names = df['name']
print(names)
Результат:
0 Ivan Petrow
1 Anna Pawlowa
2 Petr Dalow
Name: name, dtype: object
Запись CSV-файлов с помощью Pandas
Можно использовать Pandas для записи CSV-файлов помощью функции
pd.DataFrame(). В этом примере библиотека Pandas используется для преобразова­ния списка словарей (mydict) во фрейм данных, представляющий табличные данные.
Затем фрейм данных записывается в CSV-файл Python с именем “output.csv” с помо­щью метода to_csv, создавая структурированный и читаемый файл данных для даль­нейшего анализа или совместного использования.
import pandas as pd
mydict = [{'branch': 'COE', 'cgpa': '9.4', 'name': 'Nikita', 'year': '1'}, {'branch': 'COE', 'cgpa': '9.1', 'name': 'Sasha', 'year': '2'}, {'branch': 'IT', 'cgpa': '9.3', 'name': 'Anna', 'year': '2'}, {'branch': 'SE', 'cgpa': '9.5', 'name': 'Petr', 'year': '1'}, {'branch': 'MCE', 'cgpa': '7.8', 'name': 'Artem', 'year': '3'},
153
{'branch': 'EP', 'cgpa': '7.1',
'name': 'Ivan', 'year': '3'}]
# Create and write a DataFrame from the list of dictionaries
df = pd.DataFrame(mydict)
df.to_csv('output.csv', index=False)
Выходной CSV-файл:
branch,cgpa,name,year
COE,9.4,Nikita,1
COE,9.1,Sasha,2
IT,9.3,Anna,2
SE,9.5,Petr,1
MCE,7.8,Artem,3
EP,7.1,Ivan,3
Пример. Хранение электронных адресов в CSV-файлах.
В программе импортирован модуль csv, для хранения электронных писем в виде объектов, разделенных запятыми, также с их именами. Открыт файл функцией
open(), а затем записан каждый столбец в csv-файл с помощью созданного объекта writer.
import csv fields = ['Name', 'Email']
# data rows of csv file
rows = [ ['Nikita', 'nikita.pyth@gmail.com'], ['Sanja', 'sanja.pyth@gmail.com'], ['Anjuta', 'anjuta.pyth@gmail.com'], ['Wladimir', 'Wladimir.pyth@gmail.com'], ['Peter', 'peter.pyth@gmail.com'], ['Sasha', 'sasha.pyth@gmail.com']] filename = "email_records.csv"
# writing to csv file
with open(filename, 'w') as csvfile: # creating a csv writer object
154
csvwriter = csv.writer(csvfile) # writing the fields csvwriter.writerow(fields) # writing the data rows csvwriter.writerows(rows)
10.3 Лабораторная работа
10.3.1 Порядок выполнения лабораторной работы
1 Ознакомиться с целью, задачами, содержанием лабораторной работы, об- щими методическими указаниями к выполнению.
2 Изучить основы работы с файлами, модуль pickle.
3 Подготовить исходные данные к работе.
4 В системе Visual Studio Code или PyСharm выполнить практические задания
как общие, представленные в тексте теоретических предпосылок, так и согласно ва­рианту, вариант выбирается по номеру списка студентов в группе.
5 Оформить отчет.
Цель. Научиться работать с файлами в Python: текстовыми и бинарными фай­лами, выполнять запись в файл и чтение из файла.
Задания
Разработать программное средство для реализации задачи:
1 Выполнить простую обработку данных с хранением в файле по заданному номеру варианта.
10.3.2 Индивидуальные варианты заданий
В заданиях предполагается, что текстовый файл содержит строки. Строка со­стоит из слов, разделенных произвольным количеством пробелов.
1 Пусть дан файл f1 с текстом. Перепишите его содержимое в файл f2, сохраняя строчную структуру и удаляя пустые строки.
155
2 Пусть дан файл с текстом. Слова не переносятся с одной строки на
другую. Напечатайте строку с наибольшим количеством слов. Если таких строк несколько, напечатайте первые десять.
3 Пусть дан файл с текстом. Перенесите в новый файл все строки, содержащие заданное слово.
4 Пусть дан файл с текстом. Перенесите в новый файл все строки, не содержащие заданного слова.
5 Пусть дан файл с текстом. В новый файл перенесите каждое слово как отдельную строку. Переход к новой строке в исходном файле соответствует пустой строке в новом файле. Пустых строк в заданном файле нет.
6 По файлу, содержащему строки-слова (см. условие предыдущего задания), получите первоначальный файл, в котором слова разделены одним пробелом.
7 Пусть дан файл с текстом. Распечатайте первую строку, содержащую наибольшее число различных слов.
8 Пусть дан файл с текстом. Для каждой строки распечатайте слово наибольшей длины. Если их несколько, то распечатайте все.
9 Пусть дан файл с текстом, строки пронумерованы, не обязательно по порядку. Распечатайте строку с заданным номером.
10 Пусть дан файл с текстом, строки пронумерованы, не обязательно по порядку. Удалите строку с заданным номером. Если строки с указанным номером нет, сообщите об этом.
11 Пусть дан файл с текстом. Распечатайте все строки, начинающиеся с заданного слова.
12 Пусть дан файл с текстом. Распечатайте все строки, оканчивающиеся за данным словом.
13 Пусть дан файл с текстом. Найдите строку максимальной длины.
14 Пусть дан файл с текстом. Создайте новый файл на основе данного,
оставив в каждой группе подряд идущих строк, отличающихся между собой только количеством пробелов между словами, одну с минимальным числом пробелов.
156
15 Пусть дан файл с текстом. Определите, сколько строк файла имеют длину, большую, равную и меньшую, чем заданное значение k.
16 Пусть дан файл с текстом. Создайте два выходных файла: в один
перепишите из каждой строки первые p слов (р задается вводом), в другой — оставшиеся. Если в строке меньше чем р слов, то во втором файле соответствующая строка должна быть пустой.
17 Пусть дан файл с текстом. Распечатайте строки, предшествующие строкам, начинающимся с заданного слова.
18 Пусть дан файл с текстом. Напечатайте первое из слов, в котором наибольшее число различных букв. Если длина слова больше 20, то распечатайте первые 20 букв.
19 Пусть дан файл с текстом.. Для каждой строки распечатайте первое из слов содержащее наибольшее число различных букв.
20 Пусть дан файл с текстом. Для каждой строки распечатайте слово с номером (n + 1) div 2, где n – количество слов в строке.
21 Пусть дан файл с текстом. Создайте файл целых чисел, в котором каждой строке исходного файла соответствует в выходном файле число, равное количеству слов в строке. Пустой строке или строке, состоящей из одних пробелов, соответствует число 0.
22 Пусть дан файл с текстом. Максимальная длина слова в этом файле равна пяти символам. Создайте пять файлов. Каждой строке входного файла соответствует одна строка в каждом из пяти файлов, в которые переписаны через пробел слова соответствующей длины: в первом файле - слова длины 1, во втором — слова длины 2 и т. д. Если слов длины k нет, то соответствующая строка k-го должна быть пустой.
23 Пусть даны два текстовых файла с текстом. Определите, равны ли они. Равенство понимается в смысле совпадения соответствующих символов и одинакового деления на строки.
157
10.4 Контрольные вопросы
1 С какими типами файлов позволяет работать Python?
2 Что представляют собой текстовые и двоичные файлы?
3 Из каких этапов состоит работа с файлом в Python?
4 Какие параметры имеет функция открытия файла в Python?
5 Какие режимы доступа к файлу можно указать в функции открытия файла в Python?
6 Какие существуют методы чтения данных из файла на Python?
7 В каком режиме доступа позволяет производить чтение и запись модуль pickle?
8 Что представляет собой формат файла CSV?
9 Как выполнить чтение CSV-файла в словарь с помощью модуля csv?
10 Как выполнить чтение CSV-файла с помощью Pandas?
158
11 Форматы данных
11.1 Виды форматов данных
Данные можно получить из разных источников в различных видах и формах.
Например, получить данные из Интернета, по электронной почте и FTP или создать самостоятельно в ходе лабораторного эксперимента или маркетингового опроса.
Можно выделить три доминирующих формата данных: структурированные, ча­стично структурированные и неструктурированные данные. Пропорции каждого типа данных в смеси и их значимость/роль в принятии бизнес-решений на основе данных быстро меняются [42].
Неструктурированные данные могут поступать из:
– Запросы в поисковых системах; – Социальные сети; – Сайты с отзывами клиентов; – Взаимодействие с чат-ботами; – Чаты в мессенджерах; – Инструменты сообщества, такие как Slack и Discord; – платформы для совместной работы, такие как Zoom и Teams; – Примечания агента по обслуживанию клиентов; – Веб-формы; – Тесты для клиентов; – Опросы; – Комментарии к блогу/веб-сайту.
Кроме того, можно заметить рост потоковой передачи частично структурирован­ных данных с подключенных к Интернету вещей устройств, датчиков, мобильных приложений и приложений электронной почты. Данные в этом формате не упорядо­чиваются в соответствии с заранее заданной моделью данных или схемой. Данный формат может включать в себя огромное количество информации, но не может хра­ниться в традиционной реляционной базе данных, включает в себя журналы, XML­файлы и данные в различных форматах, таких как JSON, Avro и Parquet.
159
В совокупности такие устройства и приложения генерируют огромные объемы неструктурированных или частично структурированных аудио-, видео- и текстовых данных, генерируемых человеком или машиной, которые определяют современное бизнес-взаимодействие.
11.2 Сравнение форматов данных
Форматы данных играют решающую роль в определении того, как информация хранится, обрабатывается и обменивается между различными системами.
В статье [43] представлен исчерпывающий обзор пяти распространенных фор­матов данных: CSV (значения, разделенные запятыми), JSON (объектная нотация JavaScript), XML (расширяемый язык разметки), Parquet (столбчатый формат хране­ния) и Avro (двоичный формат сериализации данных). Приведены их свойства, пре­имущества и недостатки, чтобы помочь принять обоснованное решение при выборе формата данных для ETL-процесса. Результаты сравнения в таблице 1.
Таблица 11.1 – Сравнительная таблица форматов данных
Атрибут
Файл
CSV
Формат
JSON
XML
Parquet
Avro
Накладные расходы на хранение
Низкий
Умерен­ный
Высокий
Низкий (столбчатое сжатие)
Низкий (двоич­ный формат)
Сложность данных
Ограни­ченные (плоские, табуляр­ные)
Высокий (вложен­ный, иерархи­ческий)
Высокий (вложен­ный, иерар­хический)
Умеренный (столбча­тый)
Высокий (вло­женный, иерар­хический)
Производи­тельность чтения
Быстрый (простой, на основе строк)
Умерен­ный
Медлен­ный (мно­гословный)
Быстрый (столбча­тый)
Умеренный (на основе строк)
160
Атрибут
Файл
CSV
Формат
JSON
XML
Parquet
Avro
Производи­тельность записи
Быстрый (простой, на основе строк)
Умерен­ный
Медлен­ный (мно­гословный)
Медленный (столбча­тый)
Умеренный (на основе строк)
Принуди­тельное применение схемы
Никакой
Никакой
Да (XML­схема,
XSD)
Да (Паркет­ная схема)
Да (схема Avro)
Удобочита­емость
Высокий
Высокий
Умерен­ный (мно­гословный, разметка)
Низкий (би­нарный, столбча­тый)
Низкий (бинар­ный)
Совмести­мость
Высокий (универ­сальная опора)
Высокий (не зави­сит от языка)
Умерен­ный (син­таксиче­ский анали­затор
XML)
Средний (инстру­менты для работы с большими данными)
Средний (ин­струменты для работы с боль­шими данными)
На основе представленного сравнения можно более рационально выбрать фор­мат данных для интеграции программных систем [44].
11.3 Интеграция с общими форматами данных
Использование внешних форматов данных подходит для интеграции программ­ных систем, которые естественным образом не имеют общего языка или формата дан­ных.
Системная интеграция – это процесс объединения различных частей системы в одну, функционирующую как единое целое. Цель состоит в том, чтобы соединить от­дельные компоненты и обеспечить их слаженную совместную работу. Этот тип си­стемы хорошо подходит для ИТ-систем, таких как системы планирования ресурсов
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]