Python Pandas - Сравнение с SQL
Поскольку многие потенциальные пользователи Pandas в некоторой степени знакомы с SQL, эта страница предназначена для предоставления некоторых примеров того, как различные операции SQL могут выполняться с использованием pandas.
import pandas as pd
url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'
tips=pd.read_csv(url)
print tips.head()
это output выглядит следующим образом -
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
ВЫБРАТЬ
В SQL выбор выполняется с использованием списка столбцов, разделенных запятыми, которые вы выбираете (или * для выбора всех столбцов) -
SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;
С Pandas выбор столбца выполняется путем передачи списка имен столбцов в ваш DataFrame -
tips[['total_bill', 'tip', 'smoker', 'time']].head(5)
Проверим полную программу -
import pandas as pd
url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'
tips=pd.read_csv(url)
print tips[['total_bill', 'tip', 'smoker', 'time']].head(5)
это output выглядит следующим образом -
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 *).
ГДЕ
Фильтрация в SQL выполняется с помощью предложения WHERE.
SELECT * FROM tips WHERE time = 'Dinner' LIMIT 5;
DataFrames можно фильтровать несколькими способами; наиболее интуитивно понятным из них является использование логической индексации.
tips[tips['time'] == 'Dinner'].head(5)
Проверим полную программу -
import pandas as pd
url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'
tips=pd.read_csv(url)
print tips[tips['time'] == 'Dinner'].head(5)
это output выглядит следующим образом -
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
Приведенный выше оператор передает серию объектов True / False в DataFrame, возвращая все строки с True.
Группа по
Эта операция извлекает количество записей в каждой группе в наборе данных. Например, запрос, извлекающий количество советов, оставленных по полу -
SELECT sex, count(*)
FROM tips
GROUP BY sex;
Эквивалент Pandas будет -
tips.groupby('sex').size()
Проверим полную программу -
import pandas as pd
url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'
tips=pd.read_csv(url)
print tips.groupby('sex').size()
это output выглядит следующим образом -
sex
Female 87
Male 157
dtype: int64
Первые N строк
SQL возвращает top n rows с помощью LIMIT -
SELECT * FROM tips
LIMIT 5 ;
Эквивалент Pandas будет -
tips.head(5)
Давайте проверим полный пример -
import pandas as pd
url = 'https://raw.github.com/pandas-dev/pandas/master/pandas/tests/data/tips.csv'
tips=pd.read_csv(url)
tips = tips[['smoker', 'day', 'time']].head(5)
print tips
это output выглядит следующим образом -
smoker day time
0 No Sun Dinner
1 No Sun Dinner
2 No Sun Dinner
3 No Sun Dinner
4 No Sun Dinner
Это несколько основных операций, которые мы сравнивали, и которые мы узнали в предыдущих главах библиотеки Pandas.