
Описание проекта
В рамках данного проекта я проанализировала свои фотографии за поездку августа 2024 года. Я люблю путешествовать и запечатлять воспоминания. В моем арсенале есть несколько девайсов, которые помогают мне в этом. Фотографии внесены в датасет и были проанализированы по нескольким параметрам: время съемки, как наполнялся мой архив, каким девайсом я больше всего пользовалась.
Я использовала столбчатую, линейную, виолончель и круговую диаграммы. Столбчатая наглядно может показать, в какой час суток я фотографировала больше всего. Линейная хороша для представления заполнения моего архива. Виолончель демонстрирует качество создаваемых фотографий. Круговая показывает процентное соотношение фотографий всех устройств.
Я выбрала эту тему, чтобы глубже изучить себя, свои привычки в фотографии. Также может быть для многих это станет интересным наблюдением для остальных, и кто-то захочет сделать так же.

Цветовое решение взято из исследуемых фотографий. Голубой — отсылка к морю, а охристый — к песку. А также вставлены несколько самих фотографий.
Подготовка файла
У меня есть папка с моим архивом фотографиями, и я написала программу, которая спрашивает и выдает диалоговое окно с просьбой указать, где содержатся эти фотографии.
Код создает файл с исходными данными, которые имеют следующий вид jpgName; jpgSize; createDate; createTime; deviceName G0095238.JPG; 2805831; 09.08.2024; 10:07:49; GoPro HERO3+ Black Edition
Основные используемые библиотеки
Pandas использовался для обработки исходных данных. kinter — это вызов askopenfiles для выбора исходного csv-файла Matplotlib, seaborn нужен был для создания диаграмм.
Инициализация данных
В этой программе читаем выбранный пользователем csv-файл, который содержит список фотографий из указанной ранее папки. На основе этого подготавливаем данные и строим графики, которые показывают параметры девайсов.
Выбор файла исходных данных fnCsv = filedialog.askopenfiles (title="Выбор файла», initialdir=os.getcwd (), defaultextension="csv», initialfile=»*.csv»)
Чтение, сортировка данных. df = pd.read_csv (fnCsv[0].name, sep='; ', parse_dates=['createDate', 'createTime'], dayfirst=True, index_col=2)
Инициализация дополонительных полей countPhoto = len (df.values) sizePhoto = 0 df['hour'] = df['createTime'].dt.hour df['jpgSizeMb'] = df['jpgSize']/1048576 df[«countPhoto»] = 1
Создание дополнительных таблиц с группировкой и сортировкой данных sizeByDate = df.groupby («createDate»)[«jpgSizeMb»].sum () for i in range (len (sizeByDate.values)): sizePhoto = sizePhoto + sizeByDate.values[i] if i > 0: sizeByDate.values[i] = sizeByDate.values[i] + sizeByDate.values[i-1]
sizeByDeviceCount = df.groupby («deviceName»)[«countPhoto»].sum ()
sizeByDeviceSize = df.groupby («deviceName»)[«jpgSize»].sum ()
Общие функции, применяемые для создания графиков
Создаёт график в указанных координатах: ax = plt.subplot2grid (……. Устанавливает название графика: ax.set_title (…. Подписи и формат данных под осями координат: ax.set_xlabel (…. ax.set_ylabel (…. ax.xaxis.set_major_locator (….
График 1
График 1. Гистограмма
С помощью программы и созданного кода выяснилось, что 10 часов утра — самое популярное время для съёмки (свыше 500 штук), а в ночные часы — ни одного кадра.
График 2
Это линейный график, показывающий как рос мой объём фотографий. Интересно заметить, максимальный рост был, когда я поехала на экскурсию с 1500 Мб до 5500 Мб.
График 3
Самые качественные и объёмные фотографии были сделаны Canon EOS600 и Samsung SM-G9880, где большинство фото имело размер 6…8 Мегабайт (в пике достигая значений 12Мб). Хуже GoPro, где среднее значение колеблется около 2,5 Мб. Менее всего Sony FDR-AX700 — около 1 Мб.
График 4-5
Было сделано два круговых графика, которые логически связаны друг с другом. Первый показывает количество фото в процентах и их абсолютное количество. Другая диаграмма демонстрирует то же самое, что и первая, но с объемом. Наблюдается, что Sony, занимает 4,2% в отношении абсолютного количества, но если смотреть в МГ, то фотографии с этого устройства занимают ничтожно маленькое количества (0.3%).



