In [1]: import pandas as pd
- данные Titanic
Этот учебник использует набор данных Titanic, сохраненный как CSV. Данные состоят из следующих столбцов данных:
PassengerId: Идентификатор каждого пассажира.
Выжил: Указание, выжил ли пассажир.
0для да и1для нет.Pclass: Один из 3 классов билетов: Класс
1, Класс2и Класс3.Name: Имя пассажира.
Sex: Пол пассажира.
Age: Возраст пассажира в годах.
SibSp: Количество братьев, сестер или супругов на борту.
Parch: Количество родителей или детей на борту.
Ticket: Номер билета пассажира.
Fare: Указывает стоимость проезда.
Cabin: Номер каюты пассажира.
Embarked: Порт посадки.
Как читать и записывать табличные данные?#
Я хочу проанализировать данные пассажиров Титаника, доступные в виде CSV-файла.
In [2]: titanic = pd.read_csv("data/titanic.csv")
pandas предоставляет
read_csv()функция для чтения данных, сохранённых в csv-файле, в pandasDataFrame. pandas поддерживает множество различных форматов файлов или источников данных из коробки (csv, excel, sql, json, parquet, …), каждый из них с префиксомread_*.
Всегда проверяйте данные после их чтения. При отображении DataFrame, по умолчанию будут показаны первые и последние 5 строк:
In [3]: titanic
Out[3]:
PassengerId Survived Pclass ... Fare Cabin Embarked
0 1 0 3 ... 7.2500 NaN S
1 2 1 1 ... 71.2833 C85 C
2 3 1 3 ... 7.9250 NaN S
3 4 1 1 ... 53.1000 C123 S
4 5 0 3 ... 8.0500 NaN S
.. ... ... ... ... ... ... ...
886 887 0 2 ... 13.0000 NaN S
887 888 1 1 ... 30.0000 B42 S
888 889 0 3 ... 23.4500 NaN S
889 890 1 1 ... 30.0000 C148 C
890 891 0 3 ... 7.7500 NaN Q
[891 rows x 12 columns]
Я хочу увидеть первые 8 строк pandas DataFrame.
In [4]: titanic.head(8) Out[4]: PassengerId Survived Pclass ... Fare Cabin Embarked 0 1 0 3 ... 7.2500 NaN S 1 2 1 1 ... 71.2833 C85 C 2 3 1 3 ... 7.9250 NaN S 3 4 1 1 ... 53.1000 C123 S 4 5 0 3 ... 8.0500 NaN S 5 6 0 3 ... 8.4583 NaN Q 6 7 0 1 ... 51.8625 E46 S 7 8 0 3 ... 21.0750 NaN S [8 rows x 12 columns]
Чтобы увидеть первые N строк
DataFrame, используйтеhead()метод с требуемым количеством строк (в данном случае 8) в качестве аргумента.
Примечание
Интересуют последние N строк? pandas также предоставляет
tail() метод. Например, titanic.tail(10) вернет последние
10 строк DataFrame.
Проверку того, как pandas интерпретировал типы данных каждого столбца, можно
выполнить, запросив pandas dtypes attribute:
In [5]: titanic.dtypes
Out[5]:
PassengerId int64
Survived int64
Pclass int64
Name object
Sex object
Age float64
SibSp int64
Parch int64
Ticket object
Fare float64
Cabin object
Embarked object
dtype: object
Для каждого из столбцов указан используемый тип данных. Типы данных
в этом DataFrame являются целыми числами (int64), числа с плавающей точкой (float64) и
строки (object).
Примечание
При запросе dtypes, скобки не используются!
dtypes является атрибутом DataFrame и Series. Атрибуты DataFrame или Series не требуют скобок. Атрибуты
представляют характеристику DataFrame/Series, тогда как
методы (которые требуют скобок) делать что-то с
DataFrame/Series как представлено в первое руководство.
Мой коллега запросил данные Titanic в виде электронной таблицы.
In [6]: titanic.to_excel("titanic.xlsx", sheet_name="passengers", index=False)
В то время как
read_*функции используются для чтения данных в pandas,to_*методы используются для хранения данных. Методto_excel()метод сохраняет данные в виде файла Excel. В этом примереsheet_nameназывается пассажиры вместо значения по умолчанию Sheet1. Установивindex=Falseметки индекса строк не сохраняются в электронной таблице.
Эквивалентная функция чтения read_excel() перезагрузит данные в
DataFrame:
In [7]: titanic = pd.read_excel("titanic.xlsx", sheet_name="passengers")
In [8]: titanic.head()
Out[8]:
PassengerId Survived Pclass ... Fare Cabin Embarked
0 1 0 3 ... 7.2500 NaN S
1 2 1 1 ... 71.2833 C85 C
2 3 1 3 ... 7.9250 NaN S
3 4 1 1 ... 53.1000 C123 S
4 5 0 3 ... 8.0500 NaN S
[5 rows x 12 columns]
Меня интересует техническое резюме
DataFrameIn [9]: titanic.info()
RangeIndex: 891 entries, 0 to 890 Data columns (total 12 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 PassengerId 891 non-null int64 1 Survived 891 non-null int64 2 Pclass 891 non-null int64 3 Name 891 non-null object 4 Sex 891 non-null object 5 Age 714 non-null float64 6 SibSp 891 non-null int64 7 Parch 891 non-null int64 8 Ticket 891 non-null object 9 Fare 891 non-null float64 10 Cabin 204 non-null object 11 Embarked 889 non-null object dtypes: float64(2), int64(5), object(5) memory usage: 83.7+ KB Метод
info()предоставляет техническую информацию оDataFrameпоэтому давайте подробнее объясним вывод:Это действительно
DataFrame.Всего 891 запись, т.е. 891 строка.
Каждая строка имеет метку строки (также известную как
index) со значениями в диапазоне от 0 до 890.Таблица имеет 12 столбцов. Большинство столбцов имеют значение для каждой из строк (все 891 значение являются
non-null). Некоторые столбцы содержат пропущенные значения, и менее 891non-nullзначения.Столбцы
Name,Sex,CabinиEmbarkedсостоит из текстовых данных (строк, также известных какobject). Остальные столбцы содержат числовые данные, некоторые из которых являются целыми числами (также известными какinteger) и другие являются действительными числами (также известными какfloat).Тип данных (символы, целые числа,…) в разных столбцах суммируется путем перечисления
dtypes.Также указывается примерный объем оперативной памяти, используемый для хранения DataFrame.
ПОМНИТЕ
Загрузка данных в pandas из различных форматов файлов или источников данных поддерживается
read_*функций.Экспорт данных из pandas обеспечивается различными
to_*методы.The
head/tail/infoметоды иdtypesатрибут удобен для первоначальной проверки.
Для полного обзора возможностей ввода и вывода данных в pandas и из pandas см. раздел руководства пользователя о функции чтения и записи.