[Занимательные задачки, Big Data, Визуализация данных] Рейтинг знаков зодиака среди Великих людей мира
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Однажды мы размышляли о рейтинге знаков зодиака среди Великих людей. Задачу выполнили и представляю результаты на ваш суд.
Со скорбью замечу, что Весы (ЭТО Я!) на последнем месте… Хотя что-то по данным мне кажется, что есть аномалии. Как-то подозрительно мало Весов!
Часть 1. Парсинг и получение исходных данных
Wikipedia List of lists of lists
на выходе нужна база с ФИО + дата рождения + (если есть любые другие признаки — например м/ж, страна и т.д.) есть API.
Данный сайт получилось поскрапить (харвестинг / получение / экстракт (извлечение) / сбор данных полученных с web-ресурсов) сайт при помощи Python библиотеки Scrapy.
Подробная инструкция
сначала получаются ссылки (листы с людьми с Википедии, а потом уже данные).
В других случаях парсили успешно вот так.
Результат: файл BD wiki.zip
Часть 2. О препроцессинге (выполнил Станислав Костенков — контакты ниже)
Многие сталкиваются со сложностью обработки входных данных. Так в данной задаче нужно было вытащить из более 42 тысяч статей данные о рождении и по возможности определить страну рождения. С одной стороны, это – простая алгоритмическая задача, с другой стороны, средства Excel & BI систем не позволяют это выполнить «в лоб».
В такой момент на помощь приходят языки программирования (Python, R), запуск которых предусмотрен в большинстве BI систем. Стоит отметить, что, например, в Power BI существует лимит в 30 минут на выполнение скрипта (программы) на языке Python. Поэтому многие «тяжелые» обработки делают до запуска BI систем, например, в озере данных.
Как решалась задача
Первое, что сделал после загрузки и проверки на некорректные значения, было превратить каждую статью в список слов.
В этой задаче, мне повезло с языком, английским. Этот язык характеризует жесткая форма построения предложения, что значительно облегчило поиск даты рождения. Ключевое слово здесь «born», затем смотрится и анализируется что находится после него.
С другой стороны, все статьи были взяты из одного источника, что тоже облегчило задачу. Все статьи имели примерно одинаковую структуру и обороты.
Далее, все года имели длину в 4 символа, все даты имели длину 1-2 символа, месяцы имели текстовое представление. Было всего 3-4 возможных вариации написания даты рождения, что решалось простой логикой. Также можно было бы анализировать через регулярные выражения.
Настоящий код неоптимизирован (такой задачи не ставилось, может быть есть огрехи в наименованиях переменных).
По предсказанию страны, мне повезло найти таблицу соответствия стран и национальностей. Обычно в статьях описывается не страна, а принадлежность к ней. Например, Russia – russian. Поэтому производился поиск вхождений национальностей, но в виду, что в одной статье, могло быть более 5 разных национальностей, то я сделал гипотезу¸что нужное слово будет самым ближайшим из всех возможных к ключевому слову «burn». Таким образом, критерий был – минимальное индексное расстояние между нужными словами в статье. Потом одной строкой делалось переименование из национальности в страну.
Что не делалось
В статьях многие слова имели мусор, то есть к слову было соединено какой-то отрывок коды или два слова были слиты воедино. Поэтому проверка вероятности нахождения искомых значений в таких словах не производилась. Можно произвести очистку таких слов по алгоритмам степени похожести.
Не анализировались сущности, к которым относится ключевое слово «burn». Были несколько примеров, когда ключевое слово относилось к рождению родственников. Этих примеров было ничтожно мало. Эти примеры можно отследить по факту, что ключевое слово находится далеко от начала статьи. Можно вычислить перцентили нахождения ключевого слова и определить критерий отсечения.
Немного слов о полезности препроцессинга при очистке данных
Есть банальные случаи, когда мы можем точно предположить, что должно быть на месте пропусков. Но есть случаи, например, есть пропуски по гендерному признаку покупателя магазина и есть данные о его покупках. Стандартных приемов по решению этой задачи не существует в системах BI, но в тоже время, на уровне препроцессинга можно создать «легкую» модель и посмотреть различные варианты заполнения пропусков. Существуют варианты заполнения, основанные на простых алгоритмах машинного обучения. И это стоит использовать. Это не трудно.
Исходный код (Python) доступен по ссылке
Результат: файл out_data_fin.xls
Станислав Костенков / Компания «Си-Би-Эс Консалтинг» (Ижевск, Россия) staskostenkov@gmail.com
Часть 3. Приложение Qlik Sense
Дальше было сделано классическое приложение, где и выявились некие аномалии с датасетом:
- имело смысл выбирать только декады с 1920-1980;
- в разных странах были разные лидеры по знакам гороскопа;
- топ знаков: Рак, Овен, Близнецы, Телец, Козерог.
Все данные (дата-сет, исходные данные, полученное приложение Qlik Sense для анализа данных) лежат по ссылке.
===========
Источник:
habr.com
===========
Похожие новости:
- [Python, Браузеры, Занимательные задачки, Софт] Как я получил пожизненный запас чесночной пиццы с помощью Python и Selenium (перевод)
- [Карьера в IT-индустрии, DevOps, Системное администрирование, Серверное администрирование, Настройка Linux] DevOps Roadmap или пора бы автоматизироваться?
- [Децентрализованные сети, Исследования и прогнозы в IT, Бизнес-модели, Криптовалюты, Будущее здесь] DeFi — обзор рынка: скамы, цифры, факты, перспективы
- [C, C++, Программирование, Функциональное программирование] Сравнение встраиваемых ЯП по размеру в исполняемом файле
- [Разработка мобильных приложений, Дизайн мобильных приложений, Разработка под Android] How to Develop Dating Mobile App like Tinder?
- [Apache, Big Data, Hadoop] Spark schemaEvolution на практике
- [Разработка мобильных приложений, Управление разработкой, Управление проектами, Agile, Управление продуктом] Сколько стоит разработать мобильное приложение
- [Системное администрирование, IT-инфраструктура, SAN] Мониторинг СХД IBM Storwize при помощи Zabbix
- Выпуск qBittorrent 4.3
- [Python, Алгоритмы, Визуализация данных, Графический дизайн, Дизайн] Песочный алфавит при помощи генеративных алгоритмов (перевод)
Теги для поиска: #_zanimatelnye_zadachki (Занимательные задачки), #_big_data, #_vizualizatsija_dannyh (Визуализация данных), #_bi, #_business_intelligence, #_dataviz, #_dataart (датаарт), #_dataart, #_horoscope, #_goroskop (гороскоп), #_znakizodiaka (знакизодиака), #_qlik, #_qlik_sense, #_zanimatelnye_zadachki (
Занимательные задачки
), #_big_data, #_vizualizatsija_dannyh (
Визуализация данных
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 22:28
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Однажды мы размышляли о рейтинге знаков зодиака среди Великих людей. Задачу выполнили и представляю результаты на ваш суд. Со скорбью замечу, что Весы (ЭТО Я!) на последнем месте… Хотя что-то по данным мне кажется, что есть аномалии. Как-то подозрительно мало Весов! Часть 1. Парсинг и получение исходных данных Wikipedia List of lists of lists на выходе нужна база с ФИО + дата рождения + (если есть любые другие признаки — например м/ж, страна и т.д.) есть API. Данный сайт получилось поскрапить (харвестинг / получение / экстракт (извлечение) / сбор данных полученных с web-ресурсов) сайт при помощи Python библиотеки Scrapy. Подробная инструкция сначала получаются ссылки (листы с людьми с Википедии, а потом уже данные). В других случаях парсили успешно вот так. Результат: файл BD wiki.zip Часть 2. О препроцессинге (выполнил Станислав Костенков — контакты ниже) Многие сталкиваются со сложностью обработки входных данных. Так в данной задаче нужно было вытащить из более 42 тысяч статей данные о рождении и по возможности определить страну рождения. С одной стороны, это – простая алгоритмическая задача, с другой стороны, средства Excel & BI систем не позволяют это выполнить «в лоб». В такой момент на помощь приходят языки программирования (Python, R), запуск которых предусмотрен в большинстве BI систем. Стоит отметить, что, например, в Power BI существует лимит в 30 минут на выполнение скрипта (программы) на языке Python. Поэтому многие «тяжелые» обработки делают до запуска BI систем, например, в озере данных. Как решалась задача Первое, что сделал после загрузки и проверки на некорректные значения, было превратить каждую статью в список слов. В этой задаче, мне повезло с языком, английским. Этот язык характеризует жесткая форма построения предложения, что значительно облегчило поиск даты рождения. Ключевое слово здесь «born», затем смотрится и анализируется что находится после него. С другой стороны, все статьи были взяты из одного источника, что тоже облегчило задачу. Все статьи имели примерно одинаковую структуру и обороты. Далее, все года имели длину в 4 символа, все даты имели длину 1-2 символа, месяцы имели текстовое представление. Было всего 3-4 возможных вариации написания даты рождения, что решалось простой логикой. Также можно было бы анализировать через регулярные выражения. Настоящий код неоптимизирован (такой задачи не ставилось, может быть есть огрехи в наименованиях переменных). По предсказанию страны, мне повезло найти таблицу соответствия стран и национальностей. Обычно в статьях описывается не страна, а принадлежность к ней. Например, Russia – russian. Поэтому производился поиск вхождений национальностей, но в виду, что в одной статье, могло быть более 5 разных национальностей, то я сделал гипотезу¸что нужное слово будет самым ближайшим из всех возможных к ключевому слову «burn». Таким образом, критерий был – минимальное индексное расстояние между нужными словами в статье. Потом одной строкой делалось переименование из национальности в страну. Что не делалось В статьях многие слова имели мусор, то есть к слову было соединено какой-то отрывок коды или два слова были слиты воедино. Поэтому проверка вероятности нахождения искомых значений в таких словах не производилась. Можно произвести очистку таких слов по алгоритмам степени похожести. Не анализировались сущности, к которым относится ключевое слово «burn». Были несколько примеров, когда ключевое слово относилось к рождению родственников. Этих примеров было ничтожно мало. Эти примеры можно отследить по факту, что ключевое слово находится далеко от начала статьи. Можно вычислить перцентили нахождения ключевого слова и определить критерий отсечения. Немного слов о полезности препроцессинга при очистке данных Есть банальные случаи, когда мы можем точно предположить, что должно быть на месте пропусков. Но есть случаи, например, есть пропуски по гендерному признаку покупателя магазина и есть данные о его покупках. Стандартных приемов по решению этой задачи не существует в системах BI, но в тоже время, на уровне препроцессинга можно создать «легкую» модель и посмотреть различные варианты заполнения пропусков. Существуют варианты заполнения, основанные на простых алгоритмах машинного обучения. И это стоит использовать. Это не трудно. Исходный код (Python) доступен по ссылке Результат: файл out_data_fin.xls Станислав Костенков / Компания «Си-Би-Эс Консалтинг» (Ижевск, Россия) staskostenkov@gmail.com Часть 3. Приложение Qlik Sense Дальше было сделано классическое приложение, где и выявились некие аномалии с датасетом:
Все данные (дата-сет, исходные данные, полученное приложение Qlik Sense для анализа данных) лежат по ссылке. =========== Источник: habr.com =========== Похожие новости:
Занимательные задачки ), #_big_data, #_vizualizatsija_dannyh ( Визуализация данных ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 22:28
Часовой пояс: UTC + 5