Spec-Zone.ru › pandas 0.24

Сравнение с SQL

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

Если вы новичок в pandas, возможно, вам сначала следует ознакомиться с 10 минут с pandas, чтобы познакомиться с библиотекой.

Как обычно, мы импортируем pandas и NumPy следующим образом:

In [1]: import pandas as pd

In [2]: import numpy as np

Большинство примеров будут использовать набор данных tips, который находится в тестах pandas. Мы прочитаем данные в DataFrame под названием tips и предположим, что у нас есть таблица базы данных с таким же именем и структурой.

In [3]: url = ('https://raw.github.com/pandas-dev'
   ...:        '/pandas/master/pandas/tests/data/tips.csv')
   ...: 

In [4]: tips = pd.read_csv(url)

In [5]: tips.head()
Out[5]: 
   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4

SELECT

В SQL выбор осуществляется с помощью списка столбцов, разделенных запятыми, которые вы хотите выбрать (или * для выбора всех столбцов):

SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;

В pandas выбор столбцов выполняется путем передачи списка имен столбцов в DataFrame:

In [6]: tips[['total_bill', 'tip', 'smoker', 'time']].head(5)
Out[6]: 
   total_bill   tip smoker    time
0       16.99  1.01     No  Dinner
1       10.34  1.66     No  Dinner
2       21.01  3.50     No  Dinner
3       23.68  3.31     No  Dinner
4       24.59  3.61     No  Dinner

Вызов DataFrame без списка имен столбцов отобразит все столбцы (аналогично SQL's *).

WHERE

Фильтрация в SQL выполняется с помощью оператора WHERE.

SELECT *
FROM tips
WHERE time = 'Dinner'
LIMIT 5;

DataFrame можно фильтровать несколькими способами; наиболее интуитивный из них — использование булевых индексов.

In [7]: tips[tips['time'] == 'Dinner'].head(5)
Out[7]: 
   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4

Вышеупомянутое утверждение просто передает Series объектов True/False в DataFrame, возвращая все строки с True.

In [8]: is_dinner = tips['time'] == 'Dinner'

In [9]: is_dinner.value_counts()
Out[9]: 
True     176
False     68
Name: time, dtype: int64

In [10]: tips[is_dinner].head(5)

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.24.2/getting_started/comparison/comparison_with_sql.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API