Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции / 10. Датафреймы pandas - Jupyter Notebook

.pdf
Скачиваний:
44
Добавлен:
15.12.2022
Размер:
2.39 Mб
Скачать

12.11.2022, 11:38

10. Датафреймы pandas - Jupyter Notebook

М141БПЛТЛ066 10 М141БПЛТЛ043 5 М141БПЛТЛ084 7 М141БПЛТЛ005 7 М141БПЛТЛ044 5 13051038 4

Name: Mstat, dtype: int64

Ещё столбец можно выбрать, не используя квадратные скобки, а просто указав его название через точку:

127.0.0.1:8888/notebooks/EXONTOOLS/2/Доп. занятия/10. Датафреймы pandas.ipynb

11/42

12.11.2022, 11:38

10. Датафреймы pandas - Jupyter Notebook

In [22]:

df.Mstat

Out[22]:

id

М141БПЛТЛ024 9 М141БПЛТЛ031 10 М141БПЛТЛ075 9 М141БПЛТЛ017 9 М141БПЛТЛ069 10 М141БПЛТЛ072 9 М141БПЛТЛ020 7 М141БПЛТЛ026 10 М141БПЛТЛ073 9 М141БПЛТЛ078 6 М141БПЛТЛ060 8 М141БПЛТЛ040 9 М141БПЛТЛ065 9 М141БПЛТЛ053 7 М141БПЛТЛ015 9 М141БПЛТЛ021 9 М141БПЛТЛ018 7 М141БПЛТЛ039 8 М141БПЛТЛ036 10 М141БПЛТЛ049 7 06114043 8 М141БПЛТЛ048 6 М141БПЛТЛ034 9 М141БПЛТЛ045 8 М141БПЛТЛ033 9 М141БПЛТЛ083 5 М141БПЛТЛ008 8 М141БПЛТЛ001 7 М141БПЛТЛ038 9 М141БПЛТЛ052 7 М141БПЛТЛ011 6 М141БПЛТЛ004 7 М141БПЛТЛ010 6 М141БПЛТЛ071 9 М141БПЛТЛ035 6 М141БПЛТЛ030 6 М141БПЛТЛ070 5 М141БПЛТЛ051 9 М141БПЛТЛ046 7 М141БПЛТЛ047 8 М141БПЛТЛ063 5 М141БПЛТЛ029 8 М141БПЛТЛ064 8 М141БПЛТЛ076 7 М141БПЛТЛ062 7 М141БПЛТЛ074 6 130232038 7 М141БПЛТЛ023 9 М141БПЛТЛ054 8 М141БПЛТЛ012 6 М141БПЛТЛ006 5 М141БПЛТЛ055 5 М141БПЛТЛ007 7 М141БПЛТЛ050 6

127.0.0.1:8888/notebooks/EXONTOOLS/2/Доп. занятия/10. Датафреймы pandas.ipynb

12/42

12.11.2022, 11:38

10. Датафреймы pandas - Jupyter Notebook

М141БПЛТЛ066 10 М141БПЛТЛ043 5 М141БПЛТЛ084 7 М141БПЛТЛ005 7 М141БПЛТЛ044 5 13051038 4

Name: Mstat, dtype: int64

Однако такой способ не универсален. В случае, если в названии столбца используются недопустимые для переменных символы (пробелы, тире, кириллические буквы), этот метод не подойдет.

Если нам нужно выбрать более одного столбца, то названия столбцов указываются внутри списка – появляются двойные квадратные скобки:

127.0.0.1:8888/notebooks/EXONTOOLS/2/Доп. занятия/10. Датафреймы pandas.ipynb

13/42

12.11.2022, 11:38

10. Датафреймы pandas - Jupyter Notebook

In [23]:

df2[["Soc", "Polsoc"]]

Out[23]:

 

Soc

Polsoc

id

 

 

 

 

 

М141БПЛТЛ024

8

9

М141БПЛТЛ031

10

10

М141БПЛТЛ075

9

9

М141БПЛТЛ017

8

9

М141БПЛТЛ069

10

9

М141БПЛТЛ072

8

9

М141БПЛТЛ020

7

9

М141БПЛТЛ026

8

8

М141БПЛТЛ073

8

9

М141БПЛТЛ078

9

9

М141БПЛТЛ060

7

8

М141БПЛТЛ040

8

8

М141БПЛТЛ065

8

10

М141БПЛТЛ053

7

8

М141БПЛТЛ015

7

7

М141БПЛТЛ021

8

6

М141БПЛТЛ018

9

8

М141БПЛТЛ039

9

9

М141БПЛТЛ036

7

7

М141БПЛТЛ049

6

9

06114043

10

9

М141БПЛТЛ048

8

8

М141БПЛТЛ034

7

6

М141БПЛТЛ045

8

8

М141БПЛТЛ033

8

8

М141БПЛТЛ083

6

7

М141БПЛТЛ008

8

9

М141БПЛТЛ001

7

8

М141БПЛТЛ038

6

8

М141БПЛТЛ052

7

7

М141БПЛТЛ011

8

7

М141БПЛТЛ004

6

6

М141БПЛТЛ010

7

8

М141БПЛТЛ071

7

7

127.0.0.1:8888/notebooks/EXONTOOLS/2/Доп. занятия/10. Датафреймы pandas.ipynb

14/42

12.11.2022, 11:38

 

 

10. Датафреймы pandas - Jupyter Notebook

 

 

Soc

Polsoc

 

id

 

 

 

 

 

 

 

 

 

М141БПЛТЛ035

7

7

 

 

М141БПЛТЛ030

6

5

 

 

М141БПЛТЛ070

6

5

 

 

М141БПЛТЛ051

8

6

 

 

М141БПЛТЛ046

7

7

 

 

М141БПЛТЛ047

6

6

 

 

М141БПЛТЛ063

6

5

 

 

М141БПЛТЛ029

8

8

 

 

М141БПЛТЛ064

6

4

 

 

М141БПЛТЛ076

8

8

 

 

М141БПЛТЛ062

7

6

 

 

М141БПЛТЛ074

7

8

 

130232038

6

5

 

 

М141БПЛТЛ023

6

7

 

 

М141БПЛТЛ054

6

8

 

 

М141БПЛТЛ012

7

7

 

 

М141БПЛТЛ006

6

7

 

 

М141БПЛТЛ055

6

6

 

 

М141БПЛТЛ007

7

6

 

 

М141БПЛТЛ050

6

6

 

 

М141БПЛТЛ066

7

6

 

 

М141БПЛТЛ043

6

5

 

 

М141БПЛТЛ084

8

4

 

 

М141БПЛТЛ005

5

5

 

 

М141БПЛТЛ044

7

4

 

13051038

4

4

 

Если нам нужно несколько столбцов подряд, начиная с одного названия и заканчивая другим, можно воспользоваться методом .loc :

127.0.0.1:8888/notebooks/EXONTOOLS/2/Доп. занятия/10. Датафреймы pandas.ipynb

15/42

12.11.2022, 11:38

10. Датафреймы pandas - Jupyter Notebook

In [24]:

df.loc[:, 'Econ' : 'Law']

Out[24]:

 

Econ

Eng

Polth

Mstat2

Phist

Law

id

 

 

 

 

 

 

 

 

 

 

 

 

 

М141БПЛТЛ024

8

9

8

10

8.0

7

М141БПЛТЛ031

10

10

10

10

9.0

9

М141БПЛТЛ075

10

9

10

9

8.0

9

М141БПЛТЛ017

8

9

9

10

6.0

9

М141БПЛТЛ069

10

10

10

9

8.0

8

М141БПЛТЛ072

10

9

8

9

8.0

8

М141БПЛТЛ020

6

9

10

8

8.0

7

М141БПЛТЛ026

7

10

7

9

8.0

8

М141БПЛТЛ073

8

9

8

9

8.0

8

М141БПЛТЛ078

5

6

10

7

6.0

8

М141БПЛТЛ060

7

9

8

8

5.0

7

М141БПЛТЛ040

6

9

7

8

6.0

9

М141БПЛТЛ065

4

8

8

7

9.0

8

М141БПЛТЛ053

5

9

8

7

8.0

8

М141БПЛТЛ015

6

9

7

9

4.0

7

М141БПЛТЛ021

8

9

8

8

7.0

7

М141БПЛТЛ018

7

9

7

8

6.0

6

М141БПЛТЛ039

8

8

8

6

8.0

7

М141БПЛТЛ036

8

8

6

9

4.0

8

М141БПЛТЛ049

6

8

6

8

4.0

8

06114043

5

8

8

8

10.0

7

М141БПЛТЛ048

6

9

6

4

4.0

6

М141БПЛТЛ034

6

9

6

8

6.0

7

М141БПЛТЛ045

7

8

6

7

6.0

7

М141БПЛТЛ033

7

9

7

9

7.0

7

М141БПЛТЛ083

5

8

7

6

5.0

7

М141БПЛТЛ008

9

8

10

9

8.0

9

М141БПЛТЛ001

4

10

7

7

6.0

8

М141БПЛТЛ038

4

9

6

7

6.0

7

М141БПЛТЛ052

7

8

6

6

6.0

8

М141БПЛТЛ011

6

9

6

6

5.0

6

М141БПЛТЛ004

6

8

6

6

5.0

5

М141БПЛТЛ010

6

9

7

7

6.0

7

М141БПЛТЛ071

7

9

6

8

4.0

6

127.0.0.1:8888/notebooks/EXONTOOLS/2/Доп. занятия/10. Датафреймы pandas.ipynb

16/42

12.11.2022, 11:38

 

 

 

 

10. Датафреймы pandas - Jupyter Notebook

 

 

Econ

Eng

Polth

Mstat2

Phist

Law

 

id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М141БПЛТЛ035

6

8

5

5

4.0

6

 

 

М141БПЛТЛ030

6

7

6

6

4.0

8

 

 

М141БПЛТЛ070

4

8

6

5

5.0

6

 

 

М141БПЛТЛ051

6

8

7

6

7.0

6

 

 

М141БПЛТЛ046

4

7

5

8

5.0

7

 

 

М141БПЛТЛ047

4

7

5

9

5.0

6

 

 

М141БПЛТЛ063

4

8

4

4

4.0

5

 

 

М141БПЛТЛ029

7

9

5

6

7.0

6

 

 

М141БПЛТЛ064

7

6

6

8

4.0

6

 

 

М141БПЛТЛ076

6

8

6

6

6.0

8

 

 

М141БПЛТЛ062

6

9

6

6

5.0

6

 

 

М141БПЛТЛ074

4

7

6

5

6.0

6

 

130232038

5

8

4

8

4.0

8

 

 

М141БПЛТЛ023

8

9

6

9

4.0

7

 

 

М141БПЛТЛ054

4

8

6

4

4.0

6

 

 

М141БПЛТЛ012

4

10

6

5

4.0

7

 

 

М141БПЛТЛ006

5

8

5

5

5.0

6

 

 

М141БПЛТЛ055

4

7

7

4

8.0

5

 

 

М141БПЛТЛ007

6

7

6

7

4.0

5

 

 

М141БПЛТЛ050

6

8

4

5

4.0

5

 

 

М141БПЛТЛ066

7

9

5

8

4.0

6

 

 

М141БПЛТЛ043

5

8

5

6

5.0

6

 

 

М141БПЛТЛ084

4

8

5

5

NaN

8

 

 

М141БПЛТЛ005

5

7

4

7

4.0

5

 

 

М141БПЛТЛ044

4

6

4

4

5.0

4

 

13051038

4

9

5

5

5.0

5

 

Откуда в квадратных скобках взялось двоеточие? Дело в том, что метод .loc – более универсальный, и позволяет выбирать не только столбцы, но и строки. При этом нужные строки указываются на первом месте, а столбцы – на втором. Когда мы пишем .loc[:, 1] , мы сообщаем Python, что нам нужны все строки ( : ) и столбцы, начиная с Econ и до Law включительно.

Внимание: выбор столбцов по названиям через двоеточие очень напоминает срезы (slices) в списках. Но есть важное отличие. В случае текстовых названий, оба конца среза (левый и правый) включаются. Если бы срезы по названиям были бы устроены как срезы по числовым индексам, код выше выдавал бы столбцы с Econ и до Phist , не включая колонку Law , так как в обычных срезах правый конец исключается.

127.0.0.1:8888/notebooks/EXONTOOLS/2/Доп. занятия/10. Датафреймы pandas.ipynb

17/42

12.11.2022, 11:38

10. Датафреймы pandas - Jupyter Notebook

Выбор столбцов по номеру

Иногда может возникнуть необходимость выбрать столбец по его порядковому номеру. Например, когда названий столбцов нет как таковых или когда названия слишком длинные, а переименовывать их нежелательно. Сделать это можно с помощью метода .iloc :

127.0.0.1:8888/notebooks/EXONTOOLS/2/Доп. занятия/10. Датафреймы pandas.ipynb

18/42

12.11.2022, 11:38

10. Датафреймы pandas - Jupyter Notebook

In [25]:

df.iloc[:, 1]

Out[25]:

id

М141БПЛТЛ024 9 М141БПЛТЛ031 10 М141БПЛТЛ075 9 М141БПЛТЛ017 9 М141БПЛТЛ069 10 М141БПЛТЛ072 9 М141БПЛТЛ020 7 М141БПЛТЛ026 10 М141БПЛТЛ073 9 М141БПЛТЛ078 6 М141БПЛТЛ060 8 М141БПЛТЛ040 9 М141БПЛТЛ065 9 М141БПЛТЛ053 7 М141БПЛТЛ015 9 М141БПЛТЛ021 9 М141БПЛТЛ018 7 М141БПЛТЛ039 8 М141БПЛТЛ036 10 М141БПЛТЛ049 7 06114043 8 М141БПЛТЛ048 6 М141БПЛТЛ034 9 М141БПЛТЛ045 8 М141БПЛТЛ033 9 М141БПЛТЛ083 5 М141БПЛТЛ008 8 М141БПЛТЛ001 7 М141БПЛТЛ038 9 М141БПЛТЛ052 7 М141БПЛТЛ011 6 М141БПЛТЛ004 7 М141БПЛТЛ010 6 М141БПЛТЛ071 9 М141БПЛТЛ035 6 М141БПЛТЛ030 6 М141БПЛТЛ070 5 М141БПЛТЛ051 9 М141БПЛТЛ046 7 М141БПЛТЛ047 8 М141БПЛТЛ063 5 М141БПЛТЛ029 8 М141БПЛТЛ064 8 М141БПЛТЛ076 7 М141БПЛТЛ062 7 М141БПЛТЛ074 6 130232038 7 М141БПЛТЛ023 9 М141БПЛТЛ054 8 М141БПЛТЛ012 6 М141БПЛТЛ006 5 М141БПЛТЛ055 5 М141БПЛТЛ007 7 М141БПЛТЛ050 6

127.0.0.1:8888/notebooks/EXONTOOLS/2/Доп. занятия/10. Датафреймы pandas.ipynb

19/42

12.11.2022, 11:38

10. Датафреймы pandas - Jupyter Notebook

М141БПЛТЛ066 10 М141БПЛТЛ043 5 М141БПЛТЛ084 7 М141БПЛТЛ005 7 М141БПЛТЛ044 5 13051038 4

Name: Mstat, dtype: int64

Синтаксис кода с .iloc несильно отличается от синтаксиса .loc . В чем разница? Разница заключается в том, что метод .loc работает с текстовыми названиями, а метод .iloc – с числовыми индексами. Отсюда и префикс i в названии (i – индекс, loc – location). Если мы попытаемся в .iloc указать названия столбцов, Python выдаст ошибку:

127.0.0.1:8888/notebooks/EXONTOOLS/2/Доп. занятия/10. Датафреймы pandas.ipynb

20/42