-
- Конспекты:
-
Весь python в одном ноутбуке
здесь все лекции в одном ноутбуке¹
¹ Внимание! Ноутбук получился огромный по размеру и поэтому сильно тормозит при открытии. Поэтому был разбит на несколько тем.
- Заметки по модулям
- Конспекты:
-
Аналитика. Начальный уровень. Module 10-19
- Конспекты:
- Заметки по модулям
Входе занятия происходит знакомство с проверкой типов данных, для проверки является ли строка числом\цифрами в python есть несколько различных методов. Статья описывающая подробности Python’s str.isdigit vs. str.isnumeric
'1234'.isdigit()
- проверяет арабские цифры 0-9'一二三四五'.isnumeric()
- проверяет не только арабские цифры, но и цифры в другом формате - например китайские иероглефы.- '2²'.isnumeric() - также позволит проверять выражения такого типа.
'2.2'.isdecimal()
- с плавающей точкой.
- Мера Жакара - «На самом деле в задании коэффициент Танимото, а не мера Жаккара. (Хоть первый и является расширением второго).»
- «В качестве множеств 𝐴 и 𝐵 в данной задаче выступают множества (группы) студентов, которые получили зачёт у первого и второго экспертов.»
- Тут подразумевается просто отношение мощности пересечения к мощности объединения.
Проблема с загрузкой данных в формате numpy "ValueError: Object arrays cannot be loaded when allow_pickle=False"
.
Решается добавлением ключа: arr = np.load(file_path, allow_pickle=True)
Подробности об ошибке:
- Проблема возникла после версии
numpy==1.16.2
pickle
- модуль сериализации и десериализации данных (Бинарый формат), для повышения безопастности было изменено поведение библиотеки по умолчанию- Подробности
- Ещё подробности
Некорректная постановка задачи номер 6. Из условия можно сделать неправильный вывод, что информацию о типе данных в столбцах DataFrame можно получить, используя метод info. Однако, метод info выдает тип данных object для всех столбцов. Это происходит потому, что изначально данные загружаются в виде массива numpy, который требует, чтобы все данные были одного типа, тогда как в столбцах присутствуют str, int и float. Они все обернуты в object, чтобы был один тип. Лечится это так: dat = dat.infer_objects()
т.е. при помощи метода infer_objects
приводим объекты (значения в датафрейме, импортированные ранее из numpy массива) к их настоящему виду: int, str, float. Далее уже делаем подсчёт различных типов данных при помощи метода info
.
По куску таблицы, который печатается, конечно же, нельзя определенно утверждать, что люди с разным доходом рыбачат по-разному. Увидеть разницу нам поможет умение строить barplot, которое нам дается только ниже в необязательных заданиях: dat.sort_values(['price', 'income'])
- По маленькому куску таблицы, который выводится этого сказать, конечно же, нельзя.
Чтобы проверить этот факт, сравним распределения людей по типу рыбалки с доходом меньше медианного и больше:
logic_choice = dat['income'] < dat['income'].median()
dat_for_bar = pd.DataFrame()
dat_for_bar['below_median'] = \
round(dat[logic_choice].groupby('mode')['income'].agg('count') / logic_choice.sum() * 100)
dat_for_bar['above_median'] = \
round(dat[~logic_choice].groupby('mode')['income'].agg('count') / (~logic_choice).sum() * 100)
%matplotlib inline
ax = dat_for_bar.plot.bar(rot=0)
ax.set_title("Распределение людей по типам рыбалки")
ax.set_xlabel("Тип рыбалки")
ax.set_ylabel("Процент от общего числа")
Видим, что люди с более низким доходом чаще рыбачат с пирса, а у людей с более высоким доходом, по-видимому, чаще есть своя собственная лодка, но в целом распределения отличаются мало.
При выполнении домашнего задания вам может помочь интересная функция pandas:
pandas.Series.str.startswith
- документация - позволяет фильтровать значения.
Также проблемы могут быть с тем что у вас получились не удачные датафреймы для визуализации. Чтобы было проще строить графики Данные в ДФ должны быть представлены в форме Long-form (tidy)
- т.е. в столбце с категориями повторяются значения. Вот здесь подробно описано что эта форма из себя предствляет - Long-form vs. wide-form data.
Домашняя работа, часть 4. Работа с данными формата HTML. Для правильного отображения символов кириллицы потребуется создать объект класса etree.HTMLParser.
from lxml import html, etree
hparser = etree.HTMLParser(encoding='utf-8')
И добавить его в аргументы:
html_tree = html.fromstring(page, parser=hparser)
-
Отзыв о сайте
> Александр Зенков: ... очень хорошо всё объясняется и сразу на упражнениях отрабатывается. Начальный уровень бесплатный, остальное 300р за месяц, но если сесть, можно разом всё осилить. Мой рекомендасьон👍
Интерактивный учебник и упражнения по SQL
Домашняя работа, часть 15.3.3 - Вывести имена трех самых молодых студентов, трех самых старых преподавателей, названия трех самых продолжительных курсов.
Каждое выражение SELECT , GROUP BY , LIMIT
нужно включить в скобки, в противном случае будет ошибка.
Проблема в установке psycopg2
:
- для Windows нужно делать
pip install psycopg2-binary
, тогдаimport psycopg2
заработает. - для OS X нужно делать
pip install psycopg2-binary
, тогдаimport psycopg2
заработает (возможно не сработает в стандартном терминале, тогда можно попробовать через терминал PyCharm)
- Python.org рекомендует: Программирование для НЕпрограммистов
- Курсы на Stepik
- Сайты для тренировок:
- Конспект по модулям - «Основы Python» by Andrew (Старый. Перенесено (см. выше))
- Крутые полезняшки!