Рубрики
Без рубрики

Начало с Python для исследования данных

Этот пост был первоначально опубликован в моем блоге как: начинать с Python для исследования данных … Tagged с SQL Server, Python, визуализацией данных.

Этот пост был первоначально опубликован в моем блоге как: Начало с Python для исследования данных

вступление

Чтобы начать с запуска запросов Python с SQL Server, на самом деле довольно просто. Я слишком долго ждал, чтобы справиться с этим, думая, что это было намного сложнее, чем оказалось. Надеемся, что это может быть хорошей отправной точкой для вас.

Зачем мне это делать?

Когда вы используете отличные инструменты, такие как Dbatools с PowerShell, вы думаете, что PowerShell является гражданином первого класса для работы с SQL Server. Это верно в отношении администрации и общего использования. Тем не менее, исследование данных – это другой зверь.

PowerShell & .net Не предназначены для исследования данных ADHOC

Во -первых, они могут? Да. Но только потому, что есть библиотека, созданная для того, чтобы дать вам некоторые из этих функций, сами языки сами являются языками исследования данных первого класса, особенно для Adhoc и исследовательской работы. Я думаю, что большинство согласятся: Нет Анкет

Чтобы быть очень ясным, я знаю, что есть возможности, такие как более новая функция ноутбука PowerShell Data Data PowerShell, и, вероятно, другие модули, которые могут помочь в исследовании. Что я пытаюсь прояснить, так это то, что все это исключения из правила, тогда как исследование в Python является гражданином первоклассного с самого начала. ( исходя из специального наркомана PowerShell 😀)

Традиционно я использовал Azure Data Studio или SQL Management Studio и запускаю индивидуальные запросы в большом сценарии SQL для изучения и манипулирования данными. Однако, как только вы начнете желать поворачиваться, совокупно, суммировать и выполнять различные другие экспериментальные действия, T-SQL может быть чрезмерным, чтобы сделать это для этой работы. Тот факт, что вы можете сделать Unpivot, это не означает, что это более умное использование времени, чем использование поворотной таблицы в Excel для работы Adhoc (так же, как мне больно говорить).

💡 Azure Data Studio добивается большого прогресса в ноутбуках на основе SQL Server, которые я настоятельно рекомендую проверить. Это все еще в зачаточном состоянии. Так что, хотя это очень полезно для оснований, если вы хотите придерживаться сценариста для изучения, Python будет превосходным. Я полагаю, что совсем недавно доступны кодовые ячейки на основе PowerShell.

Тем не менее, даже лучше, чем играть с данными в листе Excel, что, если вы хотите остаться в своем программном сценарии и начать нарезку и нарезать настройки данных, возвращающихся, в формируя «аккуратные данные» для того, что вы хотите проанализировать?

PowerShell и .net не имеют интуитивных и экспериментальных возможностей разведки данных, которые существуют в течение долгого времени в библиотеках Python. Они могут легко манипулировать, группировать, формировать и визуализировать данные с минимальными усилиями. Это сильная сторона библиотек Python, и она имеет гораздо большую зрелость, чем какая -то домашняя растворная работа.

Няневые блокноты

Я придерживаюсь кода Visual Studio, поэтому установите расширение Python ms-python.python а затем создайте новую ноутбук прямо из командной палиты. После того, как вы открываете это, вы сможете начать писать несколько заметок на уценке, а затем запустить запросы и визуализировать результаты в одном месте.

Библиотека Python

Стандартные библиотеки довольно хороши. Я хотел что -то, что также создало графики, которые я бы посчитал приятным. По умолчанию matplotlib На самом деле не то, что я искал, поэтому я использовал Старший Анкет Эта фантастическая библиотека имеет экспресс -издание, которое заставляет вас работать за считанные минуты, играя с данными, и даже может преобразовать ваши визуализации в хорошую панель панели веб -приложений с Dash (Также подушечный продукт).

Панды

В дополнение к работе с Старший Я использовал Панды . Я думаю, что из -за своей первоначальной работы с этим, что эта библиотека станет одним из основных продуктов для моих Adhoc Data Dable Dably. Это в основном обеспечивает приятный простой способ работать с DataFrames , что похоже на работу с .net DataTable , хотя и многие встроенные в него расширяемость, экспорт и другие функции. Я нашел это интуитивно понятным и довольно легко работать.

Установка PYODBC

💡 Это руководство написано для человека, использующего среду разработки на основе Windows. Требования к настройке для запуска в Linux/Mac будут отличаться для драйверов для работы в AWS Lambda во время выполнения Python, существуют более сложные проблемы, требующие сбора драйвера и загрузки на уровень лямбда для использования. Windows Dev Machine не имеет этого требования и должна просто работать после запуска установки драйвера ODBC и PYODBC. 🎉

  1. Ссылка для драйверов SQL Server ODBC
  2. PIP3 Установить PYODBC

Генерировать файл подключения

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

Я нашел несколько отличных примеров в Интернете и собрал это вместе из нескольких.

import configparser
import keyring
import xlsxwriter

service_account = "DomainOfTheTaco\\TacoEater"
sql_login_name = "TACO-HIGH-PRIEST"
sql_instance = "TACO-SERVER-01"

driver_name = ''
driver_names = [x for x in pyodbc.drivers() if x.endswith(' for SQL Server')]
print("The following ODBC drivers were identified on your system")
print(driver_names)

if driver_names:
    driver_name = driver_names[0]
if driver_name:
    config = configparser.ConfigParser()
    config['SQL_SERVER'] = {
                            'DRIVER': driver_name,
                            'SERVER': sql_instance,
                            'DATABASE': "master",
                            'Trusted_Connection': 'yes',
                            "APP": "PythonTamer",
                            "UID": sql_login_name,
                            "PWD": keyring.get_password(service_account,service_account)
    }
    with open('db_connect.ini', 'w') as configfile:
        config.write(configfile)
else:
    print('(No suitable driver found. Cannot connect.)')

Поскольку у меня было 2 версии драйверов ODBC, это то, что появилось:

The following ODBC drivers were identified on your system
['ODBC Driver 13 for SQL Server', 'ODBC Driver 17 for SQL Server']

Это сгенерировало файл подключения, который я мог бы использовать в других файлах PY, которые я хотел. Файл, сгенерированный в моем пользовательском каталоге $ Env: userprofile Анкет

[SQL_SERVER]
driver = ODBC Driver 17 for SQL Server
server = TACO-SERVER-01
database = master
trusted_connection = yes
app = PythonTamer
uid = TACO-HIGH-PRIEST
pwd = redactedtacos

Затем это можно использовать в файлах Python, как ниже

import configparser
import pyodbc
import pandas

config = configparser.ConfigParser()
config.read('db_connect.ini')
constr = 'DRIVER={{{drv}}};SERVER={srv};DATABASE={db};Trusted_Connection={tc};APP={app};UID={uid};PWD={pwd}'\
              .format(drv=config['SQL_SERVER']['DRIVER'],
                      srv=config['SQL_SERVER']['SERVER'],
                      db=config['SQL_SERVER']['DATABASE'],
                      tc=config['SQL_SERVER']['Trusted_Connection'],
                      app=config['SQL_SERVER']['APP'],
                      uid=config['SQL_SERVER']['UID'],
                      pwd=config['SQL_SERVER']['PWD']
                      )

cnxn = pyodbc.connect(constr)

Этот объект подключения позволил бы выполнить запуск запросов, аналогичных выполнению Ado.net Запросы.

out_xlsx = "C://temp//python-sql-export.xlsx"
cnxn = pyodbc.connect(constr)
result = pd.read_sql("""
select
    name
from
    sys.databases
""",cnxn)
print(result)

print(f"Exporting to {out_xlsx}")
data_frame = pd.DataFrame(result)
data_frame.to_excel(out_xlsx, index = None, header=True)
print("finished query")

Чтобы попробовать в своем записном книжке несколько случайных записей, попробуйте это

data_frame.sample(n=20,random_state=1)

После этого должна быть экспортирована рабочая тетрадь Excel. Это было даже более лаконично, чем использование ImportExcel PowerShell Module, который мой нормальный ход.

Групповые результаты в диапазонах

import plotly.express as px

# How many results are being returned?
print(len(data_frame.value))

# These are the buckets I want to return results in
# Ie, how many of my results fit into the 0-250 range, and how many 500. These are not fixed ranges.
# Histograms do this type of work as well, I'm showing the grouping overriden at specific ranges with a dataframe in Pandas.

ranges = [0,250,500,1000,2000,3000,4000,5000,6000,7000,10000]
groupby = data_frame.groupby(pd.cut(data_frame.value, ranges)).count()
print(groupby)

# Plotly express visualization
fig = px.histogram(data_frame, x="time", y="value",title='MyFancyTitle')
fig.show()
               time  metric  value
value
(0, 250]       1652    1652   1652
(250, 500]       22      22     22
(500, 1000]      10      10     10
(1000, 2000]      9       9      9
(2000, 3000]      2       2      2
(3000, 4000]      1       1      1
(4000, 5000]      5       5      5
(5000, 6000]      9       9      9
(6000, 7000]      2       2      2
(7000, 10000]     1       1      1

Это довольно круто, так как, хотя вы можете сделать это с помощью функций Windowing в SQL Server, для работы Adhoc я смог сделать это в 2 строках. Это может сэкономить много времени и отладки по сравнению с более сложными T-SQL Procs.

ScatterChart

Я никогда не использовал ScatterCharts, я вижу в исследовании данных, они могут быть чрезвычайно ценным инструментом.

print(len(data_frame.value))
fig = px.scatter(data_frame, x="metric", y="value",title='MyFancyTitle',size="value",render_mode="auto",marginal_y="rug",marginal_x="histogram")
fig.show()

Быстрый пример

pip3 install pydataset #optional for more than iris data
from pydataset import data
titanic = data('titanic')
print(titanic.sample(n=20,random_state=1))

Это приводит к выводу, как изображение ниже

Чтобы генерировать более продвинутую визуализацию, вы можете запустить что -то, чтобы визуализировать с помощью Старший Анкет

import pandas
import plotly.express as px
from pydataset import data

df = data('iris')
df.sample(n=10,random_state=1)

print(len(df))
fig = px.scatter(df, x="Petal.Width", y="Sepal.Width",title='Iris Data Example',render_mode="auto",marginal_y="rug",marginal_x="histogram")
fig.show()

Заворачивать

Множество отличных вариантов визуализации данных с помощью Python 😀. Я определенно буду тратить больше времени на изучение того, как манипулировать и запросить наборы данных с помощью Python, и в конечном итоге давлю Dash, а также попробуйте. Мне понравилась Графана, но она действительно предназначена для мониторинга временных рядов, а не для гибких вариантов визуализации данных, которые можно так легко сделать в Python.

Надеемся, что это дало вам хорошее начало с некоторых преимуществ и простоты использования Python, если вы, как и я, выехали из тяжелого фона PowerShell и SQL Server и хотели узнать больше о Python. 🌮

Оригинал: “https://dev.to/sheldonhull/getting-starting-with-python-for-data-exploration-hfa”