Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Большие данные - лекция-3 - Титаник + pandas

3a855e4e8dd144b8942da2463831a067?s=47 Anton
February 27, 2019

Большие данные - лекция-3 - Титаник + pandas

Python как «эксель» без мышки (работа с табличными данными), Pandas + Титаник

Обновлено: 20.02.2020

3a855e4e8dd144b8942da2463831a067?s=128

Anton

February 27, 2019
Tweet

Transcript

  1. Python как «эксель» без мышки (работа с табличными данными) Pandas

    + Титаник
  2. Введение в машинное обучение, ВШЭ • По материалам • Programming

    Assignment: Предобработка данных в Pandas www.coursera.org/learn/vvedenie-mashinnoe- obuchenie/programming/u08ys/priedobrabotka- dannykh-v-pandas
  3. Библиотека Pandas — анализ и обработка данных (работа с таблицами)

    • pandas.pydata.org/pandas-docs/stable/ • Изучаем pandas. Второе издание. Груздев А.В., Хейдт М., 2019, 1700 руб dmkpress.com/catalog/computer/programming/ python/978-5-97060-670-4/
  4. Библиотека NumPy • numpy.org/ numpy.org/doc/1.18/user/index.html numpy.org/doc/1.18/reference/index.html • Работа с многомерными

    массивами и матрицами • Арифметика, всевозможные математические операции с массивами и матрицами • Под капотом у Pandas
  5. Установка • pip install --user pandas • Пакет-комбайн Anaconda со

    всем необходимым — как вариант www.anaconda.com/distribution/
  6. Установка вручную (только для 3214 — pip без интернета) pypi.python.org

    (в браузере интернет есть) • Поиск пакета: pandas • Качаем • Устанавливаем: pip install pandas-0.24.1-xxx.tar.gz (whl — «python wheels» — для нативных модулей) • pip лезет в репозиторий за зависимостями и обламывается из-за инета • При этом показывает недостающий пакет • Повторяем рекурсивно предварительно стоит сделать в текущей консольке: set PATH=%PATH%;«c:\Student\Python2.7»;«c:\Student\Python2.7\scripts»
  7. Titanic: Machine Learning from Disaster • Данные качаем с Каггла

    • Start here! Predict survival on the Titanic and get familiar with ML basics www.kaggle.com/c/titanic/data
  8. Файл train.csv • Колонки: PassengerId Survived Pclass Name Sex Age

    SibSp Parch Ticket Fare Cabin Embarked • 891 строк
  9. Колонки • PassengerId — порядковый номер записи • Survived —

    выжил/погиб • Pclass — класс билета: 1/2/3 • Name — имя • Sex — пол: male/female • Age — возраст
  10. Колонки • SibSp — количество родных братьев и сестер (siblings)

    и супругов (spouses) на борту судна • Parch — количество детей и родителей на борту судна • Ticket — номер билета • Fare — стоимость проезда • Cabin — номер каюты • Embarked — порт посадки: C = Cherbourg (Шербур, Франция), Q = Queenstown (Квинстаун, Ирландия), S = Southampton (Саутгемптон, гр. Гэмпшир, Англия)
  11. Разминка: загрузка данных • DataFrame (двумерная таблица с метками по

    осям) pandas.pydata.org/pandas- docs/stable/reference/api/pandas.DataFrame.html • Series (одномерный массив ndarray с метками осей; ndarray — массив из Numpy) pandas.pydata.org/pandas- docs/stable/reference/api/pandas.Series.html
  12. titanic.py # coding=utf-8 import pandas data = pandas.read_csv('titanic-train.csv', index_col='PassengerId')

  13. Замечание: если убрать #coding=utf-8 • Плюс любой юникодный (не-аски) символ

    в файле (в комментарии или строке) • Python 2.7: SyntaxError: Non-ASCII character '\xd0' in file titanic.py on line 18, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details • Python 3: ok
  14. Вывести 1-е 10 строк • Оператор «квадратные скобки» data[пропустить_в_начале:индекс_конца] •

    Возвращает выбранные строки как объект DataFrame • Пустое значение пропустить_в_начале: начать с первого элемента • Пустое значение индекс_конца: вывести все элементы, начиная с пропустить_в_начале+1, до последнего • Если пропустить_в_начале >= индекс_конца: пустая таблица DataFrame
  15. titanic.py print("# 1st 10 rows:") print(data[:10])

  16. # 1st 10 rows: Survived Pclass\ PassengerId 1 0 3

    2 1 1 ... 8 0 3 9 1 3 10 1 2
  17. Name Sex Age \ PassengerId 1 Braund, Mr. Owen Harris

    male 22.0 2 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 ... 8 Palsson, Master. Gosta Leonard male 2.0 9 Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female 27.0 10 Nasser, Mrs. Nicholas (Adele Achem) female 14.0
  18. SibSp Parch Ticket Fare Cabin Embarked PassengerId 1 1 0

    A/5 21171 7.2500 NaN S 2 1 0 PC 17599 71.2833 C85 C … 8 3 1 349909 21.0750 NaN S 9 0 2 347742 11.1333 NaN S 10 1 0 237736 30.0708 NaN C
  19. Заголовок head() — 1-е пять сток • Еще один способ

    вывести первые строки
  20. titanic.py print("# header (1st 5 rows):") print(data.head())

  21. Взять одну колонку • Тоже через квадратные скобки

  22. titanic.py print("# column 'Pclass'") print(data['Pclass'])

  23. # column 'Pclass' PassengerId 1 3 2 1 3 3

    .. 887 2 888 1 889 3 890 1 891 3 Name: Pclass, dtype: int64
  24. Самостоятельно • Посмотреть, как еще можно выбирать и фильтровать значения

    через оператор «квадратные скобки» • См: NumPy, Pandas (DataFrame, Series)
  25. Количества уникальных элементов в колонке • data — объект DataFrame

    (таблица), • data['Pclass'] — уже объект Series (колонка, последовательность) • Посчитать уникальные значения: Series.value_counts()
  26. titanic.py print("# column 'Pclass' values count") print(data['Pclass'].value_counts())

  27. # column 'Pclass' values count 3 491 1 216 2

    184 Name: Pclass, dtype: int64
  28. Разминка-2: самостоятельно • Какое количество мужчин и женщин ехало на

    корабле (два числа) • Какой части пассажиров удалось выжить (процент — число в интервале от 0 до 100) • Какую долю пассажиры 1го класса составляли среди всех пассажиров (процент — число в интервале от 0 до 100) • Возраст пассажиров: среднее и медиана
  29. Среднее и медиана • Среднее: сумма всех элементов делить на

    количество всех элементов • Медиана: такое значение (такой элемент выборки), для которого половина всех элементов выборки меньше этого значения, другая половина — больше этого значения • Медиана позволяет обрезать всплески на границах выборки • Пример: средняя зарплата vs медианная зарплата
  30. Разминка-3: популярное женское имя • Фильтр по Sex == female

    • Колонка Name • Посмотрите значения (там всё не так однозначно) • Определите правило извлечения имени • Составьте регулярное выражение для извлечения имени
  31. Предварительно — вывести имена женщин (DataFrame.query) print( data[data.Sex == "female"][Name].value_counts()

    ) или print( data[data.Sex == "female"][Name].to_string() )
  32. PassengerId 2 Cumings, Mrs. John Bradley (Florence Briggs Th... 3

    Heikkinen, Miss. Laina 4 Futrelle, Mrs. Jacques Heath (Lily May Peel) 9 Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) 10 Nasser, Mrs. Nicholas (Adele Achem) 11 Sandstrom, Miss. Marguerite Rut 12 Bonnell, Miss. Elizabeth 15 Vestrom, Miss. Hulda Amanda Adolfina 16 Hewlett, Mrs. (Mary D Kingcome) 19 Vander Planke, Mrs. Julius (Emelia Maria Vande... 20 Masselmani, Mrs. Fatima 23 McGowan, Miss. Anna "Annie" 25 Palsson, Miss. Torborg Danira 26 Asplund, Mrs. Carl Oscar (Selma Augusta Emilia... 29 O'Dwyer, Miss. Ellen "Nellie" 32 Spencer, Mrs. William Augustus (Marie Eugenie) 33 Glynn, Miss. Mary Agatha 39 Vander Planke, Miss. Augusta Maria 40 Nicola-Yarred, Miss. Jamila 41 Ahlin, Mrs. Johan (Johanna Persdotter Larsson) 42 Turpin, Mrs. William John Robert (Dorothy Ann ... 44 Laroche, Miss. Simonne Marie Anne Andree 45 Devaney, Miss. Margaret Delia 48 O'Driscoll, Miss. Bridget ...
  33. Регулярные выражения • ищите: Pandas apply regex to replace values

    • docs.python.org/2/library/re.html