✅Об авторе: в настоящее время я учусь на бакалавриате по искусственному интеллекту. Мне нравятся компьютеры и программирование, и я веду блоги, чтобы записывать процесс обучения. 🍎Персональная домашняя страница:маленькая воющая блог собачкаиз 🍊Личное кредо: создайте разум для неба и земли, определите судьбу живых и людей,продолжайте уникальные знания святых прошлого и создайте мир для всех поколений. 🥭Содержание этой статьи:Обработка данных Python: использование библиотеки Pandas
Pandas основан на NumPy Построение массива из, специально основанных массив из функций не делает использование
for
Циклическая обработка данных.Хотя Pandas принял большое количество NumPy Стиль кодирования, но самая большая разница между ними заключается в Pandas Он специально разработан для обработки табличных и смешанных данных. и NumPy Больше подходит для обработки данных единого числового массива.
Чтобы использовать Pandas,Сначала с ним нужно ознакомитьсяиздва основныхструктура данных:
Series
иDataFrame
。
Series
Это своего рода одномерный массив, похожий наизобъект,Он состоит из набора данных(каждыйдобрый NumPy данныетип)и группаисвязанный сизметка данных(то есть индекс)композиция。Самый простой может быть сгенерирован только из одного набора данных.изSeries
:
import pandas as pd
obj = pd.Series([4,7,-5,3])
print(obj)
Series
изнить Выражается в виде:индекссуществоватьлевый,существуют ценностные права. Поскольку для данных не указан индекс,Таким образом, он автоматически создаст От 0 до N-1 (N — длина данных) и целочисленный индекс。может пройтиSeries
изvalues
иindex
Свойство получает представление массиваииндексный объект:
import pandas as pd
obj = pd.Series([4,7,-5,3])
print(obj.values)
print(obj.index)
print(list(obj.index))
Также возможно использование конкретных индексов:
import pandas as pd
obj2 = pd.Series([5,2,-3,1], index=['d', 'b', 'c', 'a'])
print(obj2)
может пройтииндексиз Выбор метода
Series
серединаизодно или несколько значений:
import pandas as pd
obj2 = pd.Series([5,2,-3,1], index=['d', 'b', 'c', 'a'])
print(obj2['a'])
print(obj2[['a','c','b']])
Использование функций NumPy или операций, подобных NumPy (таких как фильтрация логических массивов, скалярное умножение, применение математических функций и т. д.), сохранит ссылку на значение индекса:
import pandas as pd
obj2 = pd.Series([5,2,-3,1], index=['d', 'b', 'c', 'a'])
print(obj2 > 0)
print(obj2[obj2 > 0])
print(obj2 * 10)
Вы также можете
Series
рассматривается как фиксированная длинаизупорядоченный словарь,потому чтоэтодаиндексценитьприезжатьданныеценитьизотображение。он можетиспользоватьсуществовать Многим изначально нужен был словарьпараметризфункциясередина:
import pandas as pd
obj2 = pd.Series([5,2,-3,1], index=['d', 'b', 'c', 'a'])
print('b' in obj2)
print('e' in obj2)
Если данные хранятся в словаре Python,Вы также можете создать его непосредственно через этот словарь
Series
:
import pandas as pd
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj3 = pd.Series(sdata)
print(obj3)
Если передается только один словарь,Результат
Series
серединаизиндекс Сразуда Оригиналсловарьизключ(Расставить по порядку)。Вы можете передать отсортированныйизсловарьизключизменить порядок:
# В этом примере три значения, соответствующие индексу состояний в sdata, будут найдены и помещены в соответствующие позиции.
# Но потому что "California" Соответствующее значение issdata не найдено.
# Таким образом, результатом будет NaN (то есть «не число» (Not a Number),существоватьPandasсередина,этоиспользовать Ю сказал Отсутствующие значенияилиNAценить)。
# потому что "Utah" Не существуетсостояния, оно удалено из результатов.
import pandas as pd
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
states = ['California', 'Oregon', 'Texas', 'Ohio']
obj4 = pd.Series(sdata, index=states)
print(obj4)
Pandas из
isnull
иnotnull
Функция можетиспользовать Чтобы обнаружить недостающие данные:
import pandas as pd
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
states = ['California', 'Oregon', 'Texas', 'Ohio']
obj4 = pd.Series(sdata, index=states)
print(pd.isnull(obj4))
print(pd.notnull(obj4))
Series
Есть и подобныеиз Примерметод:
import pandas as pd
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
states = ['California', 'Oregon', 'Texas', 'Ohio']
obj4 = pd.Series(sdata, index=states)
print(obj4.isnull())
Для многих приложений,
Series
самое важноеиз Одна функция,этовстречав соответствии с Операцияизиндекс Этикеткаавтоматическое выравниваниеданные:
import pandas as pd
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj3 = pd.Series(sdata)
states = ['California', 'Oregon', 'Texas', 'Ohio']
obj4 = pd.Series(sdata, index=states)
print(obj3)
print(obj4)
print(obj3 + obj4)
Series
объектсами Чтоиндекс Всеесть одинname
свойство,Долженсвойствои Pandas Другие ключевые функции очень тесно связаны между собой:
import pandas as pd
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
states = ['California', 'Oregon', 'Texas', 'Ohio']
obj4 = pd.Series(sdata, index=states)
obj4.name = 'population'
obj4.index.name = 'state'
print(obj4)
DataFrame
это тип таблицыизструктура данных,Он содержит набор упорядоченных столбцов.,Каждый столбец может отличаться от типа значения (числового значения、нить、логические значения и т. д.)。DataFrame
существующий ХОРОШОиндекс Существует также Списокиндекс,он можетрассматриваться как Зависит отSeries
композицияизсловарь(общийиспользоватьтот же самыйиндекс)。DataFrame
серединаизданныедасилинесколько2D-блочное хранилищеиз(вместо списка、Словарь или псевдоним одномерной структуры данных).создавать
DataFrame
из Есть много способов,Самый распространенный — передать его непосредственно в список одинаковой длины или массивов NumPy Словарь:
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data)
print(frame)
результат
DataFrame
встреча Автоматически добавлятьначальствоиндекс(иSeries
Такой же),И все колонки будут Расставить по порядку。Для особо крупныхиз
DataFrame
,head
метод Выберу пятерку лучших ХОРОШО:
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data)
print(frame.head(2))
Если указана последовательность столбцов,но
DataFrame
из Столбцы будут введены в указанном порядке.ХОРОШОдоговоренность:
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data, columns=['year', 'state', 'pop'])
print(frame)
Если входящие данные из столбца существуют не найдены,ВолясуществоватьрезультатсерединапроизводитьОтсутствующие значения:
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
index=['one', 'two', 'three', 'four','five', 'six'])
print(frame2)
print(frame2.columns)
Через аналогичный тег словаря из метода или атрибут из метода,может быть
DataFrame
из Столбец становится однимSeries
:
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
index=['one', 'two', 'three', 'four','five', 'six'])
print(frame2['state'])
print(frame2.year)
Уведомление: возвращатьсяиз
Series
обладать оригиналомDataFrame
такой жеизиндекс,И этоname
свойствотакже было соответственнонастраиватьхорошо。ХОРОШОтакжеможет пройти Расположениеилиимяизпуть вперед ХОРОШОполучать,напримериспользовать
loc
свойство:
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
index=['one', 'two', 'three', 'four','five', 'six'])
frame2.loc['three']
Списокможет пройтинаделятьценитьизпуть вперед ХОРОШОИсправлять。Например,Вы можете дать это местоиз
"debt"
Списокнаделятьначальствоскалярценитьилигруппаценить:
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
index=['one', 'two', 'three', 'four','five', 'six'])
frame2['debt'] = 16.5
print(frame2)
import numpy as np
frame2['debt'] = np.arange(6.)
print(frame2)
При назначении списка или массива столбцу,Что Длина должна бытьи
DataFrame
из Длина соответствует。еслинаделятьценитьизэтоSeries
,Воляточное совпадениеDataFrame
изиндекс,Все пустые места будут заполнены Отсутствующими значениями:
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
index=['one', 'two', 'three', 'four','five', 'six'])
val = pd.Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])
frame2['debt'] = val
print(frame2)
Не существоватьсуществоватьиз Списокнаделятьценитьвстречасоздаватьвыйти с однимновый Список。закрыватьключ Характер
del
использовать Вудалить Список。как
del
изпример,Сначала добавьте новый столбец «Логическое значение».,state
Это'Ohio'
:
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
index=['one', 'two', 'three', 'four','five', 'six'])
val = pd.Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])
frame2['debt'] = val
frame2['eastern'] = frame2.state == 'Ohio'
print(frame2)
del frame2['eastern']
print(frame2)
Уведомление: проходитьиндекс Способвозвращатьсяиз Список ТолькодасоответствующийПросмотр данныхВот и все,Не копия. поэтому,верновозвращатьсяиз
Series
сделанныйизлюбой Сразу地Исправлять全ВсевстречаотражатьприезжатьисточникDataFrame
начальство。проходитьSeries
изcopy
методможно указатькопировать Список。Еще один распространенныйизданныеформадаВложенные словари,если Вложенные словариперейти к
DataFrame
, Pandas Воляинтерпретируется как:Внешний словарь ключей используется как столбцы, а внутренние ключи — как индексы ХОРОШО.:
import pandas as pd
pop1 = {'Nevada': {2001: 2.4, 2002: 2.9},
'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = pd.DataFrame(pop1)
print(frame3)
Вы также можете использовать что-то вроде NumPy Массив изметод,верно
DataFrame
Входить ХОРОШОТранспонировать(обмен ХОРОШОи Список):
import pandas as pd
pop1 = {'Nevada': {2001: 2.4, 2002: 2.9},
'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = pd.DataFrame(pop1)
print(frame3.T)
Ключи внутреннего словаря объединяются и сортируются для формирования окончательного индекса. Этого не произойдет, если индекс указан явно:
import pandas as pd
pop1 = {'Nevada': {2001: 2.4, 2002: 2.9},
'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
print(pd.DataFrame(pop1, index=[2001, 2002, 2003]))
Зависит от
Series
композицияизсловарь Разница Нет多такжеда Такой жеизиспользовать Закон:
import pandas as pd
pop1 = {'Nevada': {2001: 2.4, 2002: 2.9},
'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = pd.DataFrame(pop1)
print(type(frame3['Ohio'][:2]))
pdata = {'Ohio': frame3['Ohio'][:-1],
'Nevada': frame3['Nevada'][:2]}
print(pd.DataFrame(pdata))
таблица ниже Список Вне
DataFrame
Конструктор может принятьизразличные данные:
тип | описывать |
---|---|
2D ндаррей | Матрица данных, вы также можете передавать метки строк и столбцов. |
Словарь массивов, списков или кортежей | Каждая последовательность станет столбцом DataFrame. Все последовательности должны быть одинаковой длины |
Структурированные массивы/массивы записей NumPy | Что-то вроде «словаря массивов» |
Словарь, состоящий из серий | Каждая серия станет столбцом. Если индекс не указан явно, индексы каждой серии будут объединены с индексом строки результата. |
словарь, состоящий из словарей | Каждый внутренний словарь станет столбцом. Ключи будут объединены в полученный индекс из ХОРОШО, за которым следует «Словарь, состоящий из серия”из ситуации - нравится |
Список словарей или серий | Каждый элемент станет строкой DataFrame. Объединение ключей словаря или индексов серий станет метками столбцов DataFrame. |
список списков или кортежей | Похоже на: 2D ндаррей |
Другой фрейм данных | Индекс этого DataFrame будет унаследован, если другой индекс не указан явно. |
NumPyMaskedArray | Что-то вроде «2D В этом случае существует только значение маски, и результат DataFrame станет NA/Отсутствующие. значения |
еслинастраивать Понятно
DataFrame
изindex
иcolumns
изname
свойство,Эта информация также будет отображаться:
import pandas as pd
pop1 = {'Nevada': {2001: 2.4, 2002: 2.9},
'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = pd.DataFrame(pop1)
frame3.index.name = 'year'
frame3.columns.name = 'state'
print(frame3)
и
Series
Такой же,values
свойствотакжевстречав двух измеренияхndarray
изформавозвращатьсяDataFrame
серединаизданные:
import pandas as pd
pop1 = {'Nevada': {2001: 2.4, 2002: 2.9},
'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = pd.DataFrame(pop1)
print(frame3.values)
если
DataFrame
каждый Списокизданныетипдругой,Поскольку массивы NumPy хранят данные, они должны быть согласованными.,ноценитьмножествоизdtype
ВолявыбиратьиспользоватьСовместимость со всеми данными столбцов:
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
index=['one', 'two', 'three', 'four','five', 'six'])
val = pd.Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])
frame2['debt'] = val
print(frame2.values)
индексный объект
Pandas изиндексный объект Отвечает за управление метками осей.и Чтодругой юаньданные(напримеросьимя等)。Строить
Series
илиDataFrame
час,Местоиспользоватьприезжатьизлюбоймножествоили Что Его предисловие Списокизтеги будут преобразованы вIndex
:
import pandas as pd
obj = pd.Series(range(3), index=['a', 'b', 'c'])
index = obj.index
print(index)
print(index[1:])
Index
объектда Нет Может Изменятьиз,Поэтому пользователь не может его изменить:
import pandas as pd
obj = pd.Series(range(3), index=['a', 'b', 'c'])
index = obj.index
index[1] = 'd'
Неизменяемость позволяет
Index
объектсуществоватьнесколькоструктура данныхмеждуБезопасный обмен:
import pandas as pd
labels = pd.Index(np.arange(3))
print(labels)
obj2 = pd.Series([1.5, -2.5, 0], index=labels)
print(obj2)
print(obj2.index is labels)
obj3 = pd.Series(['a', 'b', 'c'], index=labels)
print(obj3)
print(obj3.index is labels)
кроме похожего на массив,
Index
из Функция также аналогична фиксированному размеру.изсобирать:
import pandas as pd
pop1 = {'Nevada': {2001: 2.4, 2002: 2.9},
'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = pd.DataFrame(pop1)
print(frame3)
print(frame3.columns)
print('Ohio' in frame3.columns)
print(2003 in frame3.index)
и Python из коллекций разные,Pandas из
Index
Может содержать дубликатыиз Этикетка:
import pandas as pd
dup_labels = pd.Index(['foo', 'foo', 'bar', 'bar'])
print(dup_labels)
При выборе дубликата тега отображаются все результаты.
Каждый индекс имеет методы и свойства, которые можно использовать для настройки логики и ответов на распространенные вопросы о данных, содержащихся в индексе. В следующей таблице перечислены эти методы:
метод | описывать |
---|---|
append | Подключите другой объект индекса, чтобы создать новый индекс. |
difference | Рассчитайте набор разностей и получите индекс |
intersection | Рассчитать пересечение |
union | Вычислительный союз |
isin | Вычисляет логический массив, указывающий, содержится ли каждое значение в наборе аргументов. |
delete | Удалите элемент с индексом i и получите новый индекс. |
drop | Удалите переданное значение и получите новый индекс. |
insert | Вставьте элемент с индексом i и получите новый индекс. |
is_monotonic | Возвращает True, когда каждый элемент больше или равен предыдущему элементу. |
is_unique | Возвращает True, если индекс не имеет повторяющихся значений |
unique | Подсчитать массив уникальных значений в Ilndex |
Pandasобъектизважныйметодда
reindex
,Его функция — создать новый объект.,Его данные соответствуют новому индексу. Посмотрите на следующий пример:
import pandas as pd
obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])
print(obj)
использовать Должен
Series
изreindex
Волявстречав соответствии сновыйиндекс Входить ХОРОШОпереставить。есликто-тоиндексценитькогда前Нет存существовать,Просто представь Отсутствующие значения:
import pandas as pd
obj2 = obj.reindex(['a', 'b', 'c', 'd', 'e'])
print(obj2)
Для временных рядов упорядоченные данные, подобные этим,Переиндексациячас Может Может потребоваться некоторая вставкаценитьиметь дело с。
method
Параметры Вот и вседостигатьприезжатьэтотглазиз,Например,делатьиспользоватьffill
Можетдо реализации Кценитьнаполнение:
import pandas as pd
obj3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
print(obj3)
print(obj3.reindex(range(6), method='ffill'))
С помощью
DataFrame
,reindex
Может Исправлять(ХОРОШО)индекси Список。Толькопередачаодинпоследовательность Списокчас,встреча Результаты переиндексации в порядке:
import pandas as pd
frame = pd.DataFrame(np.arange(9).reshape((3,3)), index=['a', 'c', 'd'], columns=['Ohio', 'Texas', 'California'])
print(frame)
frame2 = frame.reindex(['a', 'b', 'c', 'd'])
print(frame2)
Список Можетиспользовать
columns
закрыватьключ Характер Переиндексация:
states = ['Texas', 'Utah', 'California']
print(frame.reindex(columns = states))
таблица ниже Список Вне
reindex
функцияизкаждыйпараметриописывать:
параметр | описывать |
---|---|
index | Новая последовательность, которая будет использоваться в качестве индекса. Это может быть экземпляр индекса или другая последовательная структура данных Python. Индекс будет использоваться полностью, как если бы не было копирования. |
method | Метод интерполяции (заполнения) |
fill_value | В процессе переиндексации значения замены используются, когда необходимо ввести недостающие значения. |
limit | Максимальный объем заполнения при наполнении вперед или назад |
tolerance | При заполнении вперед и назад максимальное расстояние (расстояние по абсолютному значению) между неточными совпадениями заполнения. |
level | Соответствует простому индексу на указанном уровне Multindex, в противном случае выбирает его подмножество. |
copy | По умолчанию установлено значение True, и оно будет скопировано в любом случае, если оно имеет значение False, оно не будет скопировано, если старые и новые значения равны; |
Переместить один или несколько элементов на ось легко.,Просто имейте индексированный массив или список. Из-за необходимости выполнить некоторую логику сортировки и сбора данных.,Месток
drop
методвозвращатьсяизэтосуществоватьобозначениеосьначальствоудалить Понятнообозначениеценитьизновый Объект:
import pandas as pd
obj = pd.Series(np.arange(5.), index = ['a', 'b', 'c', 'd', 'e'])
print(obj)
new_obj = obj.drop('c')
print(new_obj)
obj.drop(['d', 'c'])
print(obj)
верно В
DataFrame
,Вы можете удалить значение индекса на любой оси. для демонстрации,Первыйновыйпостроить одинDataFrame
пример:
import pandas as pd
data = pd.DataFrame(np.arange(16).reshape((4, 4)),
index=['Ohio', 'Colorado', 'Utah', 'New York'],
columns=['one', 'two', 'three', 'four'])
print(data)
использовать Этикеткапоследовательность Списокнастраиватьиспользовать
dro
pвстречаот ХОРОШОЭтикетка(axis 0) Удалить значение:
print(data.drop(['Colorado', 'Ohio']))
проходитьпередача
axis=1
илиaxis='columns'
Можетудалить Списокизценить:
print(data.drop('two', axis = 1))
print(data.drop(['two', 'four'], axis='columns'))
print(data)
многофункцияс
inplace
параметр,нравитьсяdrop
,встреча ИсправлятьSeries
илиDataFrame
изразмерилиформа,Объекты могут быть изменены на месте,Не вернет новый из Объект:
import pandas as pd
obj = pd.Series(np.arange(5.), index = ['a', 'b', 'c', 'd', 'e'])
print(obj)
obj.drop('c', inplace=True)
print(obj)
осторожныйделатьиспользовать
inplace
,Это уничтожит все удаленные данные.
Series
индекс(obj[…])из工作Способпохожий В NumPy множествоизиндекс,толькоSeries
изиндексценить Нет Толькодацелое число。подданесколькопример:
import pandas as pd
obj = pd.Series(np.arange(4.), index=['a', 'b', 'c', 'd'])
print(obj)
print(obj['b'])
print(obj[1])
print(obj[2:4])
print(obj[['b', 'a', 'd']])
print(obj[[1,3]])
print(obj[obj < 2])
Используйте тег для операций нарезки и обычных и для операций нарезки Python, отличающихся друг от друга.,Его конец содержит из:
print(obj['b':'c'])
использоватькусочек Можетверно
Series
изсоответствующий部分Входить ХОРОШОнастраивать:
obj['b':'c'] = 5
print(obj)
использоватьодинценитьилипоследовательность Списокверно
DataFrame
Входить ХОРОШОиндекс Что实Сразудаполучатьодинилинесколько Список:
import pandas as pd
data = pd.DataFrame(np.arange(16).reshape((4, 4)),
index=['Ohio', 'Colorado', 'Utah', 'New York'],
columns=['one', 'two', 'three', 'four'])
print(data)
print(data['two'])
print(data[['three', 'one']])
这добрыйиндекс Способиметьнесколько特殊из Состояние。首Первыйпроходитьсрез или логический массивВыбиратьданные:
print(data[:2])
print(data[data['three'] > 5])
Выбирать ХОРОШОизязык Закон
data[:2]
Очень удобно。К[ ]пройти одиночныйизэлементили Списокповерхность,Тольковыбрать столбец。Другой видиспользовать Закондапроходитьлогическое значение
DataFrame
(напримерпод这个Зависит от Скалярное сравнение Операция Приходите виз)Входить ХОРОШОиндекс:
print(data < 5)
print(data[data<5])
data[data < 5] = 0
print(data)
верно В
DataFrame
из ХОРОШОиз Этикеткаиндекс,Особенныйиз Этикетка Операциясимволloc
иiloc
。этоих Можетпозволю тебеиспользоватьпохожий NumPy изотметка,делатьиспользоватьось Этикетка(loc
)илицелочисленный индекс(iloc
),отDataFrame
выбирать ХОРОШОи Списокизподмножество。В качестве предварительного примера давайте выделим строку и столбцы с помощью меток:
import pandas as pd
data = pd.DataFrame(np.arange(16).reshape((4, 4)),
index=['Ohio', 'Colorado', 'Utah', 'New York'],
columns=['one', 'two', 'three', 'four'])
print(data)
print(data.loc['Colorado', ['two', 'three']])
print(type(data.loc['Colorado', ['two', 'three']]))
print(data.iloc[2,[3,0,1]])
print(data.iloc[2])
print(data.iloc[[1,2], [3,0,1]])
Эти две функции индексирования также работают с одной меткой или срезами нескольких меток:
print(data.loc[:'Utah', 'two'])
print(data.iloc[:, :3][data.three > 5])
существовать Pandas середина,иметьнесколькометод Может Выбиратьи Тяжелыйновыйкомбинацияданные。таблица нижеверно
DataFrame
Входить ХОРОШОКраткое содержание:
тип | описывать |
---|---|
df[val] | Выбор одного столбца или группы столбцов из DataFrame более удобен в особых случаях: Булев массив (фильтр ХОРОШО);、ломтик(ХОРОШОломтик)、или Boolean DataFrame (установите значение в зависимости от условия) |
df.loc[val] | Выберите одну строку или группу строк DataFrame с помощью меток. |
df.locl:, val] | Используйте метки для выбора одного столбца или подмножества столбцов. |
df.loc[val1,val2] | Выберите как строки, так и столбцы с помощью меток |
df.iloc[where] | Выберите одну строку или подмножество строк из DataFrame по целочисленной позиции. |
df.iloc[:,where] | Выберите один столбец или подмножество столбцов из DataFrame по целочисленной позиции. |
df.iloc[where_i, where_.j] | Выберите строки и столбцы по целочисленной позиции |
df.at[label_i, label_j] | Выберите один скаляр с помощью меток строк и столбцов. |
df.iat[i,j] | Выбирает один скаляр по положению строки и столбца (целое число) |
reindex | Выбор строк или столбцов по метке |
get_value, set_value | Выберите одно значение с помощью меток строк и столбцов. |
Обрабатывает целочисленную индексацию Pandas объектчасто ставит в тупикновыйрука,потому чтоэтои Python Встроенный синтаксис индексации для списков и кортежей различен. Например, вы можете не думать, что следующий код приведет к ошибке:
import pandas as pd
ser = pd.Series(np.arange(3.0))
print(ser)
print(ser[2])
print(ser[-1])
здесь,Pandas Целочисленную индексацию можно делать неохотно, но это приведет к небольшим ошибкам. У нас есть индексы, содержащие 0,1,2, но ввести то, что хочет пользователь (индексация на основе тегов или позиций), сложно, плюс нет никакой двусмысленности с нецелочисленными индексами:
import pandas as pd
ser2 = pd.Series(np.arange(3.), index=['a', 'b', 'c'])
print(ser2[-1])
Чтобы добиться объединения ХОРОШО,Если индекс оси содержит целое число,При выборе данных всегда используется тег use. для большей точности,пожалуйстаделатьиспользовать
loc
(Этикетка)илиiloc
(целое число):
import pandas as pd
ser = pd.Series(np.arange(3.0))
print(ser)
print(ser[:1])
print(ser.loc[:1])
print(ser.iloc[:1])
Обратите внимание на различие результатов трех приведенных выше утверждений.
Pandas Одной из наиболее важных функций является то, что он может выполнять арифметические операции над объектами с разными индексами. Когда существование добавляет объекты, если существуют разные пары индексов, результатом индекса является объединение пар индексов. Для пользователей, имеющих опыт работы с базами данных, это похоже на существование индексных тегов в автоматических внешних соединениях ХОРОШО. Посмотрите на простой пример:
import pandas as pd
s1 = pd.Series([7.3, -2.5, 3.4, 1.5], index=['a', 'c', 'd', 'e'])
s2 = pd.Series([-2.1, 3.6, -1.5, 4, 3.1], index=['a', 'c', 'e', 'f', 'g'])
print(s1)
print(s2)
Сложив их вместе, операция автоматического выравнивания данных не перекрывается и вводит значения NA в индексы. Отсутствующие значения будут распространяться во время арифметических операций.
print(s1 + s2)
верно В
DataFrame
,Операции выравнивания происходят одновременно на существующих ХОРОШОи столбцах:
import pandas as pd
df1 = pd.DataFrame(np.arange(9.0).reshape((3,3)), columns=list('bcd'),
index = ['Ohio', 'Texas', 'Colorado'])
df2 = pd.DataFrame(np.arange(12.).reshape((4, 3)), columns=list('bde'),
index=['Utah', 'Ohio', 'Texas', 'Oregon'])
print(df1)
print(df2)
Пучокэтоих Добавлять后Волявстречавозвращатьсяодинновыйиз
DataFrame
,Чтоиндекси Списокдля Оригинал来那дваDataFrame
из Союз:
print(df1 + df2)
если
DataFrame
объект Добавлять,Нет столбцов тоталиспользизиз и тегов ХОРОШО.,Результат всегда будет пустым:
import pandas as pd
df1 = pd.DataFrame({'A':[1,2]})
df2 = pd.DataFrame({'B':[3,4]})
print(df1)
print(df2)
print(df1 - df2)
существуют При выполнении арифметических операций ХОРОШО над объектами с разными индексами вам может потребоваться ввести специальное значение (например, 0), когда метка оси, существующая в одном объекте, не найдена в другом объекте:
import pandas as pd
df1 = pd.DataFrame(np.arange(12.).reshape((3, 4)),
columns=list('abcd'))
df2 = pd.DataFrame(np.arange(20.).reshape((4, 5)),
columns=list('abcde'))
df2.loc[1, 'b'] = np.nan
print(df1)
print(df2)
При их сложении позиции без перекрытия дают значения NA:
print(df1 + df2)
делатьиспользовать
df1
изadd
метод,входящийdf2
киодинfill_value
параметр:
print(df1.add(df2, fill_value=0))
таблица ниже Список Вне
Series
иDataFrame
изарифметикаметод:
метод | описывать |
---|---|
add, radd | использовать Вдобавлять Закон(+)изметод |
sub, rsub | использовать Вуменьшать Закон(-)изметод |
div, rdiv | использовать Вудалять Закон(/)изметод |
floordiv, rfloordiv | использовать В整удалять(//)изметод |
mul, rmul | использовать Вбрать Закон(*)изметод |
pow, rpow | использовать Виндекс(**)изметод |
Существует копия каждого из них, начинающаяся с буквы r, которая меняет параметр. Следовательно, эти два утверждения эквивалентны:
print(1 / df1)
print(df1.rdiv(1))
и Похоже на это,существоватьверно
Series
илиDataFrame
Переиндексациячас,Вы также можете указать значение заполнения:
print(df1.reindex(columns=df2.columns, fill_value=0))
с разными размерами NumPy множество Такой же,
DataFrame
иSeries
междуарифметика Операциятакжедаиметь明确规定из。Давайте сначала посмотрим на вдохновляющуюизпример,Вычислим разницу между двумерным массивом и неким ХОРОШО:
import pandas as pd
arr = np.arange(12.).reshape((3,4))
print(arr)
print(arr[0])
print(arr[0].shape)
print(arr - arr[0])
когданасот
arr
минусarr[0]
,каждый ХОРОШОВсевстреча Выполнять ХОРОШОЭта операция。это называетсятранслировать(broadcasting)。DataFrame
иSeries
междуиз Операция Разница Нет多такжеданравитьсяэтот:
import pandas as pd
frame = pd.DataFrame(np.arange(12.).reshape((4, 3)),
columns=list('bde'),
index=['Utah', 'Ohio', 'Texas', 'Oregon'])
series = frame.iloc[0]
print(frame)
print(series)
По умолчанию,
DataFrame
иSeries
междуизарифметика Операциявстреча ВоляSeries
изиндекссоответствоватьприезжатьDataFrame
из Список,Затем следуйте по ХОРОШО до конца транслировать:
print(frame - series)
есликто-тоиндексценитьсуществовать
DataFrame
из СписокилиSeries
изиндекссередина找Нетприезжать,Тогда два объекта операции параметра будут Переиндексация, образуя объединение:
series2 = pd.Series(range(3), index=['b','e','f'])
print(series2)
print(frame + series2)
Если вы хотите, чтобы ХОРОШО и существовали в колонке транслировать,нодолженделатьиспользоватьМетод арифметических операций。Например:
series3 = frame['d']
print(frame)
print(series3)
print(frame.sub(series3, axis='index'))
Передача номера оси из должна соответствовать оси из. существуют В этом случае,насизглазиздасоответствовать
DataFrame
из ХОРОШОиндекс(axis='index'
oraxis=0
)и Входить ХОРОШОтранслировать。
NumPy из
ufuncs
(элемент级множествометод)Также возможноиспользовать Вдействовать Pandas Объект:
import pandas as pd
frame = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'),
index=['Utah', 'Ohio', 'Texas', 'Oregon'])
print(frame)
print(np.abs(frame))
Другой распространенной операцией является,Воляфункцияотвечатьиспользоватьприезжать Зависит откаждый Списокили ХОРОШОМестоформаизодномерныймножествоначальство。
DataFrame
изapply
метод Эту функцию можно реализовать:
f = lambda x: x.max() - x.min()
print(frame.apply(f))
здесьизфункция
f
,РасчетныйSeries
измаксимумценитьисамый маленькийценитьиз Разница,существоватьframe
из Каждый Список Все Выполнять ХОРОШОодин раз。результатэтоSeries
,делатьиспользоватьframe
из Списоккакиндекс。еслипередача
axis='columns'
приезжатьapply
,Эта функция будет выполнять ХОРОШО каждый раз:
print(frame.apply(f, axis='columns'))
Многие из наиболее распространенныхизмножествостатистика Функция Все被实现成
DataFrame
изметод(нравитьсяsum
иmean
),因этот无需делатьиспользоватьapply
метод。передачаприезжать
apply
изфункция Нетдадолженвозвращатьсяскаляр,возвращаться Можетвозвращаться Зависит отнесколькоценитькомпозицияизSeries
:
def f(x):
return pd.Series([x.min(), x.max()], index=['min', 'max'])
print(frame.apply(f))
Уровень элемента из Python функциятакжеда Можетиспользоватьиз。Фальшивыйнравиться Вы думаетеприезжать
frame
серединакаждыйс плавающей запятойценитьизформатнить,делатьиспользоватьapplymap
Вот и все:
formater = lambda x: '%.2f' % x
print(frame.applymap(formater))
Из Месток叫做
applymap
,дапотому чтоSeries
есть одиниспользовать Вотвечатьиспользоватьэлемент级функцияизmap
метод:
print(frame['e'].map(formater))
Сортировка набора данных по условиям также является важной встроенной операцией. Сортировать ХОРОШО или индекс столбца по ХОРОШО (лексикографический порядок),Можетделатьиспользовать
sort_index
метод,Он вернет отсортированный объект:
import pandas as pd
obj = pd.Series(range(4), index=['d', 'a', 'b','c'])
print(obj.sort_index())
верно В
DataFrame
,Далее можно сортировать по ХОРОШО по индексу из по любой оси:
import pandas as pd
frame = pd.DataFrame(np.arange(8).reshape((2, 4)),
index=['three', 'one'],
columns=['d', 'a', 'b', 'c'])
print(frame.sort_index())
print(frame.sort_index(axis=1))
По умолчанию данные сортируются по возрастанию, но их также можно отсортировать по убыванию:
print(frame.sort_index(axis=1, ascending=False))
Чтобы нажатьценитьверно
Series
Входить ХОРОШОсортировать,Можетделатьиспользовать Чтоsort_values
метод:
import pandas as pd
obj = pd.Series([4, 7, -3, 2])
print(obj.sort_values())
существоватьсортироватьчас,любой Отсутствующие значенияпо умолчанию Всевстречабыть освобожденнымприезжать
Series
изконец:
import pandas as pd
obj = pd.Series([4, np.nan, 7, np.nan, -3, 2])
print(obj.sort_values())
когдасортироватьодин
DataFrame
час,ты Может能希望в соответствии содинилинесколько Списоксерединаизценить Входить ХОРОШОсортировать。Воляодинилинесколько Списокизимя переданоsort_values
изby
Параметры Вот и вседостигатьприезжать Долженглазиз:
import pandas as pd
frame = pd.DataFrame({'b': [4, 7, -3, 2], 'a':[0, 1, 0, 1]})
print(frame)
print(frame.sort_values(by='b'))
Для сортировки по ХОРОШО на основе нескольких столбцов передайте список имен и з:
print(frame.sort_values(by=['a', 'b']))
Далее представим
Series
иDataFrame
изrank
метод。по умолчанию Состояние Вниз,rank
дапроходить“длякаждый组分配одинсредний ранг”из Способы разрушить отношения со сверстникамииз:
import pandas as pd
obj = pd.Series([7, -5, 7, 4, 2, 0, 4])
print(obj.rank())
Ранжирование также может быть дано на основе порядка, в котором значения существуют в исходных данных:
print(obj.rank(method='first'))
здесь,полоскаглаз
0
и2
没иметьделатьиспользоватьсредний ранг6.5
,этоих被设成Понятно6
и7
,потому чтоданныесередина Этикетка0
Кусочек ВЭтикетка2
из Передний。Вы также можете ранжировать в порядке убывания:
print(obj.rank(ascending=False, method='max'))
DataFrame
Можетсуществовать ХОРОШОили Списокначальствовычислить Рейтинг:
import pandas as pd
frame = pd.DataFrame({'b': [4.3, 7, -3, 2], 'a': [0, 1, 0, 1],
'c': [-2, 5, 8, -2.5]})
print(frame)
print(frame.rank(axis='columns'))
print(frame.rank())
таблица ниже Список Вне Местоиметьиспользовать В破坏平级закрывать系из
method
Параметры:
метод | описывать |
---|---|
'average' | По умолчанию: существуют в равных группах.,Присвойте средний рейтинг каждому значению |
'min' | Сделать использование всей группы с минимальным рейтингом |
'max' | Сделать использование всей группы с максимальным рейтингом |
'first' | Рейтинги присваиваются в соответствии с порядком появления значений в исходных данных. |
'dense' | Похоже на: «Мин-метод»,Но рейтинг всегда увеличивается на 1 между группами.,Вместо одинакового количества элементов в группе |
Все представленные до сих пор примеры имели уникальные метки осей (значения индексов). Хотямногие Pandas функция(нравиться
reindex
)Все要просить Этикеткатолько,但这и Нетда Обязательныйиз。нас Приходите и посмотритесмотри ниже Это простоизс Тяжелый复индексценитьизSeries
:
import pandas as pd
obj = pd.Series(range(5), index=['a', 'a', 'b', 'b', 'c'])
print(obj)
индексиз
is_unique
свойство Может告诉тыэтоизценитьданетдатолькоиз:
print(obj.index.is_unique)
Для индексов с повторяющимися значениями из,Выбор данных из ХОРОШО будет несколько иным. Если индекс соответствует нескольким значениям,новозвращатьсяодин
Series
;иверноотвечать单个ценитьиз,затем возвращает скалярное значение:
print(obj['a'])
print(obj['c'])
Это усложнит код,потому чтоиндексизвыходтипвстречав соответствии с Этикеткаданетиметь Тяжелый复发生Изменять化。
верно
DataFrame
из ХОРОШОВходить ХОРОШОиндексчастакжеданравитьсяэтот:
import pandas as pd
df = pd.DataFrame(np.random.randn(4, 3), index=['a', 'a', 'b', 'b'])
print(df)
print(df.loc['b'])
Pandas объект拥иметьгруппа常использоватьизматематикаистатистикаметод。этоих大部分Все属Вуменьшатьиобменобщийстатистика,использовать Вот
Series
середина Извлечь одинценить(нравитьсяsum
илиmean
)илиотDataFrame
из ХОРОШОили Списоксередина提取одинSeries
。иверноотвечатьиз NumPy метод массива по сравнению с ними обоими основан на没иметь缺失данныеиз Фальшивый设и Строитьиз。Посмотрите на простойизDataFrame
:
import pandas as pd
df = pd.DataFrame([[1.4, np.nan], [7.1, -4.5],
[np.nan, np.nan], [0.75, -1.3]],
index = ['a', 'b', 'c', 'd'],
columns=['one','two'])
print(df)
настраиватьиспользовать
DataFrame
изsum
метод Волявстречавозвращатьсяодин含иметь СписокизиизSeries
:
print(df.sum())
входящий
axis='columns'
илиaxis=1
Волявстречав соответствии с ХОРОШОВходить ХОРОШОпроситьи Операция:
print(df.sum(axis=1))
Значения NA автоматически исключаются,Если только не весь кусок(Здесь имеется в видуизда ХОРОШОили Список)ВседаNA。проходить
skipna
Параметры Можетзапретитьиспользовать Должен Функция:
print(df.mean(axis='columns', skipna=False))
В следующей таблице перечислены эти сокращения:
Параметры | описывать |
---|---|
axis | уменьшатьизось。DataFrameиз ХОРОШОиспользовать0,Списокиспользовать1 |
skipna | Исключить пропущенные значения, значение по умолчанию — True. |
level | Если ось представляет собой иерархический индекс (т.е. мультииндекс),Затем сгруппируйте и сократите в соответствии с уровнем. |
некоторыйметод(нравиться
idxmin
иidxmax
)возвращатьсяиздакосвенныйстатистика(напримердостигатьприезжатьсамый маленькийценитьилимаксимумценитьизиндекс):
import pandas as pd
df = pd.DataFrame([[1.4, np.nan], [7.1, -4.5],
[np.nan, np.nan], [0.75, -1.3]],
index = ['a', 'b', 'c', 'd'],
columns=['one','two'])
print(df.idxmax())
Другие являются накопительными:
print(df.cumsum())
Есть еще один метод,это既Нетдауменьшать型также Нетдакумулятивный。
describe
Сразуэтопример,Он производит сразу несколько сводных статистических данных:
print(df.describe())
Для нечисловых данных,
describe
встречапроизводить另外一добрыйобменобщийстатистика:
import pandas as pd
obj = pd.Series(['a', 'a', 'b', 'c'] * 4)
print(obj)
print(obj.describe())
В таблице ниже перечислены все статистические данные иописания, относящиеся к изметоду:
метод | описывать |
---|---|
count | Значение, не относящееся к NA, из количества |
describe | Расчет сводной статистики для серий или отдельных столбцов DataFrame. |
min、max | Рассчитать минимальные и максимальные значения |
argmin、argmax | Вычислите минимальное и максимальное значение из позиции индекса (целое число), которое можно получить |
idxmin、idxmax | Рассчитайте минимальное и максимальное значение из значения индекса, которое можно получить |
quantile | Рассчитать выборку по квантилю (от 0 до 1) |
sum | ценитьизобщийи |
mean | среднее значение |
median | Значение арифметической медианы (50% квантиль) |
mad | Рассчитайте среднюю абсолютную дисперсию по среднему значению |
var | отклонение выборочного значения |
std | Выборочное значение стандартного отклонения |
skew | Асимметрия выборочного значения (третий момент) |
kurt | Выборочное значение изкуртоза (четвертый момент) |
cumsum | Примерное значение, совокупное |
cummin、cummax | Выборочное значение Из Кумулятивное максимальное значение и Кумулятивное минимальное значение |
cumprod | Выборочное значение совокупного продукта |
diff | Вычисление первых разностей (полезно для временных рядов) |
pct_change | Рассчитать процентное изменение |
некоторыйобменобщийстатистика(нравиться Коэффициент корреляциии Соглашение Разница)дапроходитьпараметрверновычислитьпублично заявитьиз。нас Приходите и посмотритенесколько
DataFrame
,Они основаны на данных Yahoo Finance, а также о цене акций и объеме торгов.,делатьиспользоватьиздаpandas-datareader
Сумка(Можетиспользоватьconda
илиpip
Установить):
import pandas as pd
import pandas_datareader.data as web
all_data = {ticker: web.get_data_yahoo(ticker)
for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']}
price = pd.DataFrame({ticker: data['Adj Close']
for ticker, data in all_data.items()})
volume = pd.DataFrame({ticker: data['Volume']
for ticker, data in all_data.items()})
all_data.items()
for ticker, data in all_data.items():
print(ticker)
print(type(data['Volume']))
print(price.head())
print(volume.head())
Текущая расчетная цена с процентным изменением:
returns = price.pct_change()
print(returns.head())
Series
изcorr
методиспользовать ВвычислитьдваSeries
середина Тяжелый叠из、Не-НАиз、в соответствии синдексверновместеизценитьиз Коэффициент корреляции。иэтотпохожий,cov
использовать Ввычислить Соглашение Разница:
print(returns['MSFT'].corr(returns['IBM']))
print(returns['MSFT'].cov(returns['IBM']))
потому чтоMSTFэто Разумныйиз Python Атрибуты, мы также можем использовать более краткий синтаксис. столбец:
print(returns.MSFT.corr(returns.IBM))
с другой стороны,
DataFrame
изcorr
иcov
методбудетDataFrame
изформа分别возвращатьсявесьиз Коэффициент корреляцииили Соглашение Разницаматрица:
print(returns.corr())
print(returns.cov())
выгодаиспользовать
DataFrame
изcorrwith
метод,ты Можетвычислить Что Списокили ХОРОШОи另одинSeries
илиDataFrame
междуиз Коэффициент корреляции。входящийодинSeries
Волявстречавозвращатьсяодин Коэффициент корреляцииценитьSeries
(Иголкавернокаждый Список Входить ХОРОШОвычислить):
print(returns.corrwith(returns.IBM))
входящийодин
DataFrame
новстречавычислитьв соответствии с Список Знаменитый матчверноиз Коэффициент корреляции。здесь,Рассчитаем процентное изменение и объем и коэффициент корреляции:
print(returns.corrwith(volume))
входящий
axis='columns'
Вот и всев соответствии с ХОРОШОВходить ХОРОШОвычислить。несмотря ни на чтонравитьсячто,существуют до расчета коэффициента корреляции,Все элементы данных будут выровнены по меткам.
Есть еще одна категорияметод Можетотодномерный
Series
изценитьсередина Извлечение информации。смотри нижеизпример:
import pandas as pd
obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
第одинфункцияда
unique
,он можетпридетсяприезжатьSeries
серединаизтолькоценитьмножество:
uniques = obj.unique()
print(uniques)
Единственное возвращаемое значение не отсортировано,При необходимости,Можетвернорезультатснова Входить ХОРОШОсортировать(
uniques.sort()
)。сходствоиз,value_counts
использовать ВвычислитьодинSeries
серединакаждыйценить Появлятьсяизчастота:
print(pd.value_counts(obj.values, sort=False))
isin
использовать ВВекторизация решенийсобиратьиз Членство,Можетиспользовать ВфильтрSeries
серединаилиDataFrame
Списоксерединаданныеизподмножество:
print(obj)
mask = obj.isin(['b', 'c'])
print(mask)
print(obj[mask])
и
isin
похожийиздаIndex.get_indexer
метод,Он дает вам индексированный массив,Из массива, который может содержать повторяющиеся значения, в другой массив с другими значениями:
to_match = pd.Series(['c', 'a', 'b', 'b', 'c', 'a'])
unique_vals = pd.Series(['c', 'b' ,'a'])
print(pd.Index(unique_vals).get_indexer(to_match))
В следующей таблице представлена некоторая справочная информация по этим методам:
метод | описывать |
---|---|
isin | Вычислить логический массив, который представляет, «включено ли каждое значение серии во входящую последовательность значений». |
match | Вычислить каждое значение в массиве для другого массива различных значений, изцелочисленный индекс Очень полезен для выравнивания данных и операций соединения. |
unique | Вычислить уникальный массив значений в серии,Возврат в порядке открытия |
value_counts | Возвращает серию, индекс которой является уникальным значением, а значением является частота, отсортированная по значению счетчика в порядке убывания. |
иногда,ты Может能希望придетсяприезжать
DataFrame
серединанесколько相закрывать Списокизгистограмма。Например:
import pandas as pd
data = pd.DataFrame({'Qu1': [1, 3, 4, 3, 4],
'Qu2': [2, 3, 1, 2, 3],
'Qu3': [1, 5, 2, 4, 4]})
print(data)
Воля
pandas.value_counts
перейти к ДолженDataFrame
изapply
функция,появится:
result = data.apply(pd.value_counts).fillna(0)
print(result)
здесь,результатсерединаиз ХОРОШОЭтикеткадаВсе столбцы с уникальными значениями。позжеизчастотаценитьда Каждый个Списоксередина Этиценитьизсоответствующий счет。