Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Современные средства разработки программного обеспечения. Учебное пособие
.pdf
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 Интеграция с общими форматами данных
Использование внешних форматов данных подходит для интеграции программных систем, которые естественным образом не имеют общего языка или формата данных.
Системная интеграция – это процесс объединения различных частей системы в
одну, функционирующую как единое целое. Цель состоит в том, чтобы соединить отдельные компоненты и обеспечить их слаженную совместную работу. Этот тип системы хорошо подходит для ИТ-систем, таких как системы планирования ресурсов
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
