TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #241 · 5 мај

Можно ли в Python создавать бинарные файлы? Конечно можно. Для этого в Python есть следующие инструменты: ▫️ тип данных bytes и bytearray ▫️ открытие файла в режиме wb (write binary) или rb (read binary) ▫️ модуль struct Про модуль struct поговорим в первую очередь. Файл в формате JSON или Yaml внутри себя содержит разметку данных. Всегда можно определить где список начался а где закончился. Где записана строка а где словарь. То есть формат записи данных содержит в себе элементы разметки данных. В binary-файле данные не имеют визуальной разметки. Это просто байты, записанные один за другим. Правила записи и чтения находятся вне файла. Модуль struct как раз и помогает с организацией данных в таком файле с помощью определения форматов записи для разных частей файла. Модуль struct преобразует Python-объекты в массив байт, готовый к записи в файл и имеющий определённый вид. Для этого всегда следует указывать формат преобразования (или, как оно здесь называется - запаковки). Формат нужен для того, чтобы выделить достаточное количество байт для записи конкретного типа объекта. В последствии с помощью того же формата будет производиться чтение. При этом следует помнить что мы говорим о типах языка С а не Python. Именно формат определяет, что записано в конкретном месте файла, число, строка или что-то еще. Вот какие токены формата у нас есть. Помимо этого, первым символом можно указать порядок байтов. На разных системах одни и те же типы данных могут записываться по-разному, поэтому желательно указать конкретный способ из доступных. Если этого не сделать, то используется символ '@', то есть нативный для текущей системы. В строке формата мы пишем в каком порядке и какие типы собираемся преобразовать в байты. Запакуем в байты простое число, токен "i". >>> import struct >>> struct.pack('=i', 10) b'\n\x00\x00\x00' Теперь несколько float, при этом нужно передавать элементы не массивом а последовательностью аргументов. >>> struct.pack('=fff', 1.0, 2.5, 4.1) b'\x00\x00\x80?\x00\x00 @33\x83@' Вместо нескольких токенов можно просто указать нужное количество элементов перед одним токеном, результат будет тот же. >>> struct.pack('=3f', 1.0, 2.5, 4.1) b'\x00\x00\x80?\x00\x00 @33\x83@' Теперь запакуем разные типы >>> data = struct.pack('=fiQ', 1.0, 4, 100500) я запаковал типы float, int и unsigned long long (очень большой int, на 8 байт) b'\x00\x00\x80?\x04\x00\x00...' Распаковка происходит аналогично, но нужно указать тот же формат, который использовался при запаковке. Результат возвращается всегда в виде кортежа. >>> struct.unpack('=fiQ', data) (1.0, 4, 100500) Как видите, ничего страшного! #lib#basic

Hashtags

Резултати

Пронајдени 2 слични објави

Пребарај: #urbandata

当前筛选 #urbandata清除筛选
О городах и данных

@datainthecity · Post #3 · 04.09.2020 г., 19:38

Начну с одного из своих любимых примеров использования городских данных из столицы Шотландии, Эдинбурга. Каждый август там проходит международный фестиваль Edinburgh Festival Fringe, на который приезжают тысячи туристов и, конечно, стандартное расписание транспорта этого относительно небольшого города не справляется с такой нагрузкой. Чтобы подстроить работу автобусов и поездов ( многие туристы ночуют вне Эдинбурга) под спрос, городские власти совместно с департаментом транспорта и университетом Эдинбурга, собирают статистику с учреждений-участников фестиваля о времени проведения их мероприятий и количестве зарегистрировавшихся, и, исходя из этого, определяют в какие часы, какое количество дополнительных рейсов и куда должно быть направлено. Говорят, что регулируют даже светофоры. Система пока не настроена, чтобы работать реал-тайм, поэтому решения принимаются заранее на основе ожидаемых цифр и исторических данных. В целом, это понятный и эффективный пример того, как данные помогают избежать перегруженности транспорта во время массовых мероприятий. Может и нашим властям попробовать вместо того, чтобы закрывать метро, подстраивать работу транспорта под спрос? #urbandata#urbanalytics#scotland#smartcity

О городах и данных

@datainthecity · Post #19 · 08.09.2020 г., 07:32

Качество инфраструктуры-важный, но не единственный параметр при принятии решения о переезде в новый район. Другой вопрос, которые возникает в головах у многих : "а кто мои будущие соседи?". "С кем будет учиться ребенок в школе, безопасно ли вечером на площадке у дома, будут ли у меня партнеры по бегу?" . Здесь я вас разочарую : в России на эти вопросы вам ответят только бабушки на лавочке у подъезда. А вот в Европе, и в частности Британии, такую бабушку заменяет .. перепись населения! Да, та самая, которая проводится раз в 10 лет и во время которой незнакомые люди с бумажными анкетами, спрашивают вас, сколько человек у вас в семье и кто вы по-национальности Дело в том, что в Британии результаты переписи населения предназначены для аудитории значительно шире российской,а потому и данных собирается в разу больше. Сравните. В России: " цель.. - формирование федеральных информационных ресурсов". В Британии: "перепись.. дает лицам, принимающим решения в национальных и местных органах власти, общественных группах, благотворительных организациях и предприятиях, возможность лучше обслуживать сообщества и отдельных лиц. в Соединенном Королевстве". В России есть 10 показателей в разрезе регионов, в Британии 104 в 13 географических разрезах от страны до почтового индекса ( 15-20 квартир). Как результат, в России максимум, что я могу узнать, что в Тюменской области в городах живут 343тыс рабочего населения возрастом от 20-30 лет; в Британии, что в Ливерпуле в районе центрального железнодорожного вокзала живет 3700 человек от 20 до 35 лет, из которых 114 - владельцы собственного бизнеса на фул-тайм и 18 из них еще параллельно учатся. Заметили разницу? Кроме того в Британии помимо основной анкеты про пол/возраст/национальность есть еще расширенная, по которой опрашивают выборочно, но так чтобы составить полное представление о каждом районе. Вопросы такие: сколько часов в день у них уходит на дорогу на работу, как часто члены семьи ездят на машине/велосипеде/автобусе, как давно переехали в эту квартиру, какой процент дохода тратите на коммунальные услуги и т.д. Все эти данные крайне важны для политиков,городских планировщиков, социальных служб, исследователей и да, для тех, кто выбирает новый район для жизни, ведь с точностью до 20 квартир можно многое узнать про соседей. Британский сайт переписи : https://www.nomisweb.co.uk/census/2011/data_finder Российский сайт переписи: https://vpngis.gks.ru:8443/ #census#opendata#urbandata#datainthecity#перепись2021