1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-data8-textbook-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
5.md 38 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 06:54 043962f

Таблицы

Таблица — это базовый тип объекта для представления набора данных. Таблицу можно рассматривать двумя способами:

  • как последовательность именованных столбцов, каждый из которых описывает один аспект всех записей в наборе данных;
  • или как последовательность строк, каждая из которых содержит всю информацию об одной записи в наборе данных.

Чтобы использовать таблицы, импортируйте все модули с именем datascience, которые были созданы для этой статьи.

from datascience import *

Пустую таблицу можно создать с помощью Table. Пустые таблицы полезны, потому что их можно расширить, чтобы они содержали новые строки и столбцы.

Table()

Метод with_columns таблицы использует столбцы с метками для создания новой таблицы. Каждый столбец таблицы представляет собой массив. Чтобы добавить новый столбец в таблицу, используйте метку и массив при вызове with_column. (Метод with_column имеет тот же эффект.)

Начнём с пустой таблицы без столбцов.

Table().with_columns('Number of petals', make_array(8, 34, 5))
Number of petals
8
34
5

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

Table().with_columns(
    'Number of petals', make_array(8, 34, 5),
    'Name', make_array('lotus', 'sunflower', 'rose')
)
Number of petals Name
8 lotus
34 sunflower
5 rose

Мы можем дать этой таблице имя, а затем использовать другой столбец для её расширения.

flowers = Table().with_columns(
    'Number of petals', make_array(8, 34, 5),
    'Name', make_array('lotus', 'sunflower', 'rose')
)

flowers.with_columns(
    'Color', make_array('pink', 'yellow', 'red')
)
Number of petals Name Color
8 lotus pink
34 sunflower yellow
5 rose red

Каждый раз, когда вызывается метод with_columns, создаётся новая таблица, поэтому исходная таблица не изменяется. Например, таблица an_example по-прежнему имеет только два столбца, которые она имела при создании.

flowers
Number of petals Name
8 lotus
34 sunflower
5 rose

Создание таблиц таким способом требует большого количества ввода. Если данные уже введены где-то ещё, обычно можно использовать Python для чтения их в таблицу вместо того, чтобы вводить их по одному элементу за раз.

Обычно таблицы создаются из файлов, содержащих значения, разделённые запятыми. Эти файлы называются CSV-файлами.

Теперь мы используем метод read_table класса Table, чтобы прочитать CSV-файл, содержащий некоторые данные, которые использовал Минар на своей картине о русской кампании Наполеона. Данные помещаются в таблицу с именем minard.

minard = Table.read_table('minard.csv')
minard
Longitude Latitude City Direction Survivors
32 54.8 Smolensk Advance 145000
33.2 54.9 Dorogobouge Advance 140000
34.4 55.5 Chjat Advance 127100
37.6 55.8 Moscou Advance 100000
34.3 55.2 Wixma Retreat 55000
32 54.6 Smolensk Retreat 24000
30.4 54.4 Orscha Retreat 20000
26.8 54.3 Moiodexno Retreat 12000

Эти небольшие таблицы будут использоваться для демонстрации некоторых полезных методов работы с таблицами. Затем мы будем использовать эти же методы и разработаем другие методы на больших наборах данных.

Размер таблицы

Метод num_columns возвращает количество столбцов в таблице, а num_rows — количество строк.

minard.num_columns
5
minard.num_rows
8

Метка столбца

Метод labels можно использовать для перечисления меток всех столбцов. Для minard это не особенно полезно, но для очень больших таблиц не все столбцы могут быть видны на экране.

minard.labels
('Longitude', 'Latitude', 'City', 'Direction', 'Survivors')

Мы используем relabeled для изменения метки столбца. Это создаст новую таблицу и сохранит minard без изменений.

minard.relabeled('City', 'City Name')
Longitude Latitude City Name Direction Survivors
32 54.8 Smolensk Advance 145000
33.2 54.9 Dorogobouge Advance 140000
34.4 55.5 Chjat Advance 127100
37.6 55.8 Moscou Advance 100000
34.3 55.2 Wixma Retreat 55000
32 54.6 Smolensk Retreat 24000
30.4 54.4 Orscha Retreat 20000
26.8 54.3 Moiodexno Retreat 12000

Однако этот метод не изменяет исходную таблицу.

minard
Longitude Latitude City Direction Survivors
32 54.8 Smolensk Advance 145000
33.2 54.9 Dorogobouge Advance 140000
34.4 55.5 Chjat Advance 127100
37.6 55.8 Moscou Advance 100000
34.3 55.2 Wixma Retreat 55000
32 54.6 Smolensk Retreat 24000
30.4 54.4 Orscha Retreat 20000
26.8 54.3 Moiodexno Retreat 12000

Обычной практикой является присвоение исходного имени minard новой таблице, чтобы все будущие использования minard ссылались на таблицу с изменёнными метками.

minard = minard.relabeled('City', 'City Name')
minard
Longitude Latitude City Name Direction Survivors
32 54.8 Smolensk Advance 145000
33.2 54.9 Dorogobouge Advance 140000
34.4 55.5 Chjat Advance 127100
37.6 55.8 Moscou Advance 100000
34.3 55.2 Wixma Retreat 55000
32 54.6 Smolensk

Этот текст написан на языке Python. Доступ к данным в столбцах

Мы можем использовать метки столбцов для доступа к массиву данных в столбце.

minard.column('Survivors')
array([145000, 140000, 127100, 100000,  55000,  24000,  20000,  12000])

Пять столбцов имеют индексы 0, 1, 2, 3, 4. Доступ к столбцу Survivors также можно получить с помощью индекса столбца.

minard.column(4)
array([145000, 140000, 127100, 100000,  55000,  24000,  20000,  12000])

Восемь элементов массива имеют индексы от 0 до 7. Элементы столбца можно получить с помощью метода item.

minard.column(4).item(0)
145000
minard.column(4).item(5)
24000

Обработка данных в столбцах

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

initial = minard.column('Survivors').item(0)
minard = minard.with_columns(
    'Percent Surviving', minard.column('Survivors')/initial
)
minard
Долгота Широта Название города Направление Выжившие Процент выживших
32 54.8 Смоленск Наступление 145 000 100.00%
33.2 54.9 Дорогобуж Наступление 140 000 96.55%
34.4 55.5 Чать Наступление 127 100 87.66%
37.6 55.8 Москва Наступление 100 000 68.97%
34.3 55.2 Вихма Отступление 55 000 37.93%
32 54.6 Смоленск Отступление 24 000 16.55%
30.4 54.4 Орша Отступление 20 000 13.79%
26.8 54.3 Мойодэкно Отступление 12 000 8.28%

Чтобы отобразить проценты в виде процентов, мы используем опцию PercentFormatter и вызываем метод set_format. Метод set_format принимает объект Formatter, который может быть объектом DateFormatter, CurrencyFormatter, числовым или процентным.

minard.set_format('Percent Surviving', PercentFormatter)
Долгота Широта Название города Направление Выжившие Процент выживших
32 54.8 Смоленск Наступление 145 000 100.00%
33.2 54.9 Дорогобуж Наступление 140 000 96.55%
34.4 55.5 Чать Наступление 127 100 87.66%
37.6 55.8 Москва Наступление 100 000 68.97%
34.3 55.2 Вихма Отступление 55 000 37.93%
32 54.6 Смоленск Отступление 24 000 16.55%
30.4 54.4 Орша Отступление 20 000 13.79%
26.8 54.3 Мойодэкно Отступление 12 000 8.28%

Выбор подмножества столбцов

Метод select создаёт новую таблицу, содержащую только указанные столбцы.

minard.select('Longitude', 'Latitude')
Долгота Широта
32 54.8
33.2 54.9
34.4 55.5
37.6 55.8
34.3 55.2
32 54.6
30.4 54.4
26.8 54.3

Используя индекс столбца вместо метки, можно выполнить тот же выбор.

minard.select(0, 1)
Долгота Широта
32 54.8
33.2 54.9
34.4 55.5
37.6 55.8
34.3 55.2
32 54.6
30.4 54.4
26.8 54.3

Результат метода select — это новая таблица, даже если вы выбираете один столбец.

minard.select('Survivors')
Выжившие
145 000
140 000
127 100
100 000
55 000
24 000
20 000
12 000

Обратите внимание, что результат представляет собой таблицу, а не массив, как в случае с методом column.

minard.column('Survivors')
array([145000, 140000, 127100, 100000,  55000,  24000,  20000,  12000])

Другой способ создания новой таблицы, содержащей подмножество столбцов, — это удаление столбцов, которые вам не нужны.

minard.drop('Longitude', 'Latitude', 'Direction')
Название города Выжившие Процент выживших
Смоленск 145 000 100.00%
Дорогобуж 140 000 96.55%
Чать 127 100 87.66%
Москва 100 000 68.97%
Вихма 55 000 37.93%
Смоленск 24 000 16.55%
Орша 20 000 13.79%
Мойодэкно 12 000 8.28%

Методы select и drop не изменяют исходную таблицу. Напротив, они создают новые небольшие таблицы с общим набором данных. Исходная таблица остаётся полезной! Вы можете создавать множество различных таблиц, рассматривая только определённые столбцы, не беспокоясь о взаимном влиянии.

minard
Долгота Широта Название города Направление Выжившие Процент выживших
32 54.8 Смоленск Наступление 145 000 100.00%
33.2 54.9 Дорогобуж Наступление 140 000 96.55%
34.4 55.5 Чать Наступление 127 100 87.66%
37.6 55.8 Москва Наступление 100 000 68.97%
34.3 55.2 Вихма Отступление 55 000 37.93%
32 54.6 Смоленск Отступление 24 000 16.55%
30.4 54.4 Орша Отступление 20 000 13.79%
26.8 54.3 Мойодэкно Отступление 12 000 8.28%

Все методы, которые мы использовали, могут быть применены к любой таблице. ascending order.

distinct: если True, повторные значения в column_or_label будут опущены.

Возвращает: экземпляр Table, содержащий строки, отсортированные на основе значений в column_or_label.

marbles = Table().with_columns( ... "Цвет", make_array("Красный", "Зелёный", "Синий", "Красный", "Зелёный", "Зелёный"), ... "Форма", make_array("Круглая", "Прямоугольная", "Прямоугольная", "Круглая", "Прямоугольная", "Круглая"), ... "Количество", make_array(4, 6, 12, 7, 9, 2), ... "Цена", make_array(1.30, 1.30, 2.00, 1.75, 1.40, 1.00)) marbles Цвет | Форма | Количество | Цена Красный | Круглая | 4 | 1.3 Зелёный | Прямоугольная | 6 | 1.3 Синий | Прямоугольная | 12 | 2 Красный | Круглая | 7 | 1.75 Зелёный | Прямоугольная | 9 | 1.4 Зелёный | Круглая | 2 | 1 marbles.sort("Количество") Цвет | Форма | Количество | Цена Зелёный | Круглая | 2 | 1 Красный | Круглая | 4 | 1.3 Зелёный | Прямоугольная | 6 | 1.3 Красный | Круглая | 7 | 1.75 Зелёный | Прямоугольная | 9 | 1.4 Синий | Прямоугольная | 12 | 2 marbles.sort("Количество", descending = True) Цвет | Форма | Количество | Цена Синий | Прямоугольная | 12 | 2 Зелёный | Прямоугольная | 9 | 1.4 Красный | Круглая | 7 | 1.75 Зелёный | Прямоугольная | 6 | 1.3 Красный | Круглая | 4 | 1.3 Зелёный | Круглая | 2 | 1 marbles.sort(3) # столбец «Цена» Цвет | Форма | Количество | Цена Зелёный | Круглая | 2 | 1 Красный | Круглая | 4 | 1.3 Зелёный | Прямоугольная | 6 | 1.3 Зелёный | Прямоугольная | 9 | 1.4 Красный | Круглая | 7 | 1.75 Синий | Прямоугольная | 12 | 2 marbles.sort(3, distinct = True) Цвет | Форма | Количество | Цена Зелёный | Круглая | 2 | 1 Красный | Круглая | 4 | 1.3 Зелёный | Прямоугольная | 9 | 1.4 Красный | Круглая | 7 | 1.75 Синий | Прямоугольная | 12 | 2 В таблице help в верхней части появляется сигнатура метода sort.

sort(column_or_label, descending=False, distinct=False)

Это описывает три параметра позиции, имя и значение по умолчанию для sort. При вызове этого метода можно использовать позиционные или именованные параметры, поэтому следующие три вызова полностью эквивалентны.

sort('SALARY', True)
sort('SALARY', descending=True)
sort(column_or_label='SALARY', descending=True)

Когда параметр является просто True или False, включение имени параметра является полезным соглашением, чтобы более явно указать значение параметра.

Выбор строк

Обычно мы хотим извлечь только те строки, которые соответствуют определённому признаку. Например, нам могут понадобиться только строки, соответствующие воинам, или строки с зарплатой более миллиона долларов. Или мы можем захотеть только первые пять человек по зарплате.

Указание строк

Методы Table делают это — им нужен набор указанных строк. Его параметром является индекс строки или массив индексов, он создаёт новую таблицу, содержащую только эти строки.

Например, если мы хотим только первую строку nba, мы можем использовать take.

PLAYER POSITION TEAM '15-'16 SALARY
Paul Millsap PF Atlanta Hawks 18.6717
Al Horford C Atlanta Hawks 12
Tiago Splitter C Atlanta Hawks 9.75625
Jeff Teague PG Atlanta Hawks 8
Kyle Korver SG Atlanta Hawks 5.74648
Thabo Sefolosha SF Atlanta Hawks 4
Mike Scott PF Atlanta Hawks 3.33333
Kent Bazemore SF Atlanta Hawks 2
Dennis Schroder PG Atlanta Hawks 1.7634
Tim Hardaway Jr. SG Atlanta Hawks 1.30452

(опущено 407 строк)

nba.take(0)
PLAYER POSITION TEAM '15-'16 SALARY
Paul Millsap PF Atlanta Hawks 18.6717

Это новая таблица, содержащая только указанную нами единственную строку.

Указывая ряд индексов в качестве параметра, мы также можем получить четвёртую, пятую и шестую строки.

nba.take(np.arange(3, 6))
PLAYER POSITION TEAM '15-'16 SALARY
Jeff Teague PG Atlanta Hawks 8
Kyle Korver SG Atlanta Hawks 5.74648
Thabo Sefolosha SF Atlanta Hawks 4

Если мы хотим первые пять строк самых высокооплачиваемых игроков, мы можем сначала отсортировать по зарплате, а затем взять первые пять строк:

nba.sort('SALARY', descending=True).take(np.arange(5))
PLAYER POSITION TEAM '15-'16 SALARY
Kobe Bryant SF Los Angeles Lakers 25
Joe Johnson SF Brooklyn Nets 24.8949
LeBron James SF Cleveland Cavaliers 22.9705
Carmelo Anthony SF New York Knicks 22.875
Dwight Howard C Houston Rockets 22.3594

Метод where может это сделать. Его вывод представляет собой таблицу, столбцы которой совпадают с исходной таблицей, но только строки с указанным признаком.

Первый параметр метода where — это ярлык столбца, содержащего информацию о том, имеет ли строка интересующий нас признак. Если признак — «зарплата больше 10», то столбец будет SALARY.

Второй параметр метода where определяет способ указания признака. Некоторые примеры делают указанный способ более понятным.

В первом примере мы извлекаем данные обо всех игроках с зарплатой свыше 100 млн долларов.

nba.where('SALARY', are.above(10))
PLAYER POSITION TEAM '15-'16 SALARY
Paul Millsap PF Atlanta Hawks 18.6717
Al Horford C Atlanta Hawks 12
Joe Johnson SF Brooklyn Nets 24.8949
Thaddeus Young PF Brooklyn Nets 11.236
Al Jefferson C Charlotte Hornets 13.5
Nicolas Batum SG Charlotte Hornets 13.1253
Kemba Walker PG Charlotte Hornets 12
Derrick Rose PG Chicago Bulls 20.0931
Jimmy Butler SG Chicago Bulls 16.4075
Joakim Noah C Chicago Bulls 13.4

(опущено 59 строк)

Параметр are.above(10) гарантирует, что зарплата каждой выбранной строки превышает 10.

Новая таблица содержит 69 строк, что соответствует 69 игрокам с зарплатой в 100 млн. Последовательность этих строк облегчает анализ данных. Самый «бедный» игрок в этой группе (с зарплатой выше 100 млн) — Демар Дерозан из команды «Торонто Рэпторс».

nba.where('SALARY', are.above(10)).sort('SALARY')
PLAYER POSITION TEAM '15-'16 SALARY
DeMar DeRozan SG Toronto Raptors 10.05
Gerald Wallace SF Philadelphia 76ers 10.1059
Luol Deng SF Miami Heat 10.1516
Monta Ellis SG Indiana Pacers 10.3
Wilson Chandler SF Denver Nuggets 10.4494
Brendan Haywood C Cleveland Cavaliers 10.5225
Jrue Holiday PG New Orleans Pelicans 10.5955
Tyreke Evans SG New Orleans Pelicans 10.7346
Marcin Gortat C Washington Wizards 11.2174
Thaddeus Young PF Brooklyn Nets 11.236

(опущено 59 строк)

Сколько зарабатывает Стивен Карри? Чтобы ответить на этот вопрос, нам нужно обратиться к строке, где значение в столбце PLAYER равно Stephen Curry. Это таблица, состоящая только из одной строки:

nba.where('PLAYER', are.equal_to('Stephen Curry'))
PLAYER POSITION TEAM '15-'16 SALARY
Stephen Curry PG Golden State Warriors 11.3708

Зарплата Карри составляет менее 11,4 млн долларов. Это большие деньги, но меньше половины зарплаты Леброна Джеймса. Вы можете найти зарплату в таблице «Топ-5» в начале этого раздела или вы можете найти её в коде выше, заменив 'Stephen Curry на 'LeBron James'.

Код снова использует are, но на этот раз это предикат equal_to, а не тот, который использовался ранее. Таким образом, например, вы можете получить таблицу со всеми воинами:

nba.where('TEAM', are.equal_to('Golden State Warriors')).show()
PLAYER POSITION TEAM '15-'16 SALARY
Klay Thompson SG Golden State Warriors 15.501
Draymond Green PF Golden State Warriors 14.2609
Andrew Bogut C Golden State Warriors 13.8
Andre Iguodala SF Golden State Warriors 11.7105
Stephen Curry PG Golden State Warriors 11.3708
Jason Thompson PF Golden State Warriors 7.00847
Shaun Livingston PG Golden State Warriors 5.54373
Harrison Barnes SF Golden State Warriors 3.8734
Marreese Speights C Golden State Warriors 3.815
Leandro Barbosa SG Golden State Warriors 2.5
Festus Ezeli C Golden State Warriors 2.00875
Brandon Rush SF Golden State Warriors 1.27096
Kevon Looney SF Golden State Warriors 1.13196
Anderson Varejao PF Golden State Warriors 0.289755

Эта часть таблицы уже упорядочена по зарплате, потому что исходная таблица была упорядочена по зарплате и показывает игроков одной команды. Метод .show() в конце строки гарантирует отображение всех строк, а не только первых 10 строк.

Запрос строки, в которой значение столбца равно определённому значению, очень распространён, поэтому вызов are.equal_to является необязательным. Напротив, можно использовать только имя столбца и значение для вызова метода where, чтобы достичь того же эффекта.

nba.where('TEAM', 'Denver Nuggets') 
# эквивалентно nba.where('TEAM', are.equal_to('Denver Nuggets'))
PLAYER POSITION TEAM '15-'16 SALARY
Danilo Gallinari SF Denver Nuggets 14
Kenneth Faried PF Denver Nuggets 11.236
Wilson Chandler SF Denver Nuggets 10.4494
JJ Hickson C Denver Nuggets 5.6135
Jameer Nelson PG Denver Nuggets 4.345
Will Barton SF Denver Nuggets 3.53333
Emmanuel Mudiay PG Denver Nuggets 3.10224
Darrell Arthur PF Denver Nuggets 2.814
Jusuf Nurkic C Denver Nuggets 1.842
Joffrey Lauvergne C Denver Nuggets 1.70972

(пропущено 4 строки)

Несколько признаков

Используя метод where несколько раз, вы можете получать доступ к строкам, которые имеют несколько указанных признаков. Например, это один из способов извлечения данных всех защитников с зарплатой более 150 млн долларов. | Игрок | Позиция | Команда | Зарплата 2015-2016 | | --- | --- | --- | --- | | Деррик Роуз | PG | Чикаго Буллз | 20.0931 | | Кайри Ирвинг | PG | Кливленд Кавальерс | 16.4075 | | Крис Пол | PG | Лос-Анджелес Клипперс | 21.4687 | | Рассел Уэстбрук | PG | Оклахома-Сити Тандер | 16.7442 | | Джон Уолл | PG | Вашингтон Уизардс | 15.852 |

Общая форма

Теперь вы уже осознали, что для создания новой таблицы с использованием метода where и are, а также соответствующих условий, необходимо выбрать строки с заданными характеристиками:

original_table_name.where(column_label_string, are.condition)

nba.where('SALARY', are.between(10, 10.3))
Игрок Позиция Команда Зарплата 2015–2016
Луол Денг SF Майами Хит 10.1516
Джеральд Уоллес SF Филадельфия Севенти Сиксерс 10.1059
Дэнни Грин SG Сан-Антонио Спёрс 10
Демар Дерозан SG Торонто Рэпторс 10.05

Обратите внимание, что в таблице выше есть игрок Дэнни Грин, который заработал миллион долларов, но нет игрока Монты Эллиса, заработавшего 1,3 миллиона долларов. Как и в других местах Python, диапазон включает левую границу, но не включает правую.

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

nba.where('PLAYER', are.equal_to('Barack Obama'))
PLAYER POSITION TEAM SALARY

Дополнительные условия

Вот некоторые предикаты, которые могут оказаться полезными. Обратите внимание, что x и y — это числа, STRING — строка, а Z может быть числом или строкой; вы должны указать их в зависимости от того, какой атрибут вы хотите использовать.

Предикат Описание
are.equal_to(Z) Равно Z
are.above(x) Больше x
are.above_or_equal_to(x) Больше или равно x
are.below(x) Меньше x
are.below_or_equal_to(x) Меньше или равно x
are.between(x, y) Больше или равно x, меньше y
are.strictly_between(x, y) Больше x, меньше y
are.between_or_equal_to(x, y) Больше или равно x, меньше или равно y
are.containing(S) Содержит строку S

Вы также можете указать отрицание любого из этих условий, добавив .not_ перед условием.

Предикат Описание
are.not_equal_to(Z) Не равно Z
are.not_above(x) Не больше x

И так далее. Обычно применяются обычные логические правила, например, «не больше x» эквивалентно «меньше или равно x».

Мы завершим этот раздел серией примеров.

Использование are.containing помогает сократить количество набираемых символов. Например, вы можете указать Warriors, а не Golden State Warriors:

nba.where('TEAM', are.containing('Warriors')).show()
Игрок Позиция Команда Зарплата 2015–2016
Клэй Томпсон SG Голден Стэйт Уорриорз 15,501
Дрэймонд Грин PF Голден Стэйт Уорриорз 14,2609
Эндрю Богут C Голден Стэйт Уорриорз 13,8
Андре Игудала SF Голден Стэйт Уорриорз 11,7105
Стивен Карри PG Голден Стэйт Уорриорз 11,3708
Джейсон Томпсон PF Голден Стэйт Уорриорз 7,00847
Шон Ливингстон PG Голден Стэйт Уорриорз 5,54373
Харрисон Барнс SF Голден Стэйт Уорриорз 3,8734
Маррис Спейтс C Голден Стэйт Уорриорз 3,815
Леандро Барбоза SG Голден Стэйт Уорриорз 2,5
Фестус Эзели C Голден Стэйт Уорриорз 2,00875
Брэндон Раш SF Голден Стэйт Уорриорз 1,27096
Кевон Лунни SF Голден Стэйт Уорриорз 1,13196
Андерсон Варежао PF Голден Стэйт Уорриорз 0,289755

Можно извлечь данные всех защитников, включая разыгрывающих защитников и атакующих защитников.

nba.where('POSITION', are.containing('G'))
Игрок Позиция Команда Зарплата 2015–2016
Джефф Тиг PG Атланта Хоукс 8
Кайл Корвер SG Атланта Хоукс 5,74648
Деннис Шрёдер PG Атланта Хоукс 1,7634
Тим Хардуэй-младший SG Атланта Хоукс 1,30452
Джейсон Ричардсон SG Атланта Хоукс 0,947276
Ламар Паттерсон SG Атланта Хоукс 0,525093
Терран Петтуэй SG Атланта Хоукс 0,525093
Эйвери Брэдли PG Бостон Селтикс 7,73034
Айзея Томас PG Бостон Селтикс 6,91287
Маркус Смарт PG Бостон Селтикс 3,43104

(Опущено 171 строка)

Вы можете получить всех игроков, кроме тех, кто играет за команду Кливленд Кавальерс, и чья зарплата составляет не менее двух миллионов долларов:

other_than_Cavs = nba.where('TEAM', are.not_equal_to('Cleveland Cavaliers'))
other_than_Cavs.where('SALARY', are.not_below(20))
Игрок Позиция Команда Зарплата 2015–2016
Джо Джонсон SF Бруклин Нетс 24,8949
Деррик Роуз PG Чикаго Буллз 20,0931
Дуайт Ховард C Хьюстон Рокетс 22,3594
Крис Пол PG Лос-Анджелес Клипперс 21,4687
Коби Брайант SF Лос-Анджелес Лейкерс 25
Криса Боша PF Майами Хит 22,1927
Дуэйна Уэйда SG Майами Хит 20
Кармело Энтони SF Нью-Йорк Никс Если вы хотите узнать, сколько людей пожилого возраста, вы можете использовать Python для обнаружения:
males.where('AGE', are.between(98, 100))
SEX AGE 2014
1 98 13518
1 99 8951
females.where('AGE', are.between(98, 100))
SEX AGE 2014
2 98 46208
2 99 32517

На рисунке ниже показано соотношение полов в зависимости от возраста. Синяя кривая показывает соотношение на 2014 год в зависимости от возраста.

От 0 до 60 лет это соотношение примерно равно 1 (что означает, что мужчин и женщин примерно поровну), но начиная с 65 лет оно начинает резко увеличиваться (женщин больше, чем мужчин).

В США женщин больше, чем мужчин, отчасти из-за значительного гендерного дисбаланса среди пожилых женщин.

ratios.plot('AGE')

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-data8-textbook-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-data8-textbook-zh.git
oschina-mirror
wizardforcel-data8-textbook-zh
wizardforcel-data8-textbook-zh
master