14 способов, 34 случая: сравните SQL, изучите операции Pandas

Python pandas
14 способов, 34 случая: сравните SQL, изучите операции Pandas

Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер

Всем привет, меня зовут Питер~

Тема этой статьи: Сравните SQL и изучите операции Pandas!

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

Сравнить направления

  1. Запросить все данные
  2. Топ N
  3. последний N
  4. Промежуточные данные
  5. часть поля
  6. указать условия равенства
  7. Задайте условия неравенства
  8. Отрицательная операция
  9. Укажите несколько условий
  10. Укажите формулу расчета
  11. нечеткий запрос
  12. Сортировать
  13. Статистика группы
  14. взять псевдоним

использованная литература

Поскольку в этой статье в основном рассказывается о том, как получить нужные нам данные с помощью панд, а также о различных методах получения панд, пожалуйста, обратитесь к трем статьям, представленным ранее:

Данные моделирования

В базе данных мы сначала смоделировали 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":"价格"})