Vasilii Volk

1616492442

Астрал.ОФД - Оператор фискальных данных

При продаже маркированных товаров онлайн-касса должна быть подключена к системе «Честный ЗНАК». При сканировании кода отправляются данные о продаже и формируется чек. Для работы с системой у продавца должен быть фискальный накопитель ФФД 1.2. Он способен обрабатывать коды маркировки, формировать запросы, отправлять уведомления о продаже.
Приказ ФНС № ЕД-7-20/662@ ввел новые, обязательные реквизиты фискальных документов, дополняющие существующие. В связи с этим новшеством в реестр вошла новая модель ФН-1.1М. Она поддерживает все форматы фискальных документов, включая маркированные товары. Теперь все, кто работает с продукцией, подлежащей маркировке, должны перейти на фискальные накопители ФФД 1.2. Сделать это необходимо до 6 августа 2021 года. С этой даты будет невозможна регистрация касс со старыми ФН. Но если ваша техника зарегистрирована до крайней даты, ее можно использовать до окончания срока действия накопителя.
Более подробно с ОФД можно ознакомиться здесь https://astral.ru/business/ofd/

#офд

What is GEEK

Buddha Community

Vasilii Volk

1616492442

Астрал.ОФД - Оператор фискальных данных

При продаже маркированных товаров онлайн-касса должна быть подключена к системе «Честный ЗНАК». При сканировании кода отправляются данные о продаже и формируется чек. Для работы с системой у продавца должен быть фискальный накопитель ФФД 1.2. Он способен обрабатывать коды маркировки, формировать запросы, отправлять уведомления о продаже.
Приказ ФНС № ЕД-7-20/662@ ввел новые, обязательные реквизиты фискальных документов, дополняющие существующие. В связи с этим новшеством в реестр вошла новая модель ФН-1.1М. Она поддерживает все форматы фискальных документов, включая маркированные товары. Теперь все, кто работает с продукцией, подлежащей маркировке, должны перейти на фискальные накопители ФФД 1.2. Сделать это необходимо до 6 августа 2021 года. С этой даты будет невозможна регистрация касс со старыми ФН. Но если ваша техника зарегистрирована до крайней даты, ее можно использовать до окончания срока действия накопителя.
Более подробно с ОФД можно ознакомиться здесь https://astral.ru/business/ofd/

#офд

Mikel  Okuneva

Mikel Okuneva

1602766800

Старт 9 ноября, Москва и СПб: интенсив «Fullstack-разработчик. JavaScript»

On November 9, a new stream starts at the Elbrus Coding Bootcamp programming school .

What does training look like?

Elbrus is a kind of internship taught by developers from IT companies. For the period of study, students will be completely disconnected from all tasks, except programming:

  • from 9:00 to 19:00 every weekday they will be in the bootcamp - this is> 540 hours of practice;
  • will study theory, will program in pairs and individually and will be able to do real projects in teams;
  • create alternatives to Twitter, Instagram and even Facebook;
  • will receive full support in employment: a team of coaches will go with the students all the way - prepare for interviews and help write a resume.

What will be taught?

The training lasts 3 months and consists of 4 phases.

First, the basics: algorithms, data structures, testing, as well as HTML5 + CSS3 layout and programming in modern JavaScript.

When you hone your basic skills, web development will begin: the backend on Node.js and Express, interacting with databases, the frontend - on the React + Redux bundle. They will also teach end-to-end testing, automation of routine tasks and security on the web.

What about employment?

After defending the final projects and receiving certificates, the graduates will begin their career week. They will help you to compose a resume and replenish your portfolio with completed projects, will tell you how to pass interviews.

Also, the Elbrus HR team conducts trainings with students aimed at developing soft skills.

Learning outcomes can be judged by studying the stories of those who are already employed. Every week Elbrus holds an open house where alumni are invited: get to know everything firsthand. There is also a lot of information on this topic on the  school’s social networks .

How to apply to bootcamp?

Pass an exam on basic JavaScript syntax.

The next face-to-face stream will start on November 9 in Moscow and St. Petersburg. The exam must be passed before  November 1 .

#level up #css #html #javascript #node.js #react #redux #алгоритмы и структуры данных #базы данных #безопасность #веб-разработка #для начинающих #карьера #партнёрский материал #тестирование #фронтенд

Классы данных в Python с декоратором класса данных

Изучите основы классов данных в Python, используя dataclassesмодуль и dataclassдекоратор со всеми возможными параметрами.

Классы данных — это обычные классы, предназначенные для хранения состояния, а не содержащие много логики. Если вам нужен класс, который в основном состоит из атрибутов и не требует большого количества методов, вы можете создать класс данных.

Модуль dataclasses упрощает создание классов данных, поскольку он позаботится о большом количестве шаблонов за вас. Он предоставляет dataclassдекоратор, который автоматически добавляет специальные методы , такие как __init__()и __repr__()в пользовательские классы.

Кроме того, он предлагает некоторые дополнительные функции, которые удобны при работе с классом данных.

Обычный класс без класса данных

Во-первых, давайте посмотрим обычный класс. Здесь мы должны сами реализовать все методы, чтобы получить желаемое поведение:

class Student:
    def __init__(self, id, name):
        # Instance variables
        self.id = id
        self.name = name

    def __repr__(self):
        return ("Student Info: id={}, name={}".format(self.id, self.name))

student = Student(22, "Paul")
print(student)

Выход:

Student Info: id=22, name=Paul

Теперь давайте посмотрим, как мы можем добиться такого же поведения с гораздо меньшим количеством кода, используя dataclass.

Пример использованияdataclass

Давайте реализуем тот же класс с помощью dataclassдекоратора:

from dataclasses import dataclass


@dataclass
class Student:
    id: int
    name: str


student = Student(22, "Paul")
print(student)

Выход:

Student(id=22, name='Paul')

Здесь нам не нужно определять отдельные функции, такие как __init__()декоратор __repr__(), since theкласса данных, который добавит это за нас.

Значения по умолчанию в классах данных

Вы можете назначить значения по умолчанию для ваших полей. Тогда нам не нужно использовать их в конструкторе. Давайте посмотрим пример:

from dataclasses import dataclass


@dataclass
class Student:
    id: int 
    name: str = "John"


student = Student(22)
print(student)

Выход:

Student(id=22, name='John')

Примечание. Атрибуты со значениями по умолчанию должны стоять после атрибутов без значений по умолчанию, иначе вы получите сообщение об ошибке.

Неизменяемые/замороженные классы данных

Неизменяемые объекты означают, что вы не можете изменить значения атрибутов после их создания. Это объекты только для чтения.

Вы должны установить для frozenпараметра dataclassдекоратора значение True, чтобы сделать класс данных неизменным. По умолчанию классы данных изменяемы.

Давайте посмотрим пример:

from dataclasses import dataclass

@dataclass(frozen=True)
class Student:
    id: int 
    name: str = "John"


student = Student(22, "Paul")
student.id = 20

Это вызовет FrozenInstanceError:

dataclasses.FrozenInstanceError: cannot assign to field 'id'

В приведенном выше примере, если вы измените значение атрибута после установки для замороженного параметра значения True, вы получите сообщение об ошибке.

Преобразование в кортеж или словарь

В модуле класса данных есть две функции: astuple()и asdict()они преобразуют экземпляр класса данных в кортеж или словарь. Давайте посмотрим пример:

from dataclasses import dataclass, astuple, asdict

@dataclass
class Student:
    id: int 
    name: str 


student = Student(22, "Paul")

print("Tuple:", astuple(student))
print("Dictionary:", asdict(student))

Выход:

Tuple: (22, 'Paul')
Dictionary: {'id': 22, 'name': 'Paul'}

Полный синтаксис класса данных и необязательные параметры

Полный декоратор класса данных может иметь следующие необязательные аргументы:

dataclass(*, init=True, repr=True, eq=True,
             order=False, unsafe_hash=False, frozen=False,
             match_args=True, kw_only=False, slots=False)

*здесь означает, что все аргументы должны передаваться как аргументы ключевого слова. Давайте подробно рассмотрим различные аргументы:

  • init: Это для инициализации. По умолчанию это True, и оно будет сгенерировано автоматически. Если класс определяет это явно, то этот метод будет проигнорирован.
  • repr: это для представления строковых объектов, и они возвращаются в том порядке, в котором они определены. По умолчанию это True, и оно будет сгенерировано автоматически. Если класс определяет его автоматически, то этот метод будет проигнорирован.
  • eq: это для равенства между двумя объектами и проверяет, имеют ли два объекта одинаковые данные. По умолчанию это True, и оно будет сгенерировано автоматически. Если класс определяет его автоматически, то этот метод будет проигнорирован.
  • order: это для сравнения, и если оно истинно, то будут сгенерированы методы __lt__(), __le__(), __gt__()и __ge__(). По умолчанию это False.
  • unsafe_hash: Если это False, то он будет генерировать __hash__()метод в соответствии с тем, как eqустановлены `frozen. По умолчанию это False.
  • frozen: Если это True, то оно будет генерировать исключение при назначении полей. По умолчанию это False.

Примечание. Если ordertrue, то `eq должен быть True, иначе вы получите ValueError.

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

В этой статье вы узнали о классах данных и о том, как они могут сделать ваш код более читабельным.

Запрос данных из базы данных MySQL в Python

Это указывает вам , как запрашивать данные из базы данных MySQL в Python с использованием API MySQL Connector / Python , таких как fetchone(), fetchmany()и fetchall().

Чтобы запросить данные в базе данных MySQL из Python, вам необходимо выполнить следующие шаги:

  1. Подключившись к базе данных MySQL , вы получите MySQLConnectionобъект.
  2. Инициализировать  MySQLCursorобъект из MySQLConnectionобъекта.
  3. Используйте указатели для выполнения запроса, вызывая его execute()методы.
  4. Используйте fetchone()fetchmany()или  fetchall()метод, чтобы получить данные из набора результатов.
  5. Закройте курсор и соединение с базой данных, вызвав  close()метод соответствующего объекта.

Мы покажем вам, как использовать fetchone(), fetchmany()и  fetchall()метод более подробно в следующих разделах.

Запросить данные с fetchone()помощью метода

fetchone()Метод возвращает следующую строку из набора результатов запроса, или Noneв отсутствии навалом. Взгляните на следующий код:

from mysql.connector import MySQLConnection, Error
from python_mysql_dbconfig import read_db_config


def query_with_fetchone():
    try:
        dbconfig = read_db_config()
        conn = MySQLConnection(**dbconfig)
        cursor = conn.cursor()
        cursor.execute("SELECT * FROM books")

        row = cursor.fetchone()

        while row is not None:
            print(row)
            row = cursor.fetchone()

    except Error as e:
        print(e)

    finally:
        cursor.close()
        conn.close()


if __name__ == '__main__':
    query_with_fetchone()

Разберем код подробнее:

  1. Сначала подключитесь к базе данных, создав MySQLConnectionновый объект
  2. Затем создайте экземпляр MySQLCursorнового объекта из  MySQLConnectionобъекта
  3. Затем выполните запрос, который выбирает все строки из booksтаблицы.
  4. Затем вызовите следующую строку в наборе результатов fetchone(). В  while loopблоке отобразите содержимое строки и переходите к следующей строке, пока не будут выбраны все строки.
  5. Наконец, закройте объекты указателя и соединения, вызвав  close()метод соответствующего объекта.

Обратите внимание, что мы использовали функцию read_db_config()из модуля, который python_mysql_dbconfig.pyмы создали в учебнике, для подключения к базе данных MySQL .

Запросить данные с fetchall()помощью метода

 Если количество строк в таблице невелико, вы можете использовать  fetchall()этот метод для выборки всех строк из таблицы базы данных. См. Следующий код.

from mysql.connector import MySQLConnection, Error
from python_mysql_dbconfig import read_db_config


def query_with_fetchall():
    try:
        dbconfig = read_db_config()
        conn = MySQLConnection(**dbconfig)
        cursor = conn.cursor()
        cursor.execute("SELECT * FROM books")
        rows = cursor.fetchall()

        print('Total Row(s):', cursor.rowcount)
        for row in rows:
            print(row)

    except Error as e:
        print(e)

    finally:
        cursor.close()
        conn.close()


if __name__ == '__main__':
    query_with_fetchall()

Логика аналогична примеру  fetchone()метода, за исключением  fetchall()части вызова метода. Поскольку мы уже извлекли все строки из booksтаблицы в память, мы можем получить общее количество возвращаемых строк, используя  rowcountсвойство объекта-указателя.

Запросить данные с fetchmany()помощью метода

Для относительно большой таблицы требуется время, чтобы получить все строки и вернуть весь набор результатов. Кроме  fetchall()того, необходимо выделить достаточно памяти для хранения всего набора результатов в памяти, что неэффективно.

В MySQL Connector / Python есть  fetchmany()метод, который возвращает следующее (n) количество строк результирующего набора, что позволяет вам найти баланс между временем доступа и объемом памяти.

Во-первых, давайте разработаем блок-генератор вызовов базы данных в последовательность  fetchmany()вызовов:

def iter_row(cursor, size=10):
    while True:
        rows = cursor.fetchmany(size)
        if not rows:
            break
        for row in rows:
            yield row

Во-вторых, используйте  iter_row()генератор для одновременного получения 10 строк:

def query_with_fetchmany():
    try:
        dbconfig = read_db_config()
        conn = MySQLConnection(**dbconfig)
        cursor = conn.cursor()

        cursor.execute("SELECT * FROM books")

        for row in iter_row(cursor, 10):
            print(row)

    except Error as e:
        print(e)

    finally:
        cursor.close()
        conn.close()

В этом руководстве вы узнали о различных способах запроса данных из базы данных MySQL с помощью Python. Важно понимать каждый метод, уравновешивая время доступа к данным и память, необходимую для хранения набора результатов.

5 общедоступных наборов данных для отработки навыков анализа данных

Реальные данные беспорядочны и хаотичны. В отличие от хорошо подобранных академических наборов данных, доступных в Интернете, требуется много времени даже для того, чтобы подготовить реальный набор данных для анализа. Хотя последний сопряжен с проблемами, он также воспроизводит промышленный сценарий. Поэтому практика на таких наборах данных может помочь вам преуспеть в реальном мире.

Сегодня мы поговорим о 5 лучших общедоступных наборах данных, на которых вы можете попрактиковаться!

Если вы любите музеи, как и я, вам понравится первый в списке.

Наборы данных

Коллекция Музея современного искусства (MoMA)

Коллекция Музея современного искусства включает метаданные о всех видах визуального выражения, таких как живопись, архитектура или дизайн. Он содержит более 130 000 записей и содержит информацию о каждой работе, включая название, исполнителя, размеры и т. д.

Коллекция включает в себя два набора данных — «Artist» и «Artwork», доступные в форматах CSV и JSON. Данные можно либо разветвить, либо скачать прямо со страницы GitHub . Однако набор данных содержит неполную информацию и должен использоваться только в исследовательских целях. Вот почему это идеальный кандидат, поскольку он напоминает реальный сценарий, в котором данные часто отсутствуют.

Для начала мы можем изучить набор данных Artists.

SELECT nationality, COUNT(nationality) as "Number of Artists"
FROM artists
GROUP BY nationality
ORDER BY COUNT(nationality) DESC LIMIT 10

Я группирую художников по национальности и ограничиваю результаты 10 лучшими странами. Настроив параметр «Диаграмма» в среде Arctype, мы получим вертикальную гистограмму, которая выглядит следующим образом:

Это тривиальный пример для начала работы с набором данных. Вы можете так много сделать с SQL и визуализацией данных с помощью Artcype. Например, группировка по полу с помощью поля «пол» и анализ временных рядов работ по атрибутам «дата_начала» и «дата_окончания» .

Обратите внимание, что из-за большого размера набор данных версионируется с использованием расширения Git Large File Storage (LFS) . Чтобы использовать данные, необходимо расширение LFS.

Но не волнуйтесь! Если вы ищете относительно меньший набор данных, чтобы сразу начать работу, следующий будет в вашем списке.

Набор данных Covid

Набор данных Covid-19 представляет собой временные ряды данных, основанные на ежедневных случаях, зарегистрированных в Соединенных Штатах. Он взят из файлов, опубликованных New York Times. Коллекция содержит как исторические, так и текущие данные, которые часто обновляются. Данные снова разделены на 57 штатов и более 3000 округов.

В дополнение к столбцам, присутствующим в наборе исторических данных, в оперативных файлах также записывается следующее:

  • случаи: общее количество случаев, включая подтвержденные и вероятные случаи.
  • смертей: общее количество смертей, включая подтвержденные и вероятные смерти.
  • verify_cases: только лабораторно подтвержденные случаи.
  • verify_deaths: только лабораторно подтвержденные смерти.
  • probable_cases: количество только вероятных случаев.
  • probable_deaths: количество только вероятных смертей.

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

Для начала мы можем узнать, какие штаты больше всего пострадали в стране.

SELECT
	SUM(cases) as 'Total Cases',
	state as 'State', 
	SUM(deaths) as 'Total Deaths'
FROM us_states
GROUP BY state
ORDER BY SUM(cases) DESC
LIMIT 10

Я ограничиваю свой результат 10 лучшими состояниями, вы можете выбрать больше, изменив команду «LIMIT» .

Если вы знакомы с Arctype Environment , вы заметите, что она дает вам возможность выбрать «Диаграмму» при успешном выполнении запроса. Я выбрал вариант «Горизонтальная гистограмма» с:

  • Ось X: общее количество случаев, общее количество смертей
  • Ось Y: Состояние

После добавления «Заголовка» с помощью параметра «Настроить диаграмму» мой окончательный вывод выглядит следующим образом:

Как насчет того, чтобы попробовать выполнить следующие запросы самостоятельно?

  1. Построение тренда -
  • Подтвержденные случаи [заболевания
  • Подтвержденные смерти

2. Наиболее пострадавшие округа в наиболее пострадавших штатах

Большой. Пришло время перейти к моей любимой категории.

Набор данных фильмов IMDB

Говорят, работа не будет казаться работой, если ты увлечен ею. Итак, я привнес в него немного поп-культуры.

Следующий набор данных в списке — это набор сценариев Ruby и Shell, которые собирают данные с веб-сайта IMDB и экспортируют их в красиво отформатированный файл CSV. Теперь у меня есть оправдание, почему некоторые отсылки к фильмам живут в моей голове бесплатно.

Но зачем вам эти скрипты , если IMDB и так делает все данные доступными для клиентов? Что ж, наборы данных IMDB необработаны и разделены на несколько текстовых файлов. Скрипты Ruby хранят всю эту информацию в одном CSV-файле, что упрощает анализ. Этот подход также гарантирует, что у нас есть доступ к последним данным с такими полями, как:

  • Заголовок
  • Год
  • Бюджет
  • Длина
  • Рейтинг
  • Голоса
  • Распределение голосов
  • Рейтинг MPAA
  • Жанр

Но подождите, на этом преимущества не заканчиваются. Чтобы облегчить вам жизнь, на странице GitHub также представлен скрипт SQL для определения этой таблицы с полями, упомянутыми выше.

Совет: Хотя SQL универсален, знакомство с различными диалектами может помочь вам сэкономить время на синтаксические ошибки.

Теперь, когда вы можете найти хорошее применение своему киноману, давайте перейдем к следующему набору данных.

Продолжительность солнечного сияния по городам

Чего больше всего не хватает индийцу, живущему в Сендае? Еда и солнце. К сожалению, я не могу найти последний в супермаркете. Но что я могу сделать, так это проанализировать это.

Набор данных Sunshine Duration основан на динамическом списке городов, отсортированных по продолжительности солнечного света в часах в году. Этот обширный список содержит данные о 381 городе из 139 стран и снова разбит по месяцам.

Но почему нас должно волновать, сколько солнечного света получает город? Потому что «солнечный час» — это климатологический показатель, который может помочь нам измерить закономерности и изменения для определенного места на Земле.

Поскольку данные взяты из Википедии и постоянно меняются, они далеко не полны. Но то же самое также делает его реалистичным набором данных, с которым можно замарать руки.

Например, с помощью набора данных Country to Continent мы можем сгруппировать города по континентам и визуализировать шаблон в разных географических точках. Начнем с того, что я нашел этот блокнот Kaggle особенно проницательным.

Возвращаясь к нашему обсуждению продуктов питания, следующий набор данных заслуживает представления о кукурузе .

Изменения цен на зерновые

Набор данных о ценах на зерновые содержит информацию о ценах на пшеницу, рис и кукурузу за три десятилетия. С февраля 1992 г. по январь 2022 г. этот набор данных обновляется каждый месяц.

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

  • Год
  • Месяц
  • Цена пшеницы за тонну
  • Цена риса за тонну
  • Цена кукурузы за тонну
  • Уровень инфляции
  • Современная цена пшеницы за тонну (с учетом инфляции)
  • Современная цена риса за тонну
  • Современная цена кукурузы за тонну

Глядя на набор данных, первое, что хочет исследовать мой аналитический мозг, — это динамика цен во времени. Давайте сделаем это. Я начну с цен на пшеницу без учета текущего года (2022), потому что у нас нет полных данных для этого.

Мой SQL-запрос выглядит так:

SELECT
	year, 
	price_wheat_ton AS 'Normal Price', 
	price_wheat_ton_infl AS 'Price with inflation rate'
FROM rice_wheat_corn_prices
WHERE year!=2022

Чтобы визуализировать результаты, я строю «Линейную диаграмму», используя опцию « Диаграмма» Arctype . Поля для оси X и оси Y следующие:

  • Ось X: Год
  • Ось Y: обычная цена, цена с учетом инфляции

Мой окончательный график выглядит так:

Вперед, продолжать. Поэкспериментируйте с ценами на рис и кукурузу.

Если вы нашли этот набор данных полезным, как насчет того, чтобы проверить аналогичный по ценам на кофе, рис и говядину того же автора?

Вывод

Мы понимаем, что освоение языка может занять годы. В этой статье мы попытались дать вам представление о том, как выглядит внешний мир. От музеев до еды, мы действительно охватили широкий спектр.

Ссылка: https://arctype.com/blog/public-datasets-for-analysis/

#dataanalysis #database