Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер
Всем привет, меня зовут Питер~
Тема этой статьи: Сравните SQL и изучите операции Pandas!
При запросе данных в SQL все наши различные операции в основном реализуются посредством комбинированного запроса нескольких ключевых слов, таких как выбор, где и группировка. В этой статье описывается, как реализовать операцию выборки числа через pandas при тех же требованиях.
Сравнить направления
- Запросить все данные
- Топ N
- последний N
- Промежуточные данные
- часть поля
- указать условия равенства
- Задайте условия неравенства
- Отрицательная операция
- Укажите несколько условий
- Укажите формулу расчета
- нечеткий запрос
- Сортировать
- Статистика группы
- взять псевдоним
использованная литература
Поскольку в этой статье в основном рассказывается о том, как получить нужные нам данные с помощью панд, а также о различных методах получения панд, пожалуйста, обратитесь к трем статьям, представленным ранее:
Данные моделирования
В базе данных мы сначала смоделировали 3 части данных:
1. Информационная форма студента
-- 学生信息
mysql> select * from Student;
+------+--------+------------+-------+
| s_id | s_name | s_birth | s_sex |
+------+--------+------------+-------+
| 01 | 赵雷 | 1990-01-01 | 男 |
| 02 | 钱电 | 1990-12-21 | 男 |
| 03 | 孙风 | 1990-05-20 | 男 |
| 04 | 李云 | 1990-08-06 | 男 |
| 05 | 周梅 | 1991-12-01 | 女 |
| 06 | 吴兰 | 1992-03-01 | 女 |
| 07 | 郑竹 | 1989-07-02 | 女 |
| 08 | 王菊 | 1990-01-20 | 女 |
+------+--------+------------+-------+
8 rows in set (0.00 sec)
2. Таблица пользователей
3. Прайс-лист фруктовой продукции
Давайте начнем знакомить с реализацией выборки чисел на основе pandas и SQL при разных требованиях.
извлечь все данные
Реализация SQL
select * from Student;
Реализация панд
Первые N данных
Реализация SQL
Просмотрите первые 5 данных:
Реализация панд
Метод head по умолчанию использует первые 5 элементов:
Укажите для просмотра первых 7 фрагментов данных:
последние N данных
select *
from (select * from Student
order by s_id desc
limit 5)t -- 临时结果表:倒序输出的最后5条
order by s_id; -- 再使用一次排序,将顺序还原
Реализация панд
Метод tail по умолчанию использует последние 5:
Назначить для просмотра 4
данные среза
Реализация SQL
Реализация панд
Используйте срезы в pandas для просмотра данных в непрерывном интервале:
удалить некоторые поля
Реализация SQL
Реализация панд
df1[["id","name","sex"]] # 方式1
df2.filter(items=["id","age","createtime"]) # 方式2
указать условия равенства
Реализация SQL
Реализация панд
df1[df1["sex"] == "男"] # 方式1
df1.query('sex=="男"') # 方式2
Укажите идентификационный номер или возраст:
Задайте условия неравенства
Реализация SQL
select * from Student where s_sex!= "男";
select * from user where age > 18;
select * from user where id <= 3;
Реализация панд
Отрицательная операция
Реализация SQL
mysql> select * from Student where s_sex != "男";
Реализация панд
Укажите несколько условий
Реализация SQL
select * from Student where s_birth <="1991-01-01" and s_sex= "男";
select * from user where age < 20 and fee > 60;
select * from user where age < 20 and fee > 60;
Реализация панд
Укажите формулу расчета
Реализация SQL
select * from user where age % 3 = 0; -- 年龄分别是3或者2的倍数
select * from user where age % 2 = 0;
Реализация панд
нечеткий запрос
Реализация SQL
Ключевое слово для SQL выглядит так:
- левый матч
- правильное совпадение
- полное совпадение
Реализация панд
Сортировать
По умолчанию используется восходящий порядок, который можно указать как убывающий.
Реализация SQL
1. Одно поле
select * from Student order by s_birth desc; -- 改成升序
2. Сортировка нескольких полей
Реализация панд
1. Одно поле
2. Несколько полей
Статистика группы
Реализация SQL
Групповая статистика по группам по:
Реализация панд
Сначала посмотрите на данные df3, фрукт будет соответствовать нескольким ценам, название нашего фрукта — это краткое изложение цены:
df3.groupby("name").agg({"price":"sum"}).reset_index() # 方式1
df3.groupby("name")["price"].sum().reset_index() # 方式2
взять псевдоним
Реализация SQL
Используя ключевое слово as:
select name as 水果, sum(price) as 价格 from products group by name;
Реализация панд
Pandas делает это с помощью функции переименования:
df3.groupby("name").agg({"price":"sum"}).reset_index().rename(columns={"name":"水果","price":"价格"})