Python big data: Основы Data Science и Big Data. Python и наука о данных
Основы Data Science и Big Data. Python и наука о данных
Всем привет! Сегодня мы будем рассматривать книгу, посвященную науке о данных. Казалось бы, при чем тут Python… Но, дело в том, что Python — самый используемый язык в сфере Data Science. «Основы Data Science и Big Data», при должном подходе к изучению, станет отличной отправной точкой для входа в эту сферу.
Немного об авторах
Дэви Силен — бывалый бизнесмен, писатель и профессор. Является одним из внештатных лекторов школы менеджмента IESEG во Франции (город Лилле). Там он занимается исследованиями в области теории Big Data и преподает материалы из этой же сферы.
Мохамед Али — тоже бизнесмен и консультант в области науки о данных. Он увлечен областью Data Science, а также является ярым защитником экологии.
Арно Мейсман — специалист в Data Science, чьи интересы весьма различаются: от торговли в розницу до игровой аналитики. Всё это потому, что он убежден: информация, которую получают, обрабатывая данные, вместе с некоторым воображением, поможет достичь совершенства нашего мира.
Представленное выше трио являются совладельцами двух Data Science компаний, базирующихся в Бельгии и Великобритании. Это Optimately и Maiton.
Поговорим о содержании
Каждая глава этой книги обращается к одной из концепций Data Science. В этом можно убедиться, рассмотрев оглавление:
- Глава 1. Data Science в мире больших данных — в этой главе вы начнете изучение теории. Будут рассмотрены типы данных, сам процесс Data Science и ее экосистема. Будет описан вводный пример использования Hadoop.
- Глава 2. Процесс Data Science — здесь покажут процесс сбора данных и их обработки, а также анализ и представление результатов.
- Глава 3. Машинное обучение — вы узнаете, что такое машинное обучение, научитесь создавать модели и правильно выбирать типы моделей и обучения. Немного затронете частично контролируемое обучение.
- Глава 4. Работа с большими данными на одном компьютере — эта глава расскажет о проблемах при работе с большими данными, поможет правильно выбрать инструменты. Также авторы покажут два примера: прогнозирование вредоносных URL-адресов и построение рекомендательной системы внутри базы данных.
- Глава 5. Первые шаги в области больших данных — эта небольшая глава будет посвящена распределению хранения и обработки данных в инфраструктурах. Затем вы подкрепите данные учебным примером оценки риска при кредитовании.
- Глава 6. Присоединяйтесь к движению NoSQL — исходя из названия, понимаем, что будем изучать NoSQL. Рассмотрим учебный пример «Диагностика болезней», узнаем о разнице между SQL и NoSQL.
- Глава 7. Графовые базы данных — вы узнаете о Neo4j (графовая база данных) и Cypher (язык запросов к такой БД). Узнаете о связанных данных и рассмотрите пример из использования на основе рекомендательной системы.
- Глава 8. Глубокий анализ текста — на протяжении одной главы, вкратце, вы рассмотрите работу с глубоким анализом текста. На примере классификации сообщений с Reddit закрепите полученные данные. Если хотите узнать о работе с естественным языком побольше, взгляните на «Знакомство с Pytorch«.
- Глава 9. Визуализация данных для конечного пользователя — здесь вы немного потрогаете JavaScript и научитесь визуализировать данные, связав Python и JS.
Подведем итоги
Авторы написали эту книгу для тех, кто хочет войти в Data Science, но не знает, с чего начать. В каждой главе вы сможете немного затронуть чуть ли не каждый аспект науки о данных. Примеры в конце каждой главы помогут закрепить знания. По итогу у вас будет сформировано понимание того, что вы хотите получить от этой сферы, и в какой ее уголок хотите углубиться.
Стоит учесть, что, для полноценного погружения в эту книгу, необходимо иметь хотя бы минимальный опыт в Python, HTML и знать основы SQL.
Оставляйте свое мнение в комментариях, обсуждайте в нашем чате. Скачать книгу можно из нашего телеграм-канала с книгами по этой ссылке.
Анализ данных с использованием Python / Хабр
Язык программирования Python в последнее время все чаще используется для анализа данных, как в науке, так и коммерческой сфере. Этому способствует простота языка, а также большое разнообразие открытых библиотек.
В этой статье разберем простой пример исследования и классификации данных с использованием некоторых библиотек на Python. Для исследования, нам понадобится выбрать интересующий нас набор данных (DataSet). Разнообразные наборы Dataset’ы можно скачать с сайта. DataSet обычно представляет собой файл с таблицей в формате JSON или CSV. Для демонстрации возможностей исследуем простой набор данных с информацией о наблюдениях НЛО. Наша цель будет не получить исчерпывающие ответы на главный вопрос жизни, вселенной и всего такого, а показать простоту обработки достаточно большого объема данных средствами Python. Собственно, на месте НЛО могла быть любая таблица.
И так, таблица с наблюдениями имеет следующие столбцы:
- datetime — дата появления объекта
- city — город в котором появился объект
- state — штат
- country — страна
- duration (seconds) — время на которое появился объект в секундах
- duration (hours/min) — время на которое появился объект в часах/минутах
- shape — форма объекта
- comments — коментарий
- date posted — дата публикации
- latitude — широта
- longitude — долгота
Для тех, кто хочет пробовать нуля, подготовим рабочее место. У меня на домашнем ПК стоит Ubuntu, поэтому покажу для нее. Для начала нужно установить сам интерпретатор Python3 с библиотеками. В убунту подобном дистрибутиве это будет:
sudo apt-get install python3
sudo apt-get install python3-pip
pip — это система управления пакетами, которая используется для установки и управления программными пакетами, написанными на Python. С её помощью устанавливаем библиотеки, которые будем использовать:
sklearn — библиотека, алгоритмов машинного обучения, она понадобится нам в дальнейшем для классификации исследуемых данных,
matplotlib — библиотека для построения графиков,
pandas — библиотека для обработки и анализа данных. Будем использовать для первичной обработки данных,
numpy — математическая библиотека с поддержкой многомерных массивов,
yandex-translate — библиотека для перевода текста, через yandex API (для использования нужно получить API ключ в яндексе),
pycountry — библиотека, которую будем использовать для преобразования кода страны в полное название страны,
Используя pip пакеты ставятся просто:
pip3 install sklearn
pip3 install matplotlib
pip3 install pandas
pip3 install numpy
pip3 install yandex-translate
pip3 install pycountry
Файл DataSet — scrubbed.csv должен лежать в рабочей директории, где создается файл программы.
Итак приступим. Подключаем модули, которые используются нашей программой. Модуль подключается с помощью инструкции:
import <название модуля>
Если название модуля слишком длинное, и/или не нравится по соображениям удобства или политическим убеждениямм, то с помощью ключевого слова as для него можно создать псевдоним:
import <название модуля> as <псевдоним>
Тогда, чтобы обратиться к определенному атрибуту, который определен в модуле
<название модуля>.<Атрибут>
или
<псевдоним>.<Атрибут>
Для подключения определенных атрибутов модуля используется инструкция from. Для удобства, чтобы не писать названия модуля, при обращении к атрибуту, можно подключить нужный атрибут отдельно.
from <Название модуля> import <Атрибут>
Подключение нужных нам модулей:
import pandas as pd
import numpy as np
import pycountry
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
from yandex_translate import YandexTranslate # Используем класс YandexTranslate из модуля yandex_translate
from yandex_translate import YandexTranslateException # Используем класс YandexTranslateException из модуля yandex_translate
Для того, что бы улучшить наглядность графиков, напишем вспомогательную функцию для генерации цветовой схемы. На входе функция принимает количество цветов, которое необходимо сгенерировать. Функция возвращает связный список с цветами.
# Размер надписей на графиках
PLOT_LABEL_FONT_SIZE = 14
# Генерация цветовой схемы
# Возвращает список цветов
def getColors(n):
COLORS = []
cm = plt.cm.get_cmap('hsv', n)
for i in np.arange(n):
COLORS.append(cm(i))
return COLORS
Для перевода некоторых названий с англиского на русский язык создадим функцию translate. И да, нам понадобится интернет, чтобы воспользоваться API переводчика от Яндекс.
Функция принимает на вход аргументы:
- string — строка, которую нужно перевести,
- translator_obj — объект в котором реализован переводчик, если равен None, то строка не переводится.
и возвращает переведенную на русский язык строку.
def translate(string, translator_obj=None):
if translator_class == None:
return string
t = translator_class.translate(string, 'en-ru')
return t['text'][0]
Инициализация объекта переводчика должна быть в начале кода.
YANDEX_API_KEY = 'Здесь должен быть определен API ключ !!!!!'
try:
translate_obj = YandexTranslate(YANDEX_API_KEY)
except YandexTranslateException:
translate_obj = None
YANDEX_API_KEY — это ключ доступа к API Yandex, его следует получить в Яндексе. Если он пустой, то объект translate_obj инициализируется значением None и перевод будет игнорироваться.
Напишем еще одну вспомогательную функцию для сортировки объектов dict.
dict — представляет собой встроенный тип Python, где данные хранятся в виде пары ключ-значения. Функция сортирует словарь по значениям в убывающем порядке и возвращает отсортированные список ключей и соответсвуюущий ему по порядку следования элементов список значений. Эта функция будет полезна при построении гистограмм.
def dict_sort(my_dict):
keys = []
values = []
my_dict = sorted(my_dict.items(), key=lambda x:x[1], reverse=True)
for k, v in my_dict:
keys.append(k)
values.append(v)
return (keys,values)
Мы добрались до непосредственно данных. Для чтения файла с таблицей используем метод read_csv модуля pd. На вход функции подаем имя csv файла, и чтобы подавить предупреждения при чтении файла, задаем параметры escapechar и low_memory.
- escapechar — символы, которые следует игнорировать
- low_memory — настройка обработки файла. Задаем False для считывание файла целиком, а не частями.
df = pd.read_csv('./scrubbed.csv', escapechar='`', low_memory=False)
В некоторых полях таблицы есть поля со значением None. Этот встроенный тип, обозначающий неопределенность, поэтому некоторые алгоритмы анализа могут работать некорректно с этим значением, поэтому произведем замену None на строку ‘unknown’ в полях таблицы. Эта процедура называется импутацией.
df = df.replace({'shape':None}, 'unknown')
Поменяем коды стран на названия на русском языке с помощью библиотеки pycountry и yandex-translate.
country_label_count = pd.value_counts(df['country'].values) # Получить из таблицы список всех меток country с их количеством
for label in list(country_label_count.keys()):
c = pycountry.countries.get(alpha_2=str(label).upper()) # Перевести код страны в полное название
t = translate(c.name, translate_obj) # Перевести название страны на русский язык
df = df.replace({'country':str(label)}, t)
Переведем все названия видов объектов на небе на русский язык.
shapes_label_count = pd.value_counts(df['shape'].values)
for label in list(shapes_label_count.keys()):
t = translate(str(label), translate_obj) # Перевести название формы объекта на русский язык
df = df.replace({'shape':str(label)}, t)
Первичную обработку данных на этом завершаем.
Постороим график наблюдений по странам. Для построения графиков используется библиотека pyplot. Примеры построения простого графика можно найти на официальном сайте https://matplotlib.org/users/pyplot_tutorial.html. Для построения гистограммы можно использовать метод bar.
country_count = pd.value_counts(df['country'].values, sort=True)
country_count_keys, country_count_values = dict_sort(dict(country_count))
TOP_COUNTRY = len(country_count_keys)
plt.title('Страны, где больше всего наблюдений', fontsize=PLOT_LABEL_FONT_SIZE)
plt.bar(np.arange(TOP_COUNTRY), country_count_values, color=getColors(TOP_COUNTRY))
plt.xticks(np.arange(TOP_COUNTRY), country_count_keys, rotation=0, fontsize=12)
plt.yticks(fontsize=PLOT_LABEL_FONT_SIZE)
plt.ylabel('Количество наблюдений', fontsize=PLOT_LABEL_FONT_SIZE)
plt.show()
Больше всего наблюдений естественно в США. Тут ведь оно как, все гики, которые следят за НЛО живут в США (о версии, что таблица составлялась гражданами США, лукаво умолчим). Судя по количеству американских фильмов скорее всего второе. От Кэпа: если инопланетяне действительно посещали землю в открытую, то вряд ли бы их заинтересовала одна страна, сообщение об НЛО появлялись бы из разных стран.
Интересно еще посмотреть в какое время года наблюдали больше всего объектов. Есть резонное предположение, что больше всего наблюдений в весеннее время.
MONTH_COUNT = [0,0,0,0,0,0,0,0,0,0,0,0]
MONTH_LABEL = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь',
'Июль', 'Август', 'Сентябрь' ,'Октябрь' ,'Ноябрь' ,'Декабрь']
for i in df['datetime']:
m,d,y_t = i.split('/')
MONTH_COUNT[int(m)-1] = MONTH_COUNT[int(m)-1] + 1
plt.bar(np.arange(12), MONTH_COUNT, color=getColors(12))
plt.xticks(np.arange(12), MONTH_LABEL, rotation=90, fontsize=PLOT_LABEL_FONT_SIZE)
plt.ylabel('Частота появления', fontsize=PLOT_LABEL_FONT_SIZE)
plt.yticks(fontsize=PLOT_LABEL_FONT_SIZE)
plt.title('Частота появления объектов по месяцам', fontsize=PLOT_LABEL_FONT_SIZE)
plt.show()
Ожидалось весеннее обострение, но предположение не подтвердилось. Кажется теплые летние ночи и период отпусков дают о себе знать сильнее.
Посмотрим какие формы объектов на небе видели и сколько раз.
shapes_type_count = pd.value_counts(df['shape'].values)
shapes_type_count_keys, shapes_count_values = dict_sort(dict(shapes_type_count))
OBJECT_COUNT = len(shapes_type_count_keys)
plt.title('Типы объектов', fontsize=PLOT_LABEL_FONT_SIZE)
bar = plt.bar(np.arange(OBJECT_COUNT), shapes_type_count_values, color=getColors(OBJECT_COUNT))
plt.xticks(np.arange(OBJECT_COUNT), shapes_type_count_keys, rotation=90, fontsize=PLOT_LABEL_FONT_SIZE)
plt.yticks(fontsize=PLOT_LABEL_FONT_SIZE)
plt.ylabel('Сколько раз видели', fontsize=PLOT_LABEL_FONT_SIZE)
plt.show()
Из графика мы видим, что больше всего на небе видели просто свет, который в принципе необязательно является НЛО. Этому явлению существует внятное объяснение, например, ночное небо отражает свет от прожекторов, как в фильмах про Бэтмена. Также это вполне может быть северным сиянием, которое появляется не только в полярной зоне, но и в средних широтах, а изредка даже и в близи эвкватора. Вообще атмосфера земли пронизана множеством излучений различной природы, электрическими и магнитными полями.
Вообще, атмосфера Земли пронизана множеством излучений различной природы, электрическими и магнитными полями.
Подробнее см.: https://www.nkj.ru/archive/articles/19196/ (Наука и жизнь, Что светится на небе?)
Интересно еще посмотреть среднее время, на которое в небе появлялся каждый из объектов.
shapes_durations_dict = {}
for i in shapes_type_count_keys:
dfs = df[['duration (seconds)', 'shape']].loc[df['shape'] == i]
shapes_durations_dict[i] = dfs['duration (seconds)'].mean(axis=0)/60.0/60.0
shapes_durations_dict_keys = []
shapes_durations_dict_values = []
for k in shapes_type_count_keys:
shapes_durations_dict_keys.append(k)
shapes_durations_dict_values.append(shapes_durations_dict[k])
plt.title('Среднее время появление каждого объекта', fontsize=12)
plt.bar(np.arange(OBJECT_COUNT), shapes_durations_dict_values, color=getColors(OBJECT_COUNT))
plt.xticks(np.arange(OBJECT_COUNT), shapes_durations_dict_keys, rotation=90, fontsize=16)
plt.ylabel('Среднее время появления в часах', fontsize=12)
plt.show()
Из диаграммы видими, что больше всего в небе в среднем висел конус (более 20 часов). Если покопаться в интернетах, то ясно, что конусы в небе, это тоже свечение, только в виде конуса (неожиданно, да?). Вероятнее всего это свет от падающих комет. Среднее время больше 20 часов — это какая-то нереальная величина. В исследуемых данных большой разброс, и вполне могла вкраться ошибка. Несколько очень больших, неверных значений времени появления могут существенно исказить расчет среднего значения. Поэтому при больших отклонениях, считают не среднее значение, а медиану.
Медиана — это некоторое число, характеризующее выборку, одна половина в выборке меньше этого числа, другая больше. Для расчета медианы используем функцию median.
Заменим в коде выше:
shapes_durations_dict[i] = dfs['duration (seconds)'].mean(axis=0)/60.0/60.0
на:
shapes_durations_dict[i] = dfs['duration (seconds)'].median(axis=0)/60.0/60.0
Полумесяц видели в небе чуть больше 5-ти часов. Другие объекты не надолго промелькнули в небе. Это уже наиболее достоверно.
Для первого знакомства с методологией обработки данных на Python, думаю, достаточно. В следующих публикациях займемся статистическим анализом, и постараемся выбрать другой не менее актуальный пример.
Полезные ссылки:
Ссылка на архив с данными и блоткнотом Jupyter
Библиотека для предварительной обработки данных
Библиотека алгоритмов машинного обучения
Библиотека для визуализации данных
Туториал на русском языке по работе с Jupyter
Как Python превратился в инструмент специалиста по анализу данных
Язык программирования Python на глазах превращается в важный инструмент специалистов по анализу данных (data scientists). Мало-помалу он теснит специализированные средства вроде языка R или пакета MATLAB. До окончательной победы ещё очень далеко, однако рост популярности Python в этой области вызывает интерес.
Исторически сложилось так, что чаще всего специалисты по анализу данных программируют на малоизвестном языке R. Его применяют, когда сложность задачи превосходит возможности обыкновенных электронных таблиц вроде Excel, производительность некритична, а объёмы данных позволяют избежать параллелизации обработки при помощи Hadoop.
Многие аспекты R оставляют желать лучшего. Его не так-то легко освоить, программы, написанные на R, трудно отлаживать, он плохо документирован, а доступные разработчикам пакеты не отличаются разнообразием: львиная их доля так или иначе связана со статистикой, анализом данных и визуализацией.
Впрочем, последнее — не всегда недостаток. Когда всё, что нужно, — это как раз статистика, анализ данных и визуализация, с R трудно конкурировать. Ради доступа к богатому инструментарию, который открывает этот язык, люди готовы терпеть и сомнительный синтаксис, и отсутствующую документацию.
Из-за однобокости, которой страдает R, даже относительно несложные проекты в этой области зачастую требуют городить пугающую мешанину из множества различных языков программирования и программных продуктов. Каждый из них идеально подходит для решения какой-то задачи, но совершенно не годится для другой.
Тал Яркани, глава лаборатории психоинформатики при Техасском университете, перечисляет в своём блоге инструменты, которыми ему приходилось дополнять R. Для обработки текста он использовал Ruby, данные нейровизуализации обрабатывал при помощи MATLAB, вычислительные задачи решал при помощи Python и пакета NumPy. На долю R оставался лишь статистический анализ и построение графиков.
С тех пор ситуация радикально изменилась. За пару лет средства анализа данных, доступные разработчикам на Python, совершили рывок вперёд. С одной стороны, появились новые мощные пакеты, реализующие алгоритмы машинного обучения, обработку естественных языков, статистический анализ и визуализацию. С другой — существовавшие ранее пакеты достигли зрелости.
Яркани заметил, что постепенно Python заменил ему и R, и MATLAB, и Ruby:
«Дело не только в удобстве. Есть ещё одна вещь, которая впечатляет меня в экосистеме средств для научных вычислений, основанных на Python: удивительное количество инструментов, которые являются лучшими в своём классе (или близки к этому), если оценивать их с точки зрения широты возможностей и простоты использования. А если учитывать интеграцию с Си, то зачастую и с точки зрения производительности.
Трудно вообразить более удобный пакет, предназначенный для машинного обучения, чем scikit-learn, — и это даже в том случае, если не брать во внимание разнообразие реализованных в нём алгоритмов, великолепную документацию и выдающуюся производительность.
По тем же причинам я совершенно не скучал по возможностям манипуляции данными, встроенным в R, с тех пор как переключился на pandas. По правде говоря, я уже обнаружил в pandas такие трюки, о которых не знал, когда использовал R. Если учесть, что pandas заметно опережает R по производительности во многих распространённых операциях, поводов возвращаться к R или другим инструментам — хотя бы от случая к случаю — остаётся всё меньше».
В чём причина? Микио Браун, немецкий специалист по машинному обучению и основатель стартапа Streamdrill, разделяющий точку зрения Яркани, предполагает, что развитие научных пакетов для Python подхлестнула недальновидная ценовая политика компании Mathworks.
Mathworks разрабатывает пакет MATLAB, который широко используется для научных и инженерных вычислений. Стоит он тысячи долларов, однако образовательные учреждения компания обслуживала по льготной цене. Логика была проста: студенты, освоившие MATLAB, будут применять его и в своей профессиональной деятельности. Их работодателям придётся раскошеливаться, и льготы многократно окупятся.
Так продолжалось до 2005 года, когда в Mathworks решили ужесточить свое определение «образовательного учреждения» и отменили льготы для организаций, которые не выдают дипломы о высшем образовании. За бортом осталось множество академических пользователей. Они стали присматриваться к альтернативам — и заметили Python.
Первая версия Python появилась больше двадцати лет назад, и практически сразу язык начали использовать для научных вычислений. Пакет NumPy, добавляющий поддержку многомерных массивов и матриц и математических функций для работы с ними, появился задолго до того, как Python превратился в адекватное средство веб-разработки. Этому способствовала простота разработки на С/С++ высокопроизводительных библиотек, которые можно вызывать из кода на Python.
На таком фундаменте и выросли средства анализа данных, которые упоминает Яркани, а неудовлетворённый спрос, возникший в результате решения Mathworks, лишь ускорил их появление. Кроме того, не могла не сыграть роль огромная популярность Python за пределами статистического сообщества.
Впрочем, каковы бы ни были причины, развитие Python в этом направлении можно только приветствовать. Оно делает анализ данных доступнее — довольно важная задача, учитывая нехватку специалистов.
9 языков для Big Data | GeekBrains
Данные о языках для данных.
https://d2xzmw6cctk25h.cloudfront.net/post/1020/og_cover_image/18059c41a0675a65ae4be664dca9eb45
Мир IT и не только поглощен обработкой беспредельного количества данных. Будь то социальные сети или научная информация — везде требуются инструменты, значительно превышающие по возможностям устаревшие программы, вроде Excel. Требуются принципиально иные подходы и совершенные алгоритмы для их реализации. Вот 9 языков, с помощью которых работа с Big Data доставит вам чуть меньше головной боли.
R
Если достаточно образованного программиста спросить о современных языках обработки данных, то в первой тройке неизменно окажется R, даже несмотря на то, что многие его и языком не считают. Придуманный в 1997 году, как альтернатива платным продуктам MATLAB и SAS, он медленно, но верно набирал популярность. Сегодня такие компании, как Google и Facebook используют R, чтобы справляться с такими потоками информации, которые и вообразить сложно. Фильтруйте, моделируйте, представляйте данные при помощи всего нескольких строк кода — всё это про R.
В 2013 году проводился опрос в США среди специалистов в области Big Data на предмет выявления наиболее популярного используемого языка. Победил с 61% именно R. Угадайте, кто занял второе место?
Python
Да, 39% набрал один из самых крутых языков программирования, который совсем не случайно оказался популярен и среди людей, работающих с обработкой больших потоков данных. В некотором роде это компромисс между изощренностью R и лёгкостью, которую дарит язык Python. Его популярность обосновывается как раз отсутствием необходимости применения идеальных алгоритмов в угоду возможности включать в работу группу программистов, не имеющих специальных навыков. Если вы хотите начать изучать этот язык, рекомендуем пройти наш онлайн-интесив по питону.
Julia
Язык, который возник совсем недавно, но уже попал на радары всех специалистов Big Data. Он прост и масштабируем, как Python, при этом эффективен, как R. Пока язык Julia молод, ему не хватает мелких доработок, библиотек и элементарной человеческой поддержки, но сомнений в его безоблачном будущем практически нет.
Java
Ну да, какой рейтинг самых популярных языков программирования без участия Java. Пусть это даже не профильная область применения, Java имеет такую армию поклонников-энтузиастов, что создание специальных надстроек и библиотек — дело времени. Загляните внутрь LinkedIn, Facebook, Twitter — и в обработке данных вы найдёте следы Java. Да, у этого языка нет таких возможностей статистического моделирования, какие естьу Python и R, но если прототипирование не является важной задачей — Java может стать отличным решением.
Scala
Если вы никогда ранее не слышали об этом языке, то можете просто ознакомиться со статистическими данными ,чтобы понять насколько успешен сегодня и насколько перспективен завтра будет Scala. Java-подобный язык может быть развёрнут под веб и платформу Android. Но главное его преимущество заключается в удобстве и гибкости, которые не дадут вам многие другие языки из Big Data. Twitter, Siemens и LinkedIn подтверждают.
MATLAB
Если не говорить о MATLAB в контексте обработки и моделирования данных, то о чём вообще тогда стоит говорить? Да, возможно это не лучший язык, не самая доступная среда, но возможности, которые вы получаете, согласившись на оба этих компромисса — практически безграничны. Наука, обработка потоковой информации, анализ полученных и прогнозируемых данных — всё это идеальная область для развёртывания MATLAB.
Go
В этом рейтинге мы просто физически не могли обойти и невероятно популярное детище Google. Go активно разрабатывается, внедряется, постепенно завоевывает позиции в рейтинге популярности, и уж абсолютно точно он не хуже подавляющего большинства своих конкурентов. Он прост, он удобен, он бесконечно перспективен, в конце концов он специально создан для Big Data. А что ещё нужно, чтобы получить хорошую рекомендацию?
Kafka
Kafka — это не совсем язык, а скорее платформа, написанная на Java и Scala, для обработки потоковых запросов. Был разработан компанией LinkedIn для внутренних потребностей в 2011 году, но сегодня используемые алгоритмы не без успеха внедрены в такие гиганты, как Uber, Netflix, PayPal, eBay и многие другие.
Hadoop
Это ещё один набор утилит, библиотек и надстроек, которые вполне можно принять за отдельный язык, адаптирующих широко распространённый Java к обработке Big Data. Его активно используют такие гиганты, как Facebook и Yahoo!, а разработан он небезызвестной Apache Software Foundation, что автоматически заставляет поставить на Hadoop клеймо качества.
с чего начать — Офтоп на vc.ru
Каждый обмен с социальными медиа, каждый цифровой процесс, каждое подключённое устройство генерирует большие данные, которые будут использоваться различными компаниями.
Сегодня компании используют Big Data для углубленного взаимодействия с клиентами, оптимизации операций, предотвращения угроз и мошенничества. За последние два года такие компании, как IBM, Google, Amazon, Uber, создали сотни рабочих мест для программистов и Data science.
Область больших данных слишком размылась на просторах интернета, и это может быть очень сложной задачей для тех, кто начинает изучать большие данные и связанные с ними технологии. Технологии данных многочисленны это может быть огромным препятствием для начинающих. Давайте попробуем разложить все по полочкам.
1. Как начать
В сфере Big Data существует много направлений. Но в широком смысле можно разделить на две категории:
- Big Data engineering.
- Big Data Analytics (Scientist).
Эти поля взаимозависимы, но отличаются друг от друга.
Big Data engineering занимается разработкой каркаса, сбора и хранения данных, а также делают соответствующие данные доступными для различных потребительских и внутренних приложений.
У вас хорошие навыки программирования и вы понимаете, как компьютеры взаимодействуют через интернет, но у вас нет интереса к математике и статистике. В этом случае вам больше подойдёт Big data engineering.
В то время как Big Data Analytics — среда использования больших объемов данных из готовых систем, разработанных Big data engineering. Анализ больших данных включает в себя анализ тенденций, закономерностей и разработку различных систем классификации и прогнозирования. После магических действий и танцев с бубном Data Analytics (Scientist) интерпретирует результаты.
Если вы хорошо разбираетесь в программировании, за чашкой кофе решаете сложные задачи по высшей математике, понимаете, что такое теория вероятностей, математический анализ, комбинаторики, тогда вам подойдёт Big Data Analytics.
Таким образом, Big data Analytics включает в себя расширенные вычисления по данным. В то время как Big data engineering включает проектирование и развертывание систем, над которыми должны выполняться вычисления.
Как стать специалистом по большим данным
С направлением определились, теперь давайте разберём, что должен знать Data science, чтобы его рассматривали в качестве будущего кандидата.
Терминология данных
Проект с большими данными имеет два основных понятия — требования к данным и требования их обработке.
Требования к данным
Структурированные данные: хранятся в таблицах или в файлах. Если данные хранятся в предопределённой модели данных (то есть в схемах), это называется структурированными данными.
Неструктурированные: если данные хранятся в файлах и не имеют предопределённой модели, это называется неструктурированными данными.
Источники данных: внутренние (CRM, ERP или любые источники, которые находятся внутри системы) и внешние (
Принципы работы с большими данными, парадигма MapReduce / Блог компании DCA (Data-Centric Alliance) / Хабр
Привет, Хабр! Этой статьёй я открываю цикл материалов, посвящённых работе с большими данными. Зачем? Хочется сохранить накопленный опыт, свой и команды, так скажем, в энциклопедическом формате – наверняка кому-то он будет полезен.
Проблематику больших данных постараемся описывать с разных сторон: основные принципы работы с данными, инструменты, примеры решения практических задач. Отдельное внимание окажем теме машинного обучения.
Начинать надо от простого к сложному, поэтому первая статья – о принципах работы с большими данными и парадигме MapReduce.
История вопроса и определение термина
Термин Big Data появился сравнительно недавно. Google Trends показывает начало активного роста употребления словосочетания начиная с 2011 года (ссылка):
При этом уже сейчас термин не использует только ленивый. Особенно часто не по делу термин используют маркетологи. Так что же такое Big Data на самом деле? Раз уж я решил системно изложить и освятить вопрос – необходимо определиться с понятием.
В своей практике я встречался с разными определениями:
· Big Data – это когда данных больше, чем 100Гб (500Гб, 1ТБ, кому что нравится)
· Big Data – это такие данные, которые невозможно обрабатывать в Excel
· Big Data – это такие данные, которые невозможно обработать на одном компьютере
И даже такие:
· Вig Data – это вообще любые данные.
· Big Data не существует, ее придумали маркетологи.
В этом цикле статей я буду придерживаться определения с wikipedia:
Большие данные (англ. big data) — серия подходов, инструментов и методов обработки структурированных и неструктурированных данных огромных объёмов и значительного многообразия для получения воспринимаемых человеком результатов, эффективных в условиях непрерывного прироста, распределения по многочисленным узлам вычислительной сети, сформировавшихся в конце 2000-х годов, альтернативных традиционным системам управления базами данных и решениям класса Business Intelligence.
Таким образом под Big Data я буду понимать не какой-то конкретный объём данных и даже не сами данные, а методы их обработки, которые позволяют распредёлено обрабатывать информацию. Эти методы можно применить как к огромным массивам данных (таким как содержание всех страниц в интернете), так и к маленьким (таким как содержимое этой статьи).
Приведу несколько примеров того, что может быть источником данных, для которых необходимы методы работы с большими данными:
· Логи поведения пользователей в интернете
· GPS-сигналы от автомобилей для транспортной компании
· Данные, снимаемые с датчиков в большом адронном коллайдере
· Оцифрованные книги в Российской Государственной Библиотеке
· Информация о транзакциях всех клиентов банка
· Информация о всех покупках в крупной ритейл сети и т.д.
Количество источников данных стремительно растёт, а значит технологии их обработки становятся всё более востребованными.
Принципы работы с большими данными
Исходя из определения Big Data, можно сформулировать основные принципы работы с такими данными:
1. Горизонтальная масштабируемость. Поскольку данных может быть сколь угодно много – любая система, которая подразумевает обработку больших данных, должна быть расширяемой. В 2 раза вырос объём данных – в 2 раза увеличили количество железа в кластере и всё продолжило работать.
2. Отказоустойчивость. Принцип горизонтальной масштабируемости подразумевает, что машин в кластере может быть много. Например, Hadoop-кластер Yahoo имеет более 42000 машин (по этой ссылке можно посмотреть размеры кластера в разных организациях). Это означает, что часть этих машин будет гарантированно выходить из строя. Методы работы с большими данными должны учитывать возможность таких сбоев и переживать их без каких-либо значимых последствий.
3. Локальность данных. В больших распределённых системах данные распределены по большому количеству машин. Если данные физически находятся на одном сервере, а обрабатываются на другом – расходы на передачу данных могут превысить расходы на саму обработку. Поэтому одним из важнейших принципов проектирования BigData-решений является принцип локальности данных – по возможности обрабатываем данные на той же машине, на которой их храним.
Все современные средства работы с большими данными так или иначе следуют этим трём принципам. Для того, чтобы им следовать – необходимо придумывать какие-то методы, способы и парадигмы разработки средств разработки данных. Один из самых классических методов я разберу в сегодняшней статье.
MapReduce
Про MapReduce на хабре уже писали (раз, два, три), но раз уж цикл статей претендует на системное изложение вопросов Big Data – без MapReduce в первой статье не обойтись J
MapReduce – это модель распределенной обработки данных, предложенная компанией Google для обработки больших объёмов данных на компьютерных кластерах. MapReduce неплохо иллюстрируется следующей картинкой (взято по ссылке):
MapReduce предполагает, что данные организованы в виде некоторых записей. Обработка данных происходит в 3 стадии:
1. Стадия Map. На этой стадии данные предобрабатываются при помощи функции map(), которую определяет пользователь. Работа этой стадии заключается в предобработке и фильтрации данных. Работа очень похожа на операцию map в функциональных языках программирования – пользовательская функция применяется к каждой входной записи.
Функция map() примененная к одной входной записи и выдаёт множество пар ключ-значение. Множество – т.е. может выдать только одну запись, может не выдать ничего, а может выдать несколько пар ключ-значение. Что будет находится в ключе и в значении – решать пользователю, но ключ – очень важная вещь, так как данные с одним ключом в будущем попадут в один экземпляр функции reduce.
2. Стадия Shuffle. Проходит незаметно для пользователя. В этой стадии вывод функции map «разбирается по корзинам» – каждая корзина соответствует одному ключу вывода стадии map. В дальнейшем эти корзины послужат входом для reduce.
3. Стадия Reduce. Каждая «корзина» со значениями, сформированная на стадии shuffle, попадает на вход функции reduce().
Функция reduce задаётся пользователем и вычисляет финальный результат для отдельной «корзины». Множество всех значений, возвращённых функцией reduce(), является финальным результатом MapReduce-задачи.
Несколько дополнительных фактов про MapReduce:
1) Все запуски функции map работают независимо и могут работать параллельно, в том числе на разных машинах кластера.
2) Все запуски функции reduce работают независимо и могут работать параллельно, в том числе на разных машинах кластера.
3) Shuffle внутри себя представляет параллельную сортировку, поэтому также может работать на разных машинах кластера. Пункты 1-3 позволяют выполнить принцип горизонтальной масштабируемости.
4) Функция map, как правило, применяется на той же машине, на которой хранятся данные – это позволяет снизить передачу данных по сети (принцип локальности данных).
5) MapReduce – это всегда полное сканирование данных, никаких индексов нет. Это означает, что MapReduce плохо применим, когда ответ требуется очень быстро.
Примеры задач, эффективно решаемых при помощи MapReduce
Word Count
Начнём с классической задачи – Word Count. Задача формулируется следующим образом: имеется большой корпус документов. Задача – для каждого слова, хотя бы один раз встречающегося в корпусе, посчитать суммарное количество раз, которое оно встретилось в корпусе.
Решение:
Раз имеем большой корпус документов – пусть один документ будет одной входной записью для MapRreduce–задачи. В MapReduce мы можем только задавать пользовательские функции, что мы и сделаем (будем использовать python-like псевдокод):
|
|
Функция map превращает входной документ в набор пар (слово, 1), shuffle прозрачно для нас превращает это в пары (слово, [1,1,1,1,1,1]), reduce суммирует эти единички, возвращая финальный ответ для слова.
Обработка логов рекламной системы
Второй пример взят из реальной практики Data-Centric Alliance.
Задача: имеется csv-лог рекламной системы вида:
<user_id>,<country>,<city>,<campaign_id>,<creative_id>,<payment></p>
11111,RU,Moscow,2,4,0.3
22222,RU,Voronezh,2,3,0.2
13413,UA,Kiev,4,11,0.7
…
Необходимо рассчитать среднюю стоимость показа рекламы по городам России.
Решение:
|
|
Функция map проверяет, нужна ли нам данная запись – и если нужна, оставляет только нужную информацию (город и размер платежа). Функция reduce вычисляет финальный ответ по городу, имея список всех платежей в этом городе.
Резюме
В статье мы рассмотрели несколько вводных моментов про большие данные:
· Что такое Big Data и откуда берётся;
· Каким основным принципам следуют все средства и парадигмы работы с большими данными;
· Рассмотрели парадигму MapReduce и разобрали несколько задач, в которой она может быть применена.
Первая статья была больше теоретической, во второй статье мы перейдем к практике, рассмотрим Hadoop – одну из самых известных технологий для работы с большими данными и покажем, как запускать MapReduce-задачи на Hadoop.
В последующих статьях цикла мы рассмотрим более сложные задачи, решаемые при помощи MapReduce, расскажем об ограничениях MapReduce и о том, какими инструментами и техниками можно обходить эти ограничения.
Спасибо за внимание, готовы ответить на ваши вопросы.
Youtube-Канал автора об анализе данных
Ссылки на другие части цикла:
Часть 2: Hadoop
Часть 3: Приемы и стратегии разработки MapReduce-приложений
Часть 4: Hbase
📈 Стать аналитиком Big Data: пошаговое руководство
Анализ больших данных – относительно новая, но довольно востребованная сфера рынка труда. Спрос на специалистов по работе с данными постоянно растет. Big Data – это наборы данных очень больших размеров, которые также характеризуются многообразием и высокой скоростью обновления.
Аналитик больших данных – это специалист, который выявляет и исследует закономерности в данных с помощью специальных программных средств.
О том, чем занимаются специалисты по анализу больших данных, мы писали в статье Big Data: размер имеет значение. В этом материале, подготовленном при поддержке Факультета Аналитики Big Data онлайн-университета GeekBrains, мы сосредоточимся на навыках, необходимых для овладения профессией.
Английский язык
Актуальная информация по анализу больших данных в первую очередь появляется в англоязычных сообществах. Знание английского языка необходимо не только для чтения литературы по теме, но и для общения с зарубежными коллегами.
Soft skills
Работа в проектах над большими данными обычно разделяется между специалистами из разных сфер. Поэтому немаловажным является умение работать в команде. Развить свои soft skills помогут следующие курсы и книги:
Математика
Если вы начинаете свой карьерный путь из другой сферы, необходимо прокачать знания в дискретной математике и статистике. Так вы сможете лучше понимать алгоритмы обработки и методы анализа больших данных.
На русском:
На английском:
Программирование
Далее нужно изучить SQL – язык создания, модификации и управления базами данных.
Чаще всего для обработки и анализа больших данных используются такие языки программирования, как Python или R. Изучить их основы совершенно бесплатно можно с помощью онлайн-платформ.
На русском:
На английском:
Теория
Для того чтобы строить и интерпретировать прогностические модели, необходима сильная теоретическая база. В соответствующих онлайн-курсах включены основы статистики, высшей математики, необходимая теория и практические задания.
На русском:
На английском:
В дополнение:
Литература по Big Data
После просмотра курсов и освоения базы приступайте к чтению научно-технической литературы по теме. Не стесняйтесь читать и научно-популярную литературу – это позволит посмотреть на область свежим взглядом.
Подкасты
Подкасты и Youtube-каналы – одни из лучших способов быть в курсе последних новостей Big Data. Относительно YouTube обязательно изучите нашу подборку из 30 YouTube-каналов и плейлистов о Data Science. А ниже мы собрали подборку подкастов.
На русском:
На английском:
- Data Skeptic – эксперты о статистике, машинном обучении, ИИ и Big Data;
- Code Newbie – об успешных программистах и людях, сумевших стать профессионалами с нуля;
- Learn to Code with Me – для новичков об основах программирования;
- Coding Blocks – о лучших практиках программирования, алгоритмах и ООП;
- Programming Throwdown – для разработчиков о работе на разных языках программирования;
- Arrested DevOps – новое о практиках разработки;
- Software Engineering Daily – о работе программного обеспечения.
После знакомства с теорией и основами программирования закрепите полученные знания на практике. Начните анализировать реальные данные. В этом вам помогут онлайн-курсы и популярные ресурсы:
Потребуются также и специальные инструменты для решения проблем, связанных с огромными объемами данных и их распределенной обработки:
В первую очередь подпишитесь на сообщество Big Data and Analytics на LinkedIn. Там собраны не только курсы и офферы для аналитиков, но и вся актуальная информация от ведущих экспертов области. А также советуем следить за публикациями Ronald van Loon, Jules Polonetsky, DJ Patil и Bernard Marr. Они активно рассказывают о своем карьерном пути и делятся новостями из мира Data Science.
Сообщество
- Stack Overflow Big Data – огромный ресурс с вопросами и ответами о проблемах, связанных с кодом;
- Хабрахабр Big Data – статьи по анализу данных и машинному обучению;
- Women in Big Data – форум для женщин в сфере больших данных;
- Open Data Science – русскоязычное сообщество для специалистов из разных областей науки о данных;
- MachineLearning.ru – вики-страница, посвященная машинному обучению на русском;
- Cross Validated – вопросы и ответы по статистике и выбору лучших моделей;
- R-bloggers – все, что вы хотели знать о R.
Направления в карьере
Мое видение – это мир, наполненный грамотными профессионалами в сфере данных. Профессионалы, которые могут использовать данные для разработки идей и принятия решений, основанных на данных
Дэвид Лангер (Вице-президент отдела Аналитики в Schedulicity)
По данным отчета LinkedIn 2020 г., специалисты по анализу данных на протяжении последних трех лет остаются одними из самых востребованных в таких отраслях, как информационные технологии и услуги, программное обеспечение, интернет, финансовые услуги, высшее образование, а также в научно-исследовательской сфере. Вакансии варьируются от младших разработчиков до старших вице-президентов и директоров по инжинирингу.
Средняя зарплата специалиста в области Data Science находится в диапазоне от $89 тыс. до $242 тыс. в США, а Европейская комиссия в своем отчете за 2019 г. объявила, что к 2020 г. в Европе будет создано 100 000 новых рабочих мест, связанных с данными.
Если вы только начинаете свой путь в Data Science, хотите получить диплом и помощь в трудоустройстве, мы рекомендуем записаться на курс Факультета Аналитики Big Data онлайн-университета GeekBrainsy. Программа курса даст основательную математическую и базу, основы языка Python и навыки работы с базами данных, а также научит работе с Hadoop и Apache Spark – востребованными инструментами работы с большими данными. Обучение на курсах ориентировано на применение навыков машинного обучения в бизнесе и построено по принципам практической работы над проектами с ведущими специалистами сферы и личным помощником-куратором.
Использование Python для больших данных и аналитики — BMC Blogs
Если вы читали здесь сообщения в нашем блоге, то увидите, что большинство наших примеров анализа больших данных и науки о данных написано с использованием кода Python. Это почему? Почему большинство специалистов по данным предпочитают Python?
Зачем использовать Python для DataScience?
Python так популярен среди специалистов по данным по нескольким причинам:
- Python прост и намного менее многословен, чем другие языки (в частности, по сравнению с Java, которая, по мнению многих программистов, слишком многословна.). Но easy и simple не означают, что Python каким-либо образом ограничен. Фактически, благодаря природе открытого исходного кода, другие программисты могут добавлять в язык функции. Oracle сохраняет контроль над Java, поэтому его механизм распространения стороннего кода несколько сложнее, требуя дополнительных шагов для загрузки и включения файлов JAR, как они распространяются с Java.
- Тесно связанный с приведенным выше комментарием, математики и программисты имеют код на Python некоторых очень сложных структур и алгоритмов, так что обычные программисты могут найти их более простыми в использовании.
- Python встроен в оболочки командной строки некоторых продуктов для работы с большими данными, что свидетельствует о его широком использовании.
- Это альтернатива для специалистов по данным, которые в прошлом использовали больше научных инструментов, инструментов, более ориентированных на математику и статистику на уровне выпускников. До появления больших данных наука о данных была чем-то, чем могли заниматься только статистики, исследователи операций и прикладные математики. Их инструменты включают Wolfram Alpha and Mathematics, Matplotlib, Scikit-learn и R. Первые два в основном предназначены для решения сложных математических уравнений и рисования графиков.Последние два до сих пор используются специалистами по обработке данных, поскольку они были перенесены в среды больших данных с небольшими ограничениями масштабируемости.
- Как следствие того, что я только что написал выше, Python достаточно прост, и специалисты по данным могут начать использовать его вместо Microsoft Excel или Google Sheets, с которых они часто начинают. Это простые инструменты, с помощью которых можно приступить к просмотру набора данных. Но по мере того, как пользователь становится более знакомым с Python, он или она может узнать, что с помощью пары строк кода они также могут просматривать, суммировать и упорядочивать данные с помощью всего нескольких команд, как и Excel.Это особенно верно, если они используют один Zeppelin или Jupyter (см. Ниже) в качестве блокнотов для своей работы, поскольку они поддерживают создание графиков и таблиц с помощью одной кнопки. Вы не можете создавать сложные графики в оболочке Python, поскольку это не графическая среда.
- Многие алгоритмы машинного обучения написаны на Python. К ним относятся Google TensorFlow, Microsoft Cognitive ToolKit, Scikit-learn и Spark ML (машинное обучение Spark). Мы должны отдать должное там, где это необходимо, и сказать, что большая часть математических программ здесь исходит от университетских исследователей, работающих в таких местах, как Принстонский институт перспективных исследований, работавших с 1940-х годов по настоящее время.Итак, Google, Microsoft и т. Д. Используют одни и те же алгоритмы. Конечно, Стэнфорд вошел в эту стратосферу великих мыслителей с помощью Page Rank и других алгоритмов, но нейронные сети, регрессия, классификация и алгоритмы, используемые для их решения, появились на десятилетия раньше, до того, как появились базы данных и языки, которые могли бы обрабатывать их. компьютер.
Python прост для начинающих, но продвинутый для тех, кому он нужен
Вы можете написать программу на Python в одну простую строку.Например, введите 1 * 2 в оболочку Python, и она ответит 2 .
Код
Python можно запускать в интерактивной оболочке Python или отправлять интерпретатору Python в виде пакетного задания. Дополнительным преимуществом интерактивной оболочки является то, что когда вы пишете части более крупной программы, вы можете вводить отдельные разделы в оболочку командной строки, и она их выполняет. Затем, когда у вас работает этот маленький кусочек логики, вы вставляете его в большую программу. Так что это тоже блокнот для создания чего-то большего.
Но эта простота не означает, что Python каким-либо образом ограничен. Он поддерживает современные структуры данных, такие как наборы и карты, а также примитивные типы, такие как целые числа и даже комплексные числа. Но, как мы видим ниже, Python включает Numpy, который является основным API, используемым для так называемой «экосистемы научных вычислений». Не волнуйся. Здесь вам не понадобится много науки, кроме понимания матриц и линейной алгебры, которые используют подавляющее большинство алгоритмов машинного обучения, даже нейронных сетей.Numpy занимается линейной алгеброй и матричной математикой в очень больших масштабах. Большинство алгоритмов машинного обучения работают с этими n-мерными матрицами. В остальном математика не очень сложна. На самом деле нейронные сети тратят большую часть своего времени на поиски решений, пробуя это, а затем снова угадывая. Так что для более продвинутой математики это не очень элегантно.
Оболочка командной строки Python
Apache Spark имеет оболочку Python. Это означает, что вы можете открывать наборы данных, выполнять преобразования и запускать алгоритмы в одной простой командной строке.Без этого вам пришлось бы упаковать свою программу, а затем отправить ее в Spark с помощью spark-submit. Недостаток spark-submit , как и любого пакетного задания, состоит в том, что вы не можете проверять переменные в реальном времени. Итак, вы делаете то, что программисты на мэйнфреймах делали на протяжении десятилетий, а именно выводите значения в журнал. Это нормально для текста, но когда вы используете оболочку Python, этот текст является объектом, что означает, что вы можете работать с ним дальше. Это не статичная не-сущность.
Набор инструментов Python Pip
Python обогащен тем, что позволяет программистам вносить свой вклад в его репозиторий с открытым исходным кодом, Python Package Index (PIP).
Образцы пакетов pip для чтения и записи в JSON и запрашивают для работы с веб-службами (он называется HTTP для людей , что должно дать представление о том, почему эти вещи существуют: чтобы упростить сложные задачи). И более сложный дескриптор. ручка, ну машинное обучение.
Затем есть Pandas и другие инструменты для преобразования данных из одного формата в другой и для запуска этих алгоритмов в масштабе, то есть во всем кластере. Например, старые алгоритмы, существовавшие до распределенных вычислений (т.е., большие данные), такие как scikit-learn, не будут работать с распределенными фреймами данных и другими объектами, работающими в кластере. Они предназначены для работы с одним файлом на одном компьютере. Так что это проблема, о которой следует помнить, когда вы решаете, какую структуру использовать. Но ваши специалисты по анализу данных будут привыкать к богатому набору инструментов. Таким образом, для очень больших наборов данных у вас может быть гибрид инструментов, в зависимости от набора навыков ваших программистов.
Преобразование данных стало проще (проще)
Pandas — вклад программистов с открытым исходным кодом в Python и науку о данных номер один.Сразу за ним находится парсер Databricks CSV, который теперь добавлен в Apache Spark.
Это означает, что вы можете ввести несколько строк или кода и заставить Python читать JSON, CSV или другой тип файла, а затем преобразовать его в таблицу Pandas, которая выравнивает таблицу, чтобы ее было легче читать, а также позволяет вам применяйте заголовки столбцов, чтобы их было легче читать. Это как если бы вы взяли трудночитаемый файл CSV и выложили его в виде знакомой электронной таблицы. А затем вы можете взять срезы этих данных, чтобы повернуть строки и столбцы, уменьшить размер данных и, следовательно, упростить их понимание, применить функции к отдельным ячейкам и т. Д.
Короче говоря, Pandas и Numpy упрощают работу с n-мерными матрицами. Прежде всего, подавляющее большинство задач машинного обучения связано с довольно обыденной арифметикой. Это умножение матриц, также известное как линейная алгебра. Хотя для компьютера это обычное дело, люди не могут даже визуализировать, когда эти матрицы работают, когда они имеют более трех измерений.
Блокноты Python
Наконец, Python работает в среде портативных компьютеров из-за, как мы уже сказали, его краткости и интерпретируемого характера.
Мы писали об использовании Jupyter здесь. И мы использовали Zeppelin во многих других примерах.
Блокноты — это блокноты для программистов. Плюс решает некоторые логистические проблемы. Вы помещаете код Python Notebook (многие другие языки поддерживаются в Notebooks) на веб-страницу, а затем нажимаете , запускаете , и он запускает код. Этот код может включать в себя графики matplotlib, в которых отсутствует веб-браузер и веб-сокеты, вам понадобится среда X (заведомо сложная), настроенная для того, чтобы программист мог поделиться своими графиками со своими пользователями.
Специалисты по данным также могут распространять свои графики и сводки с помощью этих записных книжек. Это потому, что он позволяет вам делиться ими с пользователями, но при этом скрывать от них код. И вы можете делать дисплеи в реальном времени.
Конечно, есть множество инструментов и фреймворков для ML. Python может быть наиболее широко используемым по множеству веских причин, изложенных выше.
Эти публикации являются моими собственными и не обязательно отражают позицию, стратегию или мнение BMC.
Обнаружили ошибку или есть предложение? Сообщите нам об этом по электронной почте [email protected].
.
Python для больших данных: 3 инструмента для анализа больших данных
В этом посте мы обсудим три потрясающих инструмента Python для больших данных, которые помогут вам улучшить ваши навыки программирования больших данных с использованием производственных данных.
Введение
В этой статье я предполагаю, что вы запускаете Python в его собственной среде, используя virtualenv, pyenv или какой-либо другой вариант.
Примеры в этой статье используют IPython, поэтому убедитесь, что он у вас установлен, чтобы продолжить, если хотите.
$ mkdir питон-большие-данные
$ cd Python-большие-данные
$ virtualenv../venvs/python-big-data
$ source ../venvs/python-big-data/bin/activate
$ pip установить ipython
$ pip install pandas
$ pip install pyspark
$ pip установить scikit-learn
$ pip install scipy
Теперь давайте поиграемся с некоторыми данными.
Данные Python
По мере прохождения этой статьи я буду использовать некоторые образцы данных для просмотра примеров.
Данные Python, которые мы будем использовать, представляют собой фактические производственные журналы с этого веб-сайта в течение нескольких дней.Эти данные еще не являются технически большими данными, потому что их размер составляет всего около 2 МБ, но они отлично подойдут для наших целей.
Мне нужно немного улучшить свою инфраструктуру, чтобы получать образцы большого размера (> 1 ТБ).
Чтобы получить образцы данных, вы можете использовать git, чтобы извлечь их из моего публичного репозитория GitHub: admintome / access-log-data
$ git clone https://github.com/admintome/access-log-data.git
Данные представляют собой простой файл CSV, поэтому каждая строка представляет отдельный журнал, а поля разделены запятыми:
01.08.2018 17:10, www2, www_access, 172.68.133.49 - - [01 / Aug / 2018: 17: 10: 15 +0000] "GET /wp-content/uploads/2018/07/spark-mesos-job-complete-1024x634.png HTTP / 1.0" 200 151587 "https://dzone.com/" "Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 67.0.3396.99 Safari / 537.36" '
Вот схема строки журнала:
Теперь, когда у нас есть данные, которые мы собираемся использовать, давайте рассмотрим три инструмента Python для работы с большими данными.
Из-за сложности многих операций, которые могут быть выполнены с данными, в этой статье основное внимание будет уделено демонстрации того, как загрузить наши данные и получить небольшую выборку данных.
Для каждого перечисленного инструмента я дам ссылки для получения дополнительной информации.
Python Панды
Первым инструментом, который мы обсудим, является Python Pandas. Как указано на веб-сайте, Pandas — это библиотека анализа данных Python с открытым исходным кодом.
Давайте запустим IPython и выполним некоторые операции с нашими образцами данных.
импортировать панд как pd
headers = ["datetime", "source", "type", "log"]
df = pd.read_csv ('access_logs_parsed.csv', quotechar = "'", names = headers)
Примерно через секунду он должен ответить:
[6844 строки x 4 столбца]
В [3]:
Как видите, у нас есть около 7000 строк данных, и мы видим, что было найдено четыре столбца, которые соответствуют нашей схеме, описанной выше.
Pandas автоматически создал объект DataFrame, представляющий наш CSV-файл! Давайте посмотрим на образец данных, импортированных с помощью функции head ()
.
В [11]: df.head ()
Из [11]:
журнал типа источника datetime
0 2018-08-01 17:10 www2 www_access 172.68.133.49 - - [01 / Aug / 2018: 17: 10: 15 +0000] ...
1 2018-08-01 17:10 www2 www_access 162.158.255.185 - - [01 / Aug / 2018: 17: 10: 15 +000 ...
2 2018-08-01 17:10 www2 www_access 108.162.238.234 - - [01 / Aug / 2018: 17: 10: 22 +000 ...
3 2018-08-01 17:10 www2 www_access 172.68.47.211 - - [01 / Aug / 2018: 17: 10: 50 +0000] ...
4 2018-08-01 17:11 www2 www_access 141.101.96.28 - - [01 / Aug / 2018: 17: 11: 11 +0000] ...
С Python Pandas и большими данными можно сделать очень многое. Сам по себе Python отлично подходит для обработки ваших данных и их подготовки. Теперь с Pandas вы также можете выполнять аналитику данных на Python. Специалисты по обработке данных обычно используют Python Pandas вместе с IPython для интерактивного анализа огромных наборов данных и получения на их основе значимой бизнес-аналитики.Посетите их веб-сайт выше для получения дополнительной информации.
PySpark
Следующий инструмент, о котором мы поговорим, — это PySpark. Это библиотека из проекта Apache Spark для аналитики больших данных.
PySpark дает нам множество функций для анализа больших данных в Python. Он поставляется с собственной оболочкой, которую вы можете запустить из командной строки.
$ pyspark
Загружает оболочку pyspark.
(python-big-data) [электронная почта защищена]: ~ / Development / access-log-data $ pyspark Python 3.6.5 (по умолчанию, 1 апреля 2018 г., 05:46:30) [GCC 7.3.0] в Linux Введите «help», «copyright», «credits» или «license» для получения дополнительной информации. 2018-08-03 18:13:38 WARN Utils: 66 - Ваше имя хоста, admintome преобразуется в адрес обратной связи: 127.0.1.1; используя вместо него 192.168.1.153 (на интерфейсе enp0s3) 2018-08-03 18:13:38 WARN Utils: 66 - Установите SPARK_LOCAL_IP, если вам нужно выполнить привязку к другому адресу 2018-08-03 18:13:39 WARN NativeCodeLoader: 62 - Невозможно загрузить библиотеку native-hadoop для вашей платформы ... используя встроенные классы java, где это возможно. Установка уровня журнала по умолчанию на "WARN".Для настройки уровня ведения журнала используйте sc.setLogLevel (newLevel). Для SparkR используйте setLogLevel (newLevel). Добро пожаловать в ____ __ / __ / __ ___ _____ / / __ _ \ \ / _ \ / _ `/ __ / '_ / / __ / .__ / \ _, _ / _ / / _ / \ _ \ версии 2.3. 1 / _ / Использование Python версии 3.6.5 (по умолчанию, 1 апреля 2018 г., 05:46:30) SparkSession доступен как 'spark'. >>>
И когда вы запускаете оболочку, вы также получаете веб-интерфейс для просмотра статуса ваших заданий; просто перейдите по адресу http: // localhost: 4040
, и вы получите веб-интерфейс PySpark.
Давайте воспользуемся PySpark Shell для загрузки наших демонстрационных данных.
dataframe = spark.read.format ("csv"). Option ("header", "false"). Option ("mode", "DROPMALFORMED"). Option ("quote", "'"). Load ( "access_logs.csv")
dataframe.show ()
PySpark предоставит нам образец созданного DataFrame.
>>> dataframe2.show ()
+ ---------------- + ---- + ---------- + ---------------- ---- +
| _c0 | _c1 | _c2 | _c3 |
+ ---------------- + ---- + ---------- + ---------------- ---- +
| 2018-08-01 17: 10 | www2 | www_access | 172.68.133.49 - -... |
| 2018-08-01 17: 10 | www2 | www_access | 162.158.255.185 -... |
| 2018-08-01 17: 10 | www2 | www_access | 108.162.238.234 -... |
| 2018-08-01 17: 10 | www2 | www_access | 172.68.47.211 - -... |
| 2018-08-01 17: 11 | www2 | www_access | 141.101.96.28 - -... |
| 2018-08-01 17: 11 | www2 | www_access | 141.101.96.28 - -... |
| 2018-08-01 17: 11 | www2 | www_access | 162.158.50.89 - -... |
| 2018-08-01 17: 12 | www2 | www_access | 192.168.1.7 - - [... |
| 2018-08-01 17: 12 | www2 | www_access | 172.68.47.151 - -... |
| 2018-08-01 17: 12 | www2 | www_access | 192.168.1.7 - - [... |
| 2018-08-01 17: 12 | www2 | www_access | 141.101.76.83 - -... |
| 2018-08-01 17: 14 | www2 | www_access | 172.68.218.41 - -... |
| 2018-08-01 17: 14 | www2 | www_access | 172.68.218.47 - -... |
| 2018-08-01 17: 14 | www2 | www_access | 172.69.70.72 - - ... |
| 2018-08-01 17: 15 | www2 | www_access | 172.68.63.24 - - ... |
| 2018-08-01 17: 18 | www2 | www_access | 192.168.1.7 - - [... |
| 2018-08-01 17: 18 | www2 | www_access | 141.101.99.138 - ... |
| 2018-08-01 17:19 | www2 | www_access | 192.168.1.7 - - [... |
| 2018-08-01 17:19 | www2 | www_access | 162.158.89.74 - -... |
| 2018-08-01 17: 19 | www2 | www_access | 172.68.54.35 - - ... |
+ ---------------- + ---- + ---------- + ---------------- ---- +
показаны только верхние 20 строк
Мы снова видим, что в нашем DataFrame есть четыре столбца, которые соответствуют нашей схеме. DataFrame — это просто представление данных в памяти, которое можно рассматривать как таблицу базы данных или электронную таблицу Excel.
Теперь о нашем последнем инструменте.
Python SciKit-Learn
Любое обсуждение больших данных неизбежно приведет к обсуждению машинного обучения.И, к счастью для нас, у разработчиков Python есть множество возможностей использовать алгоритмы машинного обучения.
Не вдаваясь в подробности машинного обучения, нам нужно получить некоторые данные для выполнения машинного обучения. Примеры данных, которые я привел в этой статье, не работают как есть, потому что это не числовые данные. Нам нужно будет манипулировать данными и представить их в числовом формате, который выходит за рамки этой статьи. Например, мы могли сопоставить записи журнала по времени, чтобы получить DataFrame с двумя столбцами: количество журналов в минуту и текущую минуту:
+ ------------------ + --- +
| 2018-08-01 17:10 | 4 |
+ ------------------ + --- +
| 2018-08-01 17:11 | 1 |
+ ------------------ + --- +
Имея данные в этой форме, мы можем выполнить машинное обучение, чтобы предсказать количество посетителей, которые мы, вероятно, получим в будущем.Но, как я уже упоминал, это выходит за рамки данной статьи.
К счастью для нас, SciKit-Learn поставляется с некоторыми примерами данных! Давайте загрузим несколько примеров данных и посмотрим, что мы можем сделать.
В [1]: из наборов данных импорта sklearn
В [2]: iris = datasets.load_iris ()
В [3]: digits = datasets.load_digits ()
В [4]: печать (цифры. Данные)
[[0. 0. 5. ... 0. 0. 0.]
[0. 0. 0. ... 10. 0. 0.]
[0. 0. 0. ... 16. 9. 0.]
...
[0. 0. 1. ... 6. 0. 0.]
[0.0. 2. ... 12. 0. 0.]
[0. 0. 10. ... 12. 1. 0.]]
Это загружает два набора данных, которые используются для классификации алгоритмов машинного обучения для классификации ваших данных.
Ознакомьтесь с базовым руководством SciKit-Learn для получения информации.
Заключение
Учитывая эти три инструмента Python для больших данных, Python является основным игроком в игре с большими данными наряду с R и Scala.
Надеюсь, вам понравилась эта статья. Если да, то поделитесь, пожалуйста.Также прокомментируйте ниже.
Если вы плохо знакомы с большими данными и хотите узнать больше, обязательно зарегистрируйтесь на мой бесплатный курс «Введение в большие данные» на сайте AdminTome Online-Training.
Также не забудьте увидеть другие замечательные статьи о больших данных в блоге AdminTome.
.
Почему программирование на Python идеально подходит для больших данных? | by Scarlett Rose
Мы обсудим в блоге основные преимущества использования Python для больших данных.
Источник
Python везде!
В связи с широким использованием Python в основных отраслях промышленности, Python стал горячей темой для обсуждения в городе. Python был признан самым быстрорастущим языком программирования согласно Stack Overflow Trends.
Согласно опросу разработчиков Stack Overflow за 2019 год , Python является вторым «самым любимым » языком, причем 73% разработчиков предпочитают его другим языкам, преобладающим на рынке.
Python — это язык программирования общего назначения с открытым исходным кодом, используемый такими известными компаниями, как Reddit, Instagram и Venmo. говорится в пресс-релизе .
Почему стоит выбрать Python для больших данных?
Python и большие данные — это новая комбинация, вторгающаяся на рынок NOW . Python пользуется большим спросом среди компаний, занимающихся большими данными . В этом блоге мы обсудим основные преимущества использования Python и почему Python для больших данных в наши дни стал предпочтительным выбором среди предприятий.
Простое кодирование
Программирование на Python включает меньшее количество строк кода по сравнению с другими языками, доступными для программирования. Он может выполнять программы с минимальным количеством строк кода. Более того, Python автоматически предлагает помощь для идентификации и связывания типов данных.
« Python — поистине замечательный язык. Когда кому-то приходит в голову хорошая идея, требуется около 1 минуты и пяти строк, чтобы запрограммировать что-то, что почти делает то, что вы хотите.” — Джек Янсен
Программирование на Python следует структуре вложенности на основе отступов. Язык может обрабатывать длительные задачи за короткий промежуток времени. Поскольку нет ограничений на обработку данных, вы можете вычислять данные на обычных машинах, ноутбуках, облаке и настольных компьютерах.
Ранее Python считался более медленным языком по сравнению с некоторыми из его аналогов , таких как Java и Scala , но теперь сценарий изменился.
Появление платформы Anaconda обеспечило большую скорость языка. Вот почему Python для больших данных стал одним из самых популярных вариантов в отрасли. Вы также можете нанять разработчика Python, который сможет реализовать эти преимущества Python в вашем бизнесе.
Открытый исходный код
Разработанный с помощью модели, основанной на сообществе, Python — это язык программирования с открытым исходным кодом . Будучи языком с открытым исходным кодом, Python поддерживает несколько платформ.Кроме того, его можно запускать в различных средах, таких как Windows и Linux .
“ Мой любимый язык поддержки — Python. Он имеет простой, чистый синтаксис, инкапсуляцию объектов, хорошую поддержку библиотеки и необязательные именованные параметры », — сказал Брэм Коэн.
Источник
Поддержка библиотек
Программирование на Python предлагает использование нескольких библиотек. Это делает его известным языком программирования в таких областях, как научные вычисления.Поскольку большие данные включают в себя анализ данных и научные вычисления, Python и большие данные служат отличными компаньонами.
Python предлагает ряд хорошо протестированных аналитических библиотек. Эти библиотеки состоят из таких пакетов, как,
- Числовые вычисления
- Анализ данных
- Статистический анализ
- Визуализация
- Машинное обучение
Совместимость Python с Hadoop Python и Hadoop являются платформами больших данных с открытым исходным кодом.Это причина того, что Python более совместим с Hadoop, чем другие языки программирования. Вы можете включить эти функции Python в свой бизнес. Для этого вам нужно нанять разработчиков Python из известной компании-разработчика Python. 1. Доступ к HDFS API Пакет Pydoop (Python и Hadoop) предоставляет вам доступ к HDFS API для Hadoop, который позволяет писать программы и приложения Hadoop MapReduce. 2. Предлагает MapReduce API Pydoop предлагает MapReduce API для решения сложных проблем с минимальными усилиями программирования. Этот API можно использовать для реализации передовых концепций науки о данных, таких как «счетчики» и «считыватели записей», что делает программирование на Python лучшим выбором для больших данных. Также , Прочтите — «Подходит ли Python для разработки финансовых приложений?» Python считается одним из самых популярных языков для разработки программного обеспечения из-за его высокой скорости и производительности. Так как он хорошо ускоряет код, Python является подходящим выбором для больших данных . Программирование на Python поддерживает идеи создания прототипов, которые помогают ускорить выполнение кода.Более того, при этом Python также поддерживает прозрачность между кодом и процессом. Программирование на Python способствует тому, чтобы код был читаемым и прозрачным, тем самым оказывая большую помощь в обслуживании кода. Также, Прочтите — «Использование Python для больших данных и аналитики» Python позволяет пользователям упростить операции с данными . Поскольку Python является объектно-ориентированным языком, он поддерживает расширенные структуры данных.Некоторые структуры данных, которыми управляет Python, включают списки, наборы, кортежи, словари и многое другое. Помимо этого, Python помогает поддерживать научные вычислительные операции, такие как матричные операции, фреймы данных и т. Д. Эти невероятные возможности Python помогают расширить возможности языка, что позволяет ему ускорить операции с данными. Это то, что делает Python и большие данные смертельной комбинацией. Источник Python имеет встроенную функцию поддержки обработки данных.Вы можете использовать эту функцию для поддержки обработки неструктурированных и нетрадиционных данных. Это причина, по которой компании, работающие с большими данными, предпочитают выбирать Python, поскольку он считается одним из самых важных требований к большим данным. Итак, наймите оффшорных программистов Python и воспользуйтесь преимуществами использования Python в своем бизнесе. Это были некоторые из преимуществ использования Python. Итак, к настоящему моменту вы должны были понять, почему Python для больших данных считается наиболее подходящим.Python — это простой язык с открытым исходным кодом, обладающий высокой скоростью и надежной поддержкой библиотеки. «Большие данные лежат в основе всех существующих мегатенденций». –Chris Lynch С использованием технологий больших данных, распространяющихся по всему миру, выполнение требований этой отрасли, безусловно, является сложной задачей. Но, обладая невероятными преимуществами, Python стал подходящим выбором для больших данных. Вы также можете использовать Python в своем бизнесе, чтобы воспользоваться его преимуществами. . Python предоставляет огромное количество библиотек для работы с большими данными. Вы также можете работать — с точки зрения разработки кода — с помощью Python для больших данных намного быстрее, чем любой другой язык программирования. Эти два аспекта позволяют разработчикам во всем мире использовать Python как предпочтительный язык для проектов больших данных. Чтобы получить глубокие знания о Python и его различных приложениях, вы можете записаться на онлайн-обучение Python с круглосуточной поддержкой и пожизненным доступом. В Python работать с любыми типами данных чрезвычайно просто. Установим это на простом примере. Из снимка ниже видно, что тип данных «a» — строка, а тип данных «b» — целое число. Хорошая новость заключается в том, что вам не нужно беспокоиться об обработке типа данных. Python уже позаботился об этом. Каковы преимущества использования пакета Pydoop?
Чем полезен для вас HDFS API? Итак, пожалуйста. HDFS API позволяет легко читать и записывать информацию о файлах, каталогах и свойствах глобальной файловой системы без каких-либо препятствий. Скорость
Scope
Поддержка обработки данных
Заключительные слова
Почему вы должны выбрать Python для больших данных
Теперь вопрос на миллион долларов; Python с большими данными или Java с большими данными?
Я бы предпочел Python в любой день, с большими данными, потому что в java, если вы напишете 200 строк кода, я могу сделать то же самое всего за 20 строк кода с Python.Некоторые разработчики говорят, что производительность Java лучше, чем Python, но я заметил, что когда вы работаете с огромным объемом данных (в ГБ, ТБ и более), производительность почти такая же, а время разработки меньше, когда работа с Python над большими данными.
Самое лучшее в Python — отсутствие ограничений на данные. Вы можете обрабатывать данные даже с помощью простой машины, такой как обычное оборудование, ноутбук, настольный компьютер и другие.
Python можно использовать для написания программ и приложений Hadoop MapReduce для доступа к HDFS API для Hadoop с помощью пакета PyDoop
Одним из самых больших преимуществ PyDoop является API HDFS.Это позволяет вам подключаться к установке HDFS, читать и записывать файлы, а также легко получать информацию о файлах, каталогах и глобальных свойствах файловой системы.
MapReduce API PyDoop позволяет решать множество сложных задач с минимальными усилиями программирования. Усовершенствованные концепции MapReduce, такие как «счетчики» и «считыватели записей», могут быть реализованы в Python с помощью PyDoop.
В приведенном ниже примере я запустил простую программу подсчета слов MapReduce, написанную на Python, которая подсчитывает частоту появления слова во входном файле.Итак, у нас есть два файла ниже — «mapper.py» и «reducer.py», оба написаны на python.
Рис: mapper.py
Рис: reducer.py
Рис: выполнение задания MapReduce
Рис: вывод
Это очень простой пример, но когда вы Написав сложную программу MapReduce, Python сократит количество строк кода в 10 раз по сравнению с той же программой MapReduce, написанной на Java.
Почему Python имеет смысл для специалистов по данным
Повседневные задачи специалиста по данным включают в себя множество взаимосвязанных, но различных действий, таких как доступ к данным и управление ими, вычисление статистики и создание визуальных отчетов по этим данным.В задачи также входит построение прогнозных и пояснительных моделей, оценка этих моделей на дополнительных данных, интеграция моделей в производственные системы и многое другое. Python имеет широкий спектр библиотек с открытым исходным кодом практически для всего, что Data Scientist делает в обычный день.
SciPy (произносится как «Sigh Pie») — основанная на Python экосистема программного обеспечения с открытым исходным кодом для математики, естественных наук и инженерии. Есть много других библиотек, которые можно использовать.
Вердикт: Python — лучший выбор для работы с большими данными.
Есть к нам вопрос? Укажите их в комментариях, и мы свяжемся с вами.
Похожие сообщения:
Начало работы с осваиванием Python
Топ-100 вопросов на собеседовании по Python
Сила Python с большими данными
.