Когда я начал изучать анализ данных несколько лет назад, первым делом я изучил SQL и Pandas. Для аналитика данных крайне важно иметь прочную основу для работы с SQL и Pandas. Оба являются мощными инструментами, которые помогают аналитикам данных эффективно анализировать данные, хранящиеся в базах данных, и манипулировать ими.
Обзор SQL и Pandas
SQL (язык структурированных запросов) — это язык программирования, используемый для управления реляционными базами данных и управления ими. С другой стороны, Pandas — это библиотека Python, используемая для обработки и анализа данных.
Анализ данных предполагает работу с большими объемами данных, и для хранения этих данных часто используются базы данных. SQL и Pandas предоставляют мощные инструменты для работы с базами данных, позволяя аналитикам данных эффективно извлекать, обрабатывать и анализировать данные. Используя эти инструменты, аналитики данных могут получить ценную информацию из данных, которую иначе было бы трудно получить.
В этой статье мы рассмотрим, как использовать SQL и Pandas для чтения и записи в базу данных.
Подключение к БД
Установка библиотек
Мы должны сначала установить необходимые библиотеки, прежде чем мы сможем подключиться к базе данных SQL с помощью Pandas. Требуются две основные библиотеки: Pandas и SQLAlchemy. Pandas — это популярная библиотека для работы с данными, которая позволяет хранить большие структуры данных, как упоминалось во введении. Напротив, SQLAlchemy предоставляет API для подключения к базе данных SQL и взаимодействия с ней.
Мы можем установить обе библиотеки с помощью диспетчера пакетов Python, pip, выполнив следующие команды в командной строке.
$ pip install pandas
$ pip install sqlalchemy
Создание соединения
После установки библиотек мы можем использовать Pandas для подключения к базе данных SQL.
Для начала мы создадим объект механизма SQLAlchemy с create_engine()
, create_engine()
Функция подключает код Python к базе данных. Он принимает в качестве аргумента строку подключения, в которой указывается тип базы данных и сведения о подключении. В этом примере мы будем использовать тип базы данных SQLite и путь к файлу базы данных.
Создайте объект механизма для базы данных SQLite, используя приведенный ниже пример:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db')
Если файл базы данных SQLite, student.db в нашем случае, находится в том же каталоге, что и скрипт Python, мы можем напрямую использовать имя файла, как показано ниже.
engine = create_engine('sqlite:///student.db')
Чтение файлов SQL с помощью Pandas
Давайте прочитаем данные теперь, когда мы установили соединение. В этом разделе мы рассмотрим read_sql
, read_sql_table
и read_sql_query
функции и как их использовать для работы с базой данных.
Выполнение SQL-запросов с помощью Panda read_sql() Функция
Ассоциация read_sql()
— это библиотечная функция Pandas, которая позволяет нам выполнять SQL-запрос и извлекать результаты в кадр данных Pandas. read_sql()
Функция связывает SQL и Python, позволяя нам использовать преимущества обоих языков. Функция обертывает read_sql_table()
и read_sql_query()
, read_sql()
функция внутренне маршрутизируется на основе предоставленного ввода, что означает, что если ввод предназначен для выполнения SQL-запроса, он будет перенаправлен на read_sql_query()
, и если это таблица базы данных, она будет перенаправлена на read_sql_table()
.
Ассоциация read_sql()
синтаксис следующий:
pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)
Требуются параметры SQL и con; остальные опциональны. Однако мы можем манипулировать результатом, используя эти необязательные параметры. Рассмотрим подробнее каждый параметр.
sql
: SQL-запрос или имя таблицы базы данныхcon
: объект подключения или URL-адрес подключения.index_col
: этот параметр позволяет нам использовать один или несколько столбцов из результата SQL-запроса в качестве индекса фрейма данных. Он может принимать либо один столбец, либо список столбцов.coerce_float
: этот параметр указывает, следует ли преобразовывать нечисловые значения в числа с плавающей запятой или оставлять их в виде строк. По умолчанию установлено значение true. Если возможно, он преобразует нечисловые значения в типы с плавающей запятой.params
: параметры обеспечивают безопасный метод передачи динамических значений в SQL-запрос. Мы можем использовать параметр params для передачи словаря, кортежа или списка. В зависимости от базы данных синтаксис параметров различается.parse_dates
: это позволяет нам указать, какой столбец в результирующем фрейме данных будет интерпретироваться как дата. Он принимает один столбец, список столбцов или словарь с ключом в качестве имени столбца и значением в качестве формата столбца.columns
: Это позволяет нам извлекать только выбранные столбцы из списка.chunksize
: при работе с большим набором данных важен размер фрагмента. Он извлекает результат запроса меньшими порциями, повышая производительность.
Вот пример того, как использовать read_sql()
:
Код:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db') df = pd.read_sql("SELECT * FROM Student", engine, index_col='Roll Number', parse_dates='dateOfBirth')
print(df)
print("The Data type of dateOfBirth: ", df.dateOfBirth.dtype) engine.dispose()
Вывод:
firstName lastName email dateOfBirth
rollNumber
1 Mark Simson 2000-02-23
2 Peter Griffen 2001-04-15
3 Meg Aniston 2001-09-20
Date type of dateOfBirth: datetime64[ns]
После подключения к базе данных мы выполняем запрос, который возвращает все записи из базы данных. Student
таблицу и сохраняет их в DataFrame df
. Столбец «Roll Number» преобразуется в индекс с помощью index_col
параметр, а тип данных «dateOfBirth» — «datetime64[ns]» из-за parse_dates
. Мы можем использовать read_sql()
не только для извлечения данных, но и для выполнения других операций, таких как вставка, удаление и обновление. read_sql()
является универсальной функцией.
Загрузка определенных таблиц или представлений из БД
Загрузка определенной таблицы или представления с помощью Pandas read_sql_table()
— это еще один метод чтения данных из базы данных в фрейм данных Pandas.
Что такое read_sql_table?
Библиотека Pandas предоставляет read_sql_table
функция, которая специально разработана для чтения всей таблицы SQL без выполнения каких-либо запросов и возврата результата в виде кадра данных Pandas.
Синтаксис read_sql_table()
как показано ниже:
pandas.read_sql_table(table_name, con, schema=None, index_col=None, coerce_float=True, parse_dates=None, columns=None, chunksize=None)
За исключением table_name
и схеме параметры объясняются так же, как read_sql()
.
table_name
: Параметрtable_name
имя таблицы SQL в базе данных.schema
: этот необязательный параметр является именем схемы, содержащей имя таблицы.
После создания подключения к базе данных мы будем использовать read_sql_table
функция для загрузки Student
таблицу в Pandas DataFrame.
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db') df = pd.read_sql_table('Student', engine)
print(df.head()) engine.dispose()
Вывод:
rollNumber firstName lastName email dateOfBirth
0 1 Mark Simson 2000-02-23
1 2 Peter Griffen 2001-04-15
2 3 Meg Aniston 2001-09-20
Предположим, что это большая таблица, которая может интенсивно использовать память. Давайте рассмотрим, как мы можем использовать chunksize
параметр для решения этой проблемы.
Ознакомьтесь с нашим практическим руководством по изучению Git с рекомендациями, принятыми в отрасли стандартами и прилагаемой памяткой. Перестаньте гуглить команды Git и на самом деле изучить это!
Код:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db') df_iterator = pd.read_sql_table('Student', engine, chunksize = 1) for df in df_iterator: print(df.head()) engine.dispose()
Вывод:
rollNumber firstName lastName email dateOfBirth
0 1 Mark Simson 2000-02-23
0 2 Peter Griffen 2001-04-15
0 3 Meg Aniston 2001-09-20
Имейте в виду, что chunksize
Я использую здесь 1, потому что в моей таблице всего 3 записи.
Запрос к БД напрямую с синтаксисом SQL Pandas
Извлечение информации из базы данных является важной частью для аналитиков данных и ученых. Для этого мы будем использовать read_sql_query()
функции.
Что такое read_sql_query()?
Использование панд read_sql_query()
мы можем запускать SQL-запросы и получать результаты непосредственно в DataFrame. read_sql_query()
функция создана специально для SELECT
заявления. Его нельзя использовать для каких-либо других операций, таких как DELETE
or UPDATE
.
Синтаксис:
pandas.read_sql_query(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, chunksize=None, dtype=None, dtype_backend=_NoDefault.no_default)
Все описания параметров совпадают с read_sql()
функция. Вот пример read_sql_query()
:
Код:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db') df = pd.read_sql_query('Select firstName, lastName From Student Where rollNumber = 1', engine)
print(df) engine.dispose()
Вывод:
firstName lastName
0 Mark Simson
Написание файлов SQL с помощью Pandas
Предположим, при анализе данных мы обнаружили, что необходимо изменить несколько записей или требуется новая таблица или представление с данными. Чтобы обновить или вставить новую запись, одним из способов является использование read_sql()
и написать запрос. Однако этот метод может быть длительным. Панды предоставляют отличный метод под названием to_sql()
для подобных ситуаций.
В этом разделе мы сначала создадим новую таблицу в базе данных, а затем отредактируем существующую.
Создание новой таблицы в базе данных SQL
Прежде чем мы создадим новую таблицу, давайте сначала обсудим to_sql()
в деталях.
Что такое to_sql()?
Ассоциация to_sql()
Функция библиотеки Pandas позволяет нам записывать или обновлять базу данных. to_sql()
Функция может сохранять данные DataFrame в базу данных SQL.
Синтаксис для to_sql()
:
DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None, method=None)
Только name
и con
параметры обязательны для запуска to_sql()
; однако другие параметры обеспечивают дополнительную гибкость и возможности настройки. Рассмотрим подробно каждый параметр:
name
: имя создаваемой или изменяемой таблицы SQL.con
: объект подключения к базе данных.schema
: Схема таблицы (необязательно).if_exists
: Значение по умолчанию для этого параметра — «сбой». Этот параметр позволяет нам решить, какое действие следует предпринять, если таблица уже существует. Варианты включают «сбой», «заменить» и «добавить».index
: параметр index принимает логическое значение. По умолчанию установлено значение True, что означает, что индекс DataFrame будет записан в таблицу SQL.index_label
: этот необязательный параметр позволяет указать метку столбца для столбцов индекса. По умолчанию индекс записывается в таблицу, но с помощью этого параметра можно указать конкретное имя.chunksize
: количество строк, записываемых за раз в базу данных SQL.dtype
: этот параметр принимает словарь с ключами в качестве имен столбцов и значениями в качестве их типов данных.method
: Параметр метода позволяет указать метод, используемый для вставки данных в SQL. По умолчанию установлено значение «Нет», что означает, что панды найдут наиболее эффективный способ на основе базы данных. Существует два основных варианта параметров метода:multi
: позволяет вставлять несколько строк в один SQL-запрос. Однако не все базы данных поддерживают многострочную вставку.- Вызываемая функция: Здесь мы можем написать пользовательскую функцию для вставки и вызвать ее, используя параметры метода.
Вот пример использования to_sql()
:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db') data = {'Name': ['Paul', 'Tom', 'Jerry'], 'Age': [9, 8, 7]}
df = pd.DataFrame(data) df.to_sql('Customer', con=engine, if_exists='fail') engine.dispose()
В базе данных создается новая таблица «Клиент» с двумя полями «Имя» и «Возраст».
Снимок базы данных:
Обновление существующих таблиц с помощью фреймов данных Pandas
Обновление данных в базе данных — сложная задача, особенно при работе с большими данными. Однако, используя to_sql()
Функция в Pandas может значительно упростить эту задачу. Чтобы обновить существующую таблицу в базе данных, to_sql()
можно использовать с функцией if_exists
параметр установлен на «заменить». Это перезапишет существующую таблицу новыми данными.
Вот пример to_sql()
который обновляет ранее созданный Customer
стол. Предположим, в Customer
мы хотим обновить возраст клиента по имени Пол с 9 до 10 лет. Для этого сначала мы можем изменить соответствующую строку в DataFrame, а затем использовать to_sql()
Функция обновления базы данных.
Код:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db') df = pd.read_sql_table('Customer', engine) df.loc[df['Name'] == 'Paul', 'Age'] = 10 df.to_sql('Customer', con=engine, if_exists='replace') engine.dispose()
В базе обновляется возраст Павла:
Заключение
В заключение, Pandas и SQL являются мощными инструментами для задач анализа данных, таких как чтение и запись данных в базу данных SQL. Pandas предоставляет простой способ подключения к базе данных SQL, чтения данных из базы данных в фрейм данных Pandas и записи данных фрейма данных обратно в базу данных.
Библиотека Pandas позволяет легко манипулировать данными в кадре данных, тогда как SQL предоставляет мощный язык для запроса данных в базе данных. Использование Pandas и SQL для чтения и записи данных может сэкономить время и усилия в задачах анализа данных, особенно когда данные очень большие. В целом, совместное использование SQL и Pandas может помочь аналитикам данных и ученым оптимизировать рабочий процесс.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- ПлатонАйСтрим. Анализ данных Web3. Расширение знаний. Доступ здесь.
- Чеканка будущего с Эдриенн Эшли. Доступ здесь.
- Покупайте и продавайте акции компаний PREIPO® с помощью PREIPO®. Доступ здесь.
- Источник: https://stackabuse.com/reading-and-writing-sql-files-in-pandas/
- :является
- :нет
- :куда
- 1
- 10
- 12
- 20
- 8
- 9
- a
- Принимает
- Действие
- на самом деле
- дополнительный
- адрес
- плюс
- возраст
- тому назад
- Все
- Позволяющий
- позволяет
- уже
- причислены
- изменен
- суммы
- an
- анализ
- аналитик
- Аналитики
- анализировать
- анализ
- и
- Другой
- любой
- API
- МЫ
- аргумент
- гайд
- AS
- At
- назад
- основанный
- колотить
- BE
- , так как:
- до
- начинать
- ниже
- граница
- изоферменты печени
- строить
- но
- by
- призывают
- под названием
- CAN
- не могу
- случаев
- ближе
- код
- Column
- Колонки
- комплекс
- заключение
- Свяжитесь
- Соединительный
- связи
- подключает
- контраст
- переделанный
- соответствующий
- Создайте
- создали
- Создающий
- решающее значение
- изготовленный на заказ
- клиент
- настройка
- данным
- анализ данных
- набор данных
- База данных
- базы данных
- Время
- занимавшийся
- решать
- По умолчанию
- в зависимости
- предназначенный
- подробность
- подробнее
- трудный
- непосредственно
- открытый
- обсуждать
- do
- два
- динамический
- каждый
- легче
- легко
- эффективный
- эффективно
- усилие
- или
- Двигатель
- повышение
- Весь
- особенно
- установленный
- пример
- выполнять
- проведение
- существующий
- существует
- объяснены
- Больше
- извлечение
- FAIL
- несколько
- Поля
- Файл
- Файлы
- Найдите
- Во-первых,
- Трансформируемость
- Поплавок
- плавающий
- Фокус
- после
- следующим образом
- Что касается
- формат
- Год основания
- КАДР
- от
- функция
- Функции
- Gain
- получить
- идти
- данный
- большой
- инструкция
- рука
- практический
- Есть
- помощь
- здесь
- зависать
- Как
- How To
- Однако
- HTTPS
- i
- if
- важную
- in
- включают
- включены
- индекс
- вход
- размышления
- устанавливать
- установлен
- взаимодействующий
- внутренне
- в
- Введение
- вопрос
- IT
- Сохранить
- Основные
- ключи
- этикетка
- язык
- Языки
- большой
- узнали
- изучение
- оставил
- позволять
- Кредитное плечо
- Используя
- LG
- библиотеки
- Библиотека
- такое как
- Список
- ll
- загрузка
- посмотреть
- Главная
- сделать
- ДЕЛАЕТ
- управлять
- менеджер
- обязательный
- Манипуляция
- отметка
- смысл
- означает
- упомянутый
- метод
- против
- модифицировало
- изменять
- БОЛЕЕ
- самых
- много
- с разными
- должен
- my
- имя
- Названный
- имена
- необходимо
- Необходимость
- Новые
- сейчас
- номер
- номера
- объект
- получать
- of
- .
- on
- ONE
- только
- Операционный отдел
- Опции
- or
- Другое
- в противном случае
- наши
- внешний
- выходной
- общий
- пакет
- панд
- параметр
- параметры
- часть
- особенно
- pass
- Прохождение
- путь
- Пол
- Выполнять
- производительность
- Питер
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- Популярное
- возможное
- мощностью
- мощный
- практическое
- предварительно
- Программирование
- защищенный
- обеспечивать
- при условии
- приводит
- Питон
- Запросы
- Читать
- Reading
- запись
- учет
- замещать
- обязательный
- ОТДЫХ
- результат
- в результате
- Итоги
- возвращают
- Возвращает
- кольцо
- Катить
- РЯД
- Run
- Бег
- s
- то же
- Сохранить
- Ученые
- Раздел
- безопасный
- выбранный
- набор
- Shadow
- лист
- должен
- показанный
- одинарной
- обстоятельства
- меньше
- Снимок
- So
- конкретный
- конкретно
- Стекабьюс
- стандартов
- и политические лидеры
- отчетность
- Stop
- диск
- магазин
- хранить
- магазины
- упорядочить
- строка
- сильный
- структурированный
- "Студент"
- такие
- поддержка
- синтаксис
- ТАБЛИЦЫ
- взять
- приняты
- принимает
- Сложность задачи
- задачи
- который
- Ассоциация
- их
- Их
- тогда
- Там.
- Эти
- задача
- этой
- время
- в
- вместе
- инструменты
- переход
- правда
- два
- напишите
- Типы
- Обновление ПО
- обновление
- Updates
- us
- использование
- используемый
- через
- ценный
- ценностное
- Наши ценности
- Ve
- очень
- Вид
- Просмотры
- хотеть
- законопроект
- Путь..
- we
- когда
- будь то
- , которые
- будете
- без
- Работа
- рабочий
- работает
- бы
- записывать
- письмо
- письменный
- лет
- зефирнет