Введение в науку о данных с помощью Python
В современном сложном мире способность разбираться в данных важнее, чем когда-либо. Данные есть повсюду, и возможность их интерпретировать дает нам возможность принимать эффективные решения, а также избегать введения в заблуждение, когда они представлены в ложном виде, намеренно или нет.
Некоторые из областей, в которых важно понимание методов анализа данных:
- Медицина
- Бизнес
- Правительство
- Гуманитарная помощь
- Многие отрасли науки
- Искусственный интеллект / машинное обучение
Язык программирования Python – идеальный инструмент для анализа и работы с данными. Доступно множество мощных библиотек с открытым исходным кодом, которые позволяют нам сосредоточиться на поставленной задаче, а не увязнуть в деталях реализации. Две из самых мощных и популярных библиотек для работы с данными в Python – это pandas и matplotlib.
Модуль Python Pandas
Pandas – это мощный и простой в использовании инструмент для анализа и обработки данных с открытым исходным кодом, созданный на основе языка программирования Python. Название происходит от термина «анализ панельных данных» – статистического метода, используемого в таких областях, как социальные науки, эпидемиология и эконометрика.
Pandas использует Series
и DataFrame
структуры данных для представления данных в удобном для анализа виде. Также существуют способы удобной фильтрации данных. Одной из мощных функций является возможность чтения данных из различных форматов, в том числе непосредственно из онлайн-источника.
Matplotlib
Matplotlib – отличная библиотека Python для создания подробных и привлекательных визуализаций на Python. Вскоре вы обнаружите, насколько легко создавать графики ваших данных с множеством опций настройки.
Давайте начнем!
Если у вас их еще нет, вам нужно сначала установить пакеты. То, как вы это сделаете, будет зависеть от вашей ситуации. Один из распространенных способов – использовать pip
с терминала.
pip install pandas
pip install matplotlib
Установка пакетов – важный навык для всех, кто хочет использовать больше, чем просто базовые функции Python. Доступны тысячи потрясающих пакетов. Вы можете узнать больше о том, как установить пакеты Python здесь.
Для целей этого урока мы собираемся использовать крошечный набор данных о некоторых испытаниях антидепрессантов. Набор данных взят с веб-сайта DASL . Я выбрал этот набор данных, потому что это «реальный мир», то есть данные были собраны из реальных экспериментов. Пожалуйста, имейте в виду, что данные указывают на небольшой размер информации, чтобы делать какие-либо выводы.
Набор данных показан ниже для справки.
Study Treated Placebo
Blashki.et.al. 1.75 1.02
Byerly.et.al. 2.3 1.37
Claghorn.et.al. 1.91 1.49
Davidson&Turnbull 4.77 2.28
Elkin.et.al. 2.35 2.01
Goldberg.et.al. 0.44 0.44
Joffe.et.al. 1.43 0.61
Kahn.et.al. 2.25 1.48
Kiev&Okerson 0.44 0.42
Lydiard 2.59 1.93
Ravaris.et.al. 1.42 0.91
Rickels.et.al. 1.86 1.45
Rickels&Case 1.71 1.17
Robinson.et.al. 1.13 0.76
Schweizer.et.al. 3.13 2.13
Stark&Hardison 1.4 1.03
van.der.Velde 0.66 0.1
White.et.al. 1.5 1.14
Zung 0.88 0.95
Если вы посмотрите на веб-сайт, с которого поступают эти данные, вы увидите следующую историю (Стоит учесть, что одна из основных целей анализа данных – найти историю, лежащую в основе данных).
Рассказ: В исследовании сравнивали эффективность нескольких антидепрессантов, изучая эксперименты, в которых они соответствовали требованиям FDA. В каждом из этих экспериментов сравнивали активное лекарство с плацебо, инертной таблеткой, которую давали некоторым испытуемым. В каждом эксперименте у некоторых пациентов, получавших плацебо, наблюдалось улучшение, явление, называемое эффектом плацебо. Уровни депрессии пациентов оценивались по шкале оценки депрессии Гамильтона, где большие числа указывают на большее улучшение. (Шкала Гамильтона является широко принятым стандартом, который использовался в каждом из независимо проведенных исследований.) Хорошо известно, что плацебо может оказывать сильное терапевтическое воздействие на депрессию, но отделить эффект плацебо от медицинского эффекта может быть трудно.
При работе с данными всегда нужно помнить о том, что именно представляют собой данные!
В этом примере не так много информации о том, что именно представляет каждая точка данных. Я собираюсь предположить, что каждое значение, данное для шкалы оценки депрессии Гамильтона для каждого исследования, представляет собой среднее (не забывайте, что этот термин неоднозначен – допустим, среднее) значение для каждой выборки в исследовании.
Вот код Python, который мы можем использовать для получения описательной статистики для набора данных. Обратите внимание, как легко читать данные с помощью pandas
даже с удаленного URL-адреса. Если вы хотите загрузить данные и загрузить их из локального файла, используйте вместо этого строку с комментарием.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("https://dasl.datadescription.com/download/data/3054", sep="\t")
# df = pd.read_csv("antidepressants.txt", sep="\t")
print(df.describe())
Результатом приведенного выше кода является
Treated Placebo
count 19.000000 19.000000
mean 1.785263 1.194211
std 1.022428 0.606615
min 0.440000 0.100000
25% 1.265000 0.835000
50% 1.710000 1.140000
75% 2.275000 1.485000
max 4.770000 2.280000
В зависимости от вашего опыта в анализе данных эти значения будут иметь для вас более или менее смысл. Они представляют собой базовое описание набора данных с точки зрения его размера, среднего значения и распределения данных. Эти %
цифры для квартили, которые формируют данные в четыре секции, чтобы помочь нам понять, как «распространение из» данных.
Глядя на числовые данные, мы можем начать делать некоторые предварительные выводы. Например, у пролеченных пациентов средний балл 0.6
выше, чем у группы плацебо. Это говорит о том, что лечение может быть более эффективным, чем плацебо, но необходимо больше информации, чтобы быть уверенным в том, так ли это на самом деле и в какой степени.
Объекты DataFrame Python Pandas
Что касается приведенного выше кода Python, то главное, что следует отметить, это то, что мы импортируем нужные нам библиотеки, а затем создаем объект DataFrame ( df
в нашем коде), который содержит наши данные и имеет множество полезных свойств и методов, которые мы можем использовать для исследуйте это.
Например, если вы добавите print(df.head
) к существующему коду, вы получите следующий результат:
Study Treated Placebo
0 Blashki.et.al. 1.75 1.02
1 Byerly.et.al. 2.30 1.37
2 Claghorn.et.al. 1.91 1.49
3 Davidson&Turnbull 4.77 2.28
4 Elkin.et.al. 2.35 2.01
Вы можете видеть, что данные были структурированы с помощью числового индекса и трех столбцов, на которые мы можем ссылаться по имени, чтобы ссылаться на определенные точки данных.
Изучение набора данных с использованием Python и Matplotlib – Диаграмма рассеяния
Чтобы получить более четкое (буквально) представление о данных, мы можем использовать matplotlib
библиотеку Python для создания множества различных визуальных представлений. Добавьте приведенный ниже код к существующему коду сверху, чтобы создать простой график данных, используя +
и x
для отметки значений на оси Y.
treated = df.Treated
placebo = df.Placebo
study = df.Study
plt.suptitle("Antidepressant Trials - Hamilton Depression Rating Scale")
plt.title("Source: DASL. 19 Samples")
plt.plot(study, treated, "+", color="blue")
plt.plot(placebo, "x", color="red" )
plt.xticks(rotation=60, ha="right")
plt.show()
Синтаксис очень интуитивно понятный. Главное отметить, что мы извлекли отдельные столбцы из фрейма данных и использовали их в качестве аргументов в plt.plot()
. Есть также несколько деталей, относящихся к параметрам отображения, но в основном они не требуют пояснений.
Изучение набора данных с помощью Python и Matplotlib – диаграммы прямоугольников и усов
Диаграмма рассеяния – отличный способ получить визуальный обзор набора данных, но он затрудняет чтение точных значений. Еще один распространенный инструмент для визуального представления данных – это квадрат и усы . Он содержит более или менее ту же информацию, которую мы использовали выше df.describe()
, но в легко усваиваемом визуальном формате.
Добавьте следующий код к тому, что у вас уже есть:
labels = ["Treated", "Placebo"]
data = [treated, placebo]
plt.boxplot(data, vert=False, patch_artist=True, labels=labels, showfliers=False)
plt.suptitle("Antidepressant Trials - Hamilton Depression Rating Scale")
plt.title("Source: DASL. 19 Samples")
plt.show()
и вы получите эту цифру.
Это упрощает сравнение значений из обработанных групп с группами плацебо. Вы можете сразу увидеть относительное положение средних значений, но вы также можете увидеть, что разброс для обработанных групп шире, чем для групп плацебо. В следующей статье мы более подробно рассмотрим, как такие детали влияют на типы выводов, которые могут быть сделаны при сравнении наборов данных. Например, мы увидим, как добавлять полосы ошибок к нашим графикам.
На данный момент, однако, есть много чего поработать над тем, что мы исследовали до сих пор. После того, как вы опробовали все, что мы рассмотрели, не останавливайтесь на достигнутом – это только начало. Попробуйте использовать методы, которые мы обсуждали для разных наборов данных, и посмотрите, какие выводы вы можете сделать из различных представлений, которые Python предоставляет вам всего несколькими строками кода. Посмотрите, какую историю вы можете рассказать на основе данных. Существует большой выбор наборов данных, доступных из того же места, где я получил данные испытаний антидепрессантов, используемых в этой статье – DASL – The Data And Story Library .
Этот урок охватывают некоторые важные фундаментальные понятия грамотности данных и вводит некоторые мощные инструменты Python , которые можно использовать для изучения и представления данных : – pandas
и matplotlib
библиотеку. Надеюсь, урок был вам полезен.
Удачных вычислений!