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

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

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

12.11.2022, 11:38

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

In [40]:

df["Econ"] > 6

Out[40]:

id

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

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

31/42

12.11.2022, 11:38

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

М141БПЛТЛ066 True М141БПЛТЛ043 False М141БПЛТЛ084 False М141БПЛТЛ005 False М141БПЛТЛ044 False 13051038 False Name: Econ, dtype: bool

Что мы увидели? Просто результат проверки условия, набор из True и False. Когда мы подставляем это выражение в квадратные скобки, Python выбирает из df те строки, где выражение принимает значение

True.

Все операторы проверки условий работают как обычно:

In [41]:

df[df["Econ"] == 9] # двойное равенство для равенства

Out[41]:

 

 

 

Cps

Mstat

Soc

Econ

Eng

Polth

Mstat2

Phist

Law

Phil

Polsoc

Ptheo

 

 

id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М141БПЛТЛ008

10

8

8

9

8

10

9

8.0

9

10

9

8.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Можно формулировать сложные условия. Выберем студентов с оценкой по экономике от 6 до 8 (8 не включается).

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

32/42

12.11.2022, 11:38 10. Датафреймы pandas - Jupyter Notebook

In [42]:

df[(df["Econ"] >= 6) & (df["Econ"] < 8)]

Out[42]:

 

 

 

Cps

Mstat

Soc

Econ

Eng

Polth

Mstat2

Phist

Law

Phil

Polsoc

Ptheo

 

 

id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М141БПЛТЛ020

8

7

7

6

9

10

8

8.0

7

7

9

7.0

 

М141БПЛТЛ026

7

10

8

7

10

7

9

8.0

8

8

8

8.0

 

М141БПЛТЛ060

7

8

7

7

9

8

8

5.0

7

5

8

5.0

 

М141БПЛТЛ040

6

9

8

6

9

7

8

6.0

9

5

8

5.0

 

М141БПЛТЛ015

6

9

7

6

9

7

9

4.0

7

7

7

6.0

 

М141БПЛТЛ018

7

7

9

7

9

7

8

6.0

6

7

8

7.0

 

М141БПЛТЛ049

6

7

6

6

8

6

8

4.0

8

5

9

6.0

 

М141БПЛТЛ048

8

6

8

6

9

6

4

4.0

6

4

8

4.0

 

М141БПЛТЛ034

6

9

7

6

9

6

8

6.0

7

6

6

5.0

 

М141БПЛТЛ045

5

8

8

7

8

6

7

6.0

7

7

8

6.0

 

М141БПЛТЛ033

5

9

8

7

9

7

9

7.0

7

8

8

7.0

 

М141БПЛТЛ052

7

7

7

7

8

6

6

6.0

8

6

7

5.0

 

М141БПЛТЛ011

7

6

8

6

9

6

6

5.0

6

6

7

6.0

 

М141БПЛТЛ004

7

7

6

6

8

6

6

5.0

5

5

6

5.0

 

М141БПЛТЛ010

6

6

7

6

9

7

7

6.0

7

5

8

6.0

 

М141БПЛТЛ071

6

9

7

7

9

6

8

4.0

6

7

7

6.0

 

М141БПЛТЛ035

5

6

7

6

8

5

5

4.0

6

6

7

5.0

 

М141БПЛТЛ030

7

6

6

6

7

6

6

4.0

8

5

5

5.0

 

М141БПЛТЛ051

8

9

8

6

8

7

6

7.0

6

6

6

5.0

 

М141БПЛТЛ029

6

8

8

7

9

5

6

7.0

6

5

8

5.0

 

М141БПЛТЛ064

7

8

6

7

6

6

8

4.0

6

4

4

4.0

 

М141БПЛТЛ076

7

7

8

6

8

6

6

6.0

8

6

8

5.0

 

М141БПЛТЛ062

7

7

7

6

9

6

6

5.0

6

5

6

4.0

 

М141БПЛТЛ007

6

7

7

6

7

6

7

4.0

5

5

6

5.0

 

М141БПЛТЛ050

8

6

6

6

8

4

5

4.0

5

5

6

4.0

 

М141БПЛТЛ066

7

10

7

7

9

5

8

4.0

6

5

6

4.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В качестве символа для одновременного выполнения условий используется оператор & . И не забудьте про круглые скобки. А теперь выберем студентов с оценкой по английскому выше 9 и оценкой по праву ниже 9:

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

33/42

12.11.2022, 11:38 10. Датафреймы pandas - Jupyter Notebook

In [43]:

df[(df["Eng"] > 9) & (df["Law"] < 9)] Out[43]:

 

 

 

Cps

Mstat

Soc

Econ

Eng

Polth

Mstat2

Phist

Law

Phil

Polsoc

Ptheo

 

 

id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М141БПЛТЛ069

10

10

10

10

10

10

9

8.0

8

10

9

7.0

 

М141БПЛТЛ026

7

10

8

7

10

7

9

8.0

8

8

8

8.0

 

М141БПЛТЛ001

6

7

7

4

10

7

7

6.0

8

6

8

4.0

 

М141БПЛТЛ012

6

6

7

4

10

6

5

4.0

7

5

7

4.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

34/42

12.11.2022, 11:38

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

In [44]:

df[(df["Eng"]) > 9 & (df["Law"] < 9)] # первая закрывающая скобка не после 9

Out[44]:

 

Cps

Mstat

Soc

Econ

Eng

Polth

Mstat2

Phist

Law

Phil

Polsoc

Ptheo

id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М141БПЛТЛ024

7

9

8

8

9

8

10

8.0

7

9

9

7.0

М141БПЛТЛ031

8

10

10

10

10

10

10

9.0

9

10

10

9.0

М141БПЛТЛ075

9

9

9

10

9

10

9

8.0

9

10

9

9.0

М141БПЛТЛ017

9

9

8

8

9

9

10

6.0

9

9

9

8.0

М141БПЛТЛ069

10

10

10

10

10

10

9

8.0

8

10

9

7.0

М141БПЛТЛ072

10

9

8

10

9

8

9

8.0

8

10

9

7.0

М141БПЛТЛ020

8

7

7

6

9

10

8

8.0

7

7

9

7.0

М141БПЛТЛ026

7

10

8

7

10

7

9

8.0

8

8

8

8.0

М141БПЛТЛ073

7

9

8

8

9

8

9

8.0

8

9

9

7.0

М141БПЛТЛ078

6

6

9

5

6

10

7

6.0

8

6

9

6.0

М141БПЛТЛ060

7

8

7

7

9

8

8

5.0

7

5

8

5.0

М141БПЛТЛ040

6

9

8

6

9

7

8

6.0

9

5

8

5.0

М141БПЛТЛ065

9

9

8

4

8

8

7

9.0

8

5

10

9.0

М141БПЛТЛ053

6

7

7

5

9

8

7

8.0

8

6

8

7.0

М141БПЛТЛ015

6

9

7

6

9

7

9

4.0

7

7

7

6.0

М141БПЛТЛ021

8

9

8

8

9

8

8

7.0

7

7

6

6.0

М141БПЛТЛ018

7

7

9

7

9

7

8

6.0

6

7

8

7.0

М141БПЛТЛ039

9

8

9

8

8

8

6

8.0

7

6

9

6.0

М141БПЛТЛ036

8

10

7

8

8

6

9

4.0

8

8

7

6.0

М141БПЛТЛ049

6

7

6

6

8

6

8

4.0

8

5

9

6.0

06114043

8

8

10

5

8

8

8

10.0

7

7

9

NaN

М141БПЛТЛ048

8

6

8

6

9

6

4

4.0

6

4

8

4.0

М141БПЛТЛ034

6

9

7

6

9

6

8

6.0

7

6

6

5.0

М141БПЛТЛ045

5

8

8

7

8

6

7

6.0

7

7

8

6.0

М141БПЛТЛ033

5

9

8

7

9

7

9

7.0

7

8

8

7.0

М141БПЛТЛ083

5

5

6

5

8

7

6

5.0

7

5

7

5.0

М141БПЛТЛ008

10

8

8

9

8

10

9

8.0

9

10

9

8.0

М141БПЛТЛ001

6

7

7

4

10

7

7

6.0

8

6

8

4.0

М141БПЛТЛ038

7

9

6

4

9

6

7

6.0

7

4

8

4.0

М141БПЛТЛ052

7

7

7

7

8

6

6

6.0

8

6

7

5.0

М141БПЛТЛ011

7

6

8

6

9

6

6

5.0

6

6

7

6.0

М141БПЛТЛ004

7

7

6

6

8

6

6

5.0

5

5

6

5.0

М141БПЛТЛ010

6

6

7

6

9

7

7

6.0

7

5

8

6.0

М141БПЛТЛ071

6

9

7

7

9

6

8

4.0

6

7

7

6.0

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

35/42

12.11.2022, 11:38

 

 

 

 

 

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

 

 

 

 

 

Cps

Mstat

Soc

Econ

Eng

Polth

Mstat2

Phist

Law

Phil

Polsoc

Ptheo

 

 

 

id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М141БПЛТЛ035

5

6

7

6

8

5

5

4.0

6

6

7

5.0

 

 

М141БПЛТЛ030

7

6

6

6

7

6

6

4.0

8

5

5

5.0

 

 

М141БПЛТЛ070

5

5

6

4

8

6

5

5.0

6

4

5

6.0

 

 

М141БПЛТЛ051

8

9

8

6

8

7

6

7.0

6

6

6

5.0

 

 

М141БПЛТЛ046

5

7

7

4

7

5

8

5.0

7

5

7

5.0

 

 

М141БПЛТЛ047

5

8

6

4

7

5

9

5.0

6

4

6

4.0

 

 

М141БПЛТЛ063

5

5

6

4

8

4

4

4.0

5

4

5

4.0

 

 

М141БПЛТЛ029

6

8

8

7

9

5

6

7.0

6

5

8

5.0

 

 

М141БПЛТЛ064

7

8

6

7

6

6

8

4.0

6

4

4

4.0

 

 

М141БПЛТЛ076

7

7

8

6

8

6

6

6.0

8

6

8

5.0

 

 

М141БПЛТЛ062

7

7

7

6

9

6

6

5.0

6

5

6

4.0

 

 

М141БПЛТЛ074

5

6

7

4

7

6

5

6.0

6

6

8

6.0

130232038

6

7

6

5

8

4

8

4.0

8

4

5

5.0

 

 

М141БПЛТЛ023

7

9

6

8

9

6

9

4.0

7

7

7

6.0

 

 

М141БПЛТЛ054

7

8

6

4

8

6

4

4.0

6

4

8

4.0

 

 

М141БПЛТЛ012

6

6

7

4

10

6

5

4.0

7

5

7

4.0

 

 

М141БПЛТЛ006

6

5

6

5

8

5

5

5.0

6

4

7

5.0

 

 

М141БПЛТЛ055

6

5

6

4

7

7

4

8.0

5

4

6

4.0

 

 

М141БПЛТЛ007

6

7

7

6

7

6

7

4.0

5

5

6

5.0

 

 

М141БПЛТЛ050

8

6

6

6

8

4

5

4.0

5

5

6

4.0

 

 

М141БПЛТЛ066

7

10

7

7

9

5

8

4.0

6

5

6

4.0

 

 

М141БПЛТЛ043

5

5

6

5

8

5

6

5.0

6

4

5

4.0

 

 

М141БПЛТЛ084

6

7

8

4

8

5

5

NaN

8

4

4

4.0

 

 

М141БПЛТЛ005

5

7

5

5

7

4

7

4.0

5

4

5

5.0

 

 

М141БПЛТЛ044

4

5

7

4

6

4

4

5.0

4

4

4

4.0

13051038

5

4

4

4

9

5

5

5.0

5

4

4

NaN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Результат получился совсем неверным. Потому что Python понял наше условие не так, как нужно. Теперь выберем студентов с оценкой по политической истории ниже 5 или с оценкой по истории политических учений ниже 5:

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

36/42

12.11.2022, 11:38

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

In [45]:

df[(df["Phist"] < 5) | (df["Polth"] < 5)] # оператор | для условия или

Out[45]:

 

 

 

Cps

Mstat

Soc

Econ

Eng

Polth

Mstat2

Phist

Law

Phil

Polsoc

Ptheo

 

 

id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М141БПЛТЛ015

6

9

7

6

9

7

9

4.0

7

7

7

6.0

 

М141БПЛТЛ036

8

10

7

8

8

6

9

4.0

8

8

7

6.0

 

М141БПЛТЛ049

6

7

6

6

8

6

8

4.0

8

5

9

6.0

 

М141БПЛТЛ048

8

6

8

6

9

6

4

4.0

6

4

8

4.0

 

М141БПЛТЛ071

6

9

7

7

9

6

8

4.0

6

7

7

6.0

 

М141БПЛТЛ035

5

6

7

6

8

5

5

4.0

6

6

7

5.0

 

М141БПЛТЛ030

7

6

6

6

7

6

6

4.0

8

5

5

5.0

 

М141БПЛТЛ063

5

5

6

4

8

4

4

4.0

5

4

5

4.0

 

М141БПЛТЛ064

7

8

6

7

6

6

8

4.0

6

4

4

4.0

130232038

6

7

6

5

8

4

8

4.0

8

4

5

5.0

 

М141БПЛТЛ023

7

9

6

8

9

6

9

4.0

7

7

7

6.0

 

М141БПЛТЛ054

7

8

6

4

8

6

4

4.0

6

4

8

4.0

 

М141БПЛТЛ012

6

6

7

4

10

6

5

4.0

7

5

7

4.0

 

М141БПЛТЛ007

6

7

7

6

7

6

7

4.0

5

5

6

5.0

 

М141БПЛТЛ050

8

6

6

6

8

4

5

4.0

5

5

6

4.0

 

М141БПЛТЛ066

7

10

7

7

9

5

8

4.0

6

5

6

4.0

 

М141БПЛТЛ005

5

7

5

5

7

4

7

4.0

5

4

5

5.0

 

М141БПЛТЛ044

4

5

7

4

6

4

4

5.0

4

4

4

4.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь наше выражение в квадратных скобках принимает значение True, когда хотя бы одно из условий верно: либо верно первое, либо второе, либо оба.

Добавление новых столбцов в таблице и удаление пропущенных значений

Давайте добавим в нашу таблицу df новый столбец, который будет представлять собой среднюю оценку по социологии (посчитаем среднее арифметическое оценок по социологии и политической социологии). Чтобы добавить новый столбец, нужно указать его название в квадратных скобках:

In [46]:

df["Avg_Soc"] = (df["Soc"] + df["Polsoc"]) / 2

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

37/42

12.11.2022, 11:38 10. Датафреймы pandas - Jupyter Notebook

In [47]: df.head()

Out[47]:

 

 

 

Cps

Mstat

Soc

Econ

Eng

Polth

Mstat2

Phist

Law

Phil

Polsoc

Ptheo

 

 

id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М141БПЛТЛ024

7

9

8

8

9

8

10

8.0

7

9

9

7.0

 

М141БПЛТЛ031

8

10

10

10

10

10

10

9.0

9

10

10

9.0

 

М141БПЛТЛ075

9

9

9

10

9

10

9

8.0

9

10

9

9.0

 

М141БПЛТЛ017

9

9

8

8

9

9

10

6.0

9

9

9

8.0

 

М141БПЛТЛ069

10

10

10

10

10

10

9

8.0

8

10

9

7.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Теперь внесем изменения в уже существующий столбец в таблице. В самом начале мы заметили, что некоторые столбцы имеют тип float (числа с плавающей точкой), а не integer (целые числа). Давайте попробуем сделать столбец с политической историей целочисленным.

In [48]:

newh = [int(i) for i in df["Phist"]]

---------------------------------------------------------------------------

ValueError Traceback (most recent call last) <ipython-input-48-209824ec1fa3> in <module>()

----> 1 newh = [int(i) for i in df["Phist"]]

<ipython-input-48-209824ec1fa3> in <listcomp>(.0)

----> 1 newh = [int(i) for i in df["Phist"]] ValueError: cannot convert float NaN to integer

Не получается! Почему? Python пишет, что не может превратить NaN в integer. Действительно, сложно превратить объект Not a number в целое число. Тип float относится к нему толерантно, а вот тип integer уже нет. Как быть? Давайте просто удалим из датафрейма все пропущенные значения (то есть строки, содержащие пропущенные значения).

In [49]:

df = df.dropna() # удаляем и сохраняем изменения

Теперь проделаем те же операции:

In [50]:

newh = [int(i) for i in df["Phist"]]

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

38/42

12.11.2022, 11:38

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

In [51]:

df["Phist"] = newh

/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:1: SettingWithC opyWarning:

A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/s table/indexing.html#indexing-view-versus-copy (http://pandas.pydata.org/pand as-docs/stable/indexing.html#indexing-view-versus-copy)

"""Entry point for launching an IPython kernel.

Получилось!

In [52]:

df.head() # Phist уже с целыми значениями

Out[52]:

 

 

 

Cps

Mstat

Soc

Econ

Eng

Polth

Mstat2

Phist

Law

Phil

Polsoc

Ptheo

 

 

id

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М141БПЛТЛ024

7

9

8

8

9

8

10

8

7

9

9

7.0

 

М141БПЛТЛ031

8

10

10

10

10

10

10

9

9

10

10

9.0

 

М141БПЛТЛ075

9

9

9

10

9

10

9

8

9

10

9

9.0

 

М141БПЛТЛ017

9

9

8

8

9

9

10

6

9

9

9

8.0

 

М141БПЛТЛ069

10

10

10

10

10

10

9

8

8

10

9

7.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Еще немного про описательные статистики

В самом начале мы обсуждали описание базы данных с помощью метода .describe() . Помимо этого метода существует много методов, которые выводят отдельные статистики.

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

39/42

12.11.2022, 11:38

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

In [53]:

df.median() # медиана (для всех показателей)

Out[53]:

 

Cps

7.00

Mstat

7.50

Soc

7.00

Econ

6.00

Eng

8.50

Polth

6.00

Mstat2

7.00

Phist

6.00

Law

7.00

Phil

6.00

Polsoc

8.00

Ptheo

5.00

Preg

7.00

Compp

5.00

Game

6.00

Wpol

8.00

Male

0.00

Avg_Soc

7.25

dtype: float64

Можно запрашивать статистики по отдельным переменным (столбцам):

In [54]:

df.Phist.mean() # среднее арифметическое

Out[54]:

5.833333333333333

Или по наблюдениям (строкам):

In [55]:

df.loc["М141БПЛТЛ023"].mean()

Out[55]:

6.25

Давайте теперь построим какие-нибудь графики. Библиотеку pandas удобно использовать в сочетании с библиотекой для построения графиков matplotlib. Давайте её импортируем (эта библиотека должна была быть установлена на ваш компьютер вместе с Anaconda).

In [56]:

import matplotlib

Теперь добавим элементы магии :) Магическую строку в Jupyter Notebook (Python magic). Эта строка позволит выводить графики прямо внутри ноутбука, файла .ipynb , а не в отдельном окне.

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

40/42