Обработка данных Python: использование библиотеки Pandas
Обработка данных Python: использование библиотеки Pandas

✅Об авторе: в настоящее время я учусь на бакалавриате по искусственному интеллекту. Мне нравятся компьютеры и программирование, и я веду блоги, чтобы записывать процесс обучения. 🍎Персональная домашняя страница:маленькая воющая блог собачкаиз 🍊Личное кредо: создайте разум для неба и земли, определите судьбу живых и людей,продолжайте уникальные знания святых прошлого и создайте мир для всех поколений. 🥭Содержание этой статьи:Обработка данных Python: использование библиотеки Pandas


Обработка данных Python: использование библиотеки Pandas


Pandas основан на NumPy Построение массива из, специально основанных массив из функций не делает использование for Циклическая обработка данных.

Хотя Pandas принял большое количество NumPy Стиль кодирования, но самая большая разница между ними заключается в Pandas Он специально разработан для обработки табличных и смешанных данных. и NumPy Больше подходит для обработки данных единого числового массива.

1. Структура данных Pandas

Чтобы использовать Pandas,Сначала с ним нужно ознакомитьсяиздва основныхструктура данных:SeriesиDataFrame

1.1 Series

SeriesЭто своего рода одномерный массив, похожий наизобъект,Он состоит из набора данных(каждыйдобрый NumPy данныетип)и группаисвязанный сизметка данных(то есть индекс)композиция。Самый простой может быть сгенерирован только из одного набора данных.изSeries

Язык кода:javascript
копировать
import pandas as pd
obj = pd.Series([4,7,-5,3])
print(obj)

Seriesизнить Выражается в виде:индекссуществоватьлевый,существуют ценностные права. Поскольку для данных не указан индекс,Таким образом, он автоматически создаст От 0 до N-1 (N — длина данных) и целочисленный индекс。может пройтиSeriesизvaluesиindexСвойство получает представление массиваииндексный объект:

Язык кода:javascript
копировать
import pandas as pd
obj = pd.Series([4,7,-5,3])
print(obj.values)
print(obj.index)
print(list(obj.index))

Также возможно использование конкретных индексов:

Язык кода:javascript
копировать
import pandas as pd
obj2 = pd.Series([5,2,-3,1], index=['d', 'b', 'c', 'a'])
print(obj2)

может пройтииндексиз Выбор методаSeriesсерединаизодно или несколько значений:

Язык кода:javascript
копировать
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 (таких как фильтрация логических массивов, скалярное умножение, применение математических функций и т. д.), сохранит ссылку на значение индекса:

Язык кода:javascript
копировать
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рассматривается как фиксированная длинаизупорядоченный словарь,потому чтоэтодаиндексценитьприезжатьданныеценитьизотображение。он можетиспользоватьсуществовать Многим изначально нужен был словарьпараметризфункциясередина:

Язык кода:javascript
копировать
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

Язык кода:javascript
копировать
import pandas as pd
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj3 = pd.Series(sdata)
print(obj3)

Если передается только один словарь,РезультатSeriesсерединаизиндекс Сразуда Оригиналсловарьизключ(Расставить по порядку)。Вы можете передать отсортированныйизсловарьизключизменить порядок:

Язык кода:javascript
копировать
# В этом примере три значения, соответствующие индексу состояний в 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Функция можетиспользовать Чтобы обнаружить недостающие данные:

Язык кода:javascript
копировать
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Есть и подобныеиз Примерметод:

Язык кода:javascript
копировать
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самое важноеиз Одна функция,этовстречав соответствии с Операцияизиндекс Этикеткаавтоматическое выравниваниеданные:

Язык кода:javascript
копировать
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 Другие ключевые функции очень тесно связаны между собой:

Язык кода:javascript
копировать
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)

1.2 DataFrame

DataFrameэто тип таблицыизструктура данных,Он содержит набор упорядоченных столбцов.,Каждый столбец может отличаться от типа значения (числового значения、нить、логические значения и т. д.)DataFrameсуществующий ХОРОШОиндекс Существует также Списокиндекс,он можетрассматриваться как Зависит отSeriesкомпозицияизсловарь(общийиспользоватьтот же самыйиндекс)。DataFrameсерединаизданныедасилинесколько2D-блочное хранилищеиз(вместо списка、Словарь или псевдоним одномерной структуры данных).

создаватьDataFrameиз Есть много способов,Самый распространенный — передать его непосредственно в список одинаковой длины или массивов NumPy Словарь:

Язык кода:javascript
копировать
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метод Выберу пятерку лучших ХОРОШО:

Язык кода:javascript
копировать
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из Столбцы будут введены в указанном порядке.ХОРОШОдоговоренность:

Язык кода:javascript
копировать
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)

Если входящие данные из столбца существуют не найдены,ВолясуществоватьрезультатсерединапроизводитьОтсутствующие значения

Язык кода:javascript
копировать
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

Язык кода:javascript
копировать
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свойство:

Язык кода:javascript
копировать
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"Списокнаделятьначальствоскалярценитьилигруппаценить:

Язык кода:javascript
копировать
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изиндекс,Все пустые места будут заполнены Отсутствующими значениями:

Язык кода:javascript
копировать
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'

Язык кода:javascript
копировать
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 Воляинтерпретируется как:Внешний словарь ключей используется как столбцы, а внутренние ключи — как индексы ХОРОШО.

Язык кода:javascript
копировать
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Входить ХОРОШОТранспонировать(обмен ХОРОШОи Список):

Язык кода:javascript
копировать
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)

Ключи внутреннего словаря объединяются и сортируются для формирования окончательного индекса. Этого не произойдет, если индекс указан явно:

Язык кода:javascript
копировать
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композицияизсловарь Разница Нет多такжеда Такой жеизиспользовать Закон:

Язык кода:javascript
копировать
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свойство,Эта информация также будет отображаться:

Язык кода:javascript
копировать
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серединаизданные:

Язык кода:javascript
копировать
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ВолявыбиратьиспользоватьСовместимость со всеми данными столбцов

Язык кода:javascript
копировать
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

Язык кода:javascript
копировать
import pandas as pd
obj = pd.Series(range(3), index=['a', 'b', 'c'])
index = obj.index
print(index)
print(index[1:])

Indexобъектда Нет Может Изменятьиз,Поэтому пользователь не может его изменить:

Язык кода:javascript
копировать
import pandas as pd
obj = pd.Series(range(3), index=['a', 'b', 'c'])
index = obj.index
index[1] = 'd'

Неизменяемость позволяетIndexобъектсуществоватьнесколькоструктура данныхмеждуБезопасный обмен

Язык кода:javascript
копировать
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из Функция также аналогична фиксированному размеру.изсобирать:

Язык кода:javascript
копировать
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Может содержать дубликатыиз Этикетка:

Язык кода:javascript
копировать
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


2.Основные функции

2.1 Реиндексация

Pandasобъектизважныйметоддаreindex,Его функция — создать новый объект.,Его данные соответствуют новому индексу. Посмотрите на следующий пример:

Язык кода:javascript
копировать
import pandas as pd
obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])
print(obj)

использовать ДолженSeriesизreindexВолявстречав соответствии сновыйиндекс Входить ХОРОШОпереставить。есликто-тоиндексценитькогда前Нет存существовать,Просто представь Отсутствующие значения:

Язык кода:javascript
копировать
import pandas as pd
obj2 = obj.reindex(['a', 'b', 'c', 'd', 'e'])
print(obj2)

Для временных рядов упорядоченные данные, подобные этим,Переиндексациячас Может Может потребоваться некоторая вставкаценитьиметь дело с。methodПараметры Вот и вседостигатьприезжатьэтотглазиз,Например,делатьиспользоватьffillМожетдо реализации Кценитьнаполнение:

Язык кода:javascript
копировать
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Может Исправлять(ХОРОШО)индекси Список。Толькопередачаодинпоследовательность Списокчас,встреча Результаты переиндексации в порядке:

Язык кода:javascript
копировать
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закрыватьключ Характер Переиндексация:

Язык кода:javascript
копировать
states = ['Texas', 'Utah', 'California']
print(frame.reindex(columns = states))

таблица ниже Список Внеreindexфункцияизкаждыйпараметриописывать:

параметр

описывать

index

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

method

Метод интерполяции (заполнения)

fill_value

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

limit

Максимальный объем заполнения при наполнении вперед или назад

tolerance

При заполнении вперед и назад максимальное расстояние (расстояние по абсолютному значению) между неточными совпадениями заполнения.

level

Соответствует простому индексу на указанном уровне Multindex, в противном случае выбирает его подмножество.

copy

По умолчанию установлено значение True, и оно будет скопировано в любом случае, если оно имеет значение False, оно не будет скопировано, если старые и новые значения равны;


2.2 Отбросить элементы на указанной оси

Переместить один или несколько элементов на ось легко.,Просто имейте индексированный массив или список. Из-за необходимости выполнить некоторую логику сортировки и сбора данных.,Местокdropметодвозвращатьсяизэтосуществоватьобозначениеосьначальствоудалить Понятнообозначениеценитьизновый Объект:

Язык кода:javascript
копировать
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пример:

Язык кода:javascript
копировать
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)

использовать Этикеткапоследовательность Списокнастраиватьиспользоватьdropвстречаот ХОРОШОЭтикетка(axis 0) Удалить значение:

Язык кода:javascript
копировать
print(data.drop(['Colorado', 'Ohio']))

проходитьпередачаaxis=1илиaxis='columns'Можетудалить Списокизценить:

Язык кода:javascript
копировать
print(data.drop('two', axis = 1))
print(data.drop(['two', 'four'], axis='columns'))
print(data)

многофункциясinplaceпараметр,нравитьсяdrop,встреча ИсправлятьSeriesилиDataFrameизразмерилиформа,Объекты могут быть изменены на месте,Не вернет новый из Объект:

Язык кода:javascript
копировать
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,Это уничтожит все удаленные данные.


2.3 Индексирование, выбор и фильтрация

Seriesиндекс(obj[…])из工作Способпохожий В NumPy множествоизиндекс,толькоSeriesизиндексценить Нет Толькодацелое число。подданесколькопример:

Язык кода:javascript
копировать
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, отличающихся друг от друга.,Его конец содержит из

Язык кода:javascript
копировать
print(obj['b':'c'])

использоватькусочек МожетверноSeriesизсоответствующий部分Входить ХОРОШОнастраивать:

Язык кода:javascript
копировать
obj['b':'c'] = 5
print(obj)

использоватьодинценитьилипоследовательность СписокверноDataFrameВходить ХОРОШОиндекс Что实Сразудаполучатьодинилинесколько Список:

Язык кода:javascript
копировать
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']])

这добрыйиндекс Способиметьнесколько特殊из Состояние。首Первыйпроходитьсрез или логический массивВыбиратьданные:

Язык кода:javascript
копировать
print(data[:2])
print(data[data['three'] > 5])

Выбирать ХОРОШОизязык Законdata[:2]Очень удобно。К[ ]пройти одиночныйизэлементили Списокповерхность,Тольковыбрать столбец

Другой видиспользовать Закондапроходитьлогическое значениеDataFrame(напримерпод这个Зависит от Скалярное сравнение Операция Приходите виз)Входить ХОРОШОиндекс:

Язык кода:javascript
копировать
print(data < 5)
print(data[data<5])

data[data < 5] = 0
print(data)

2.4 Выбор с помощью loc и iloc

верно ВDataFrameиз ХОРОШОиз Этикеткаиндекс,Особенныйиз Этикетка Операциясимволlocиiloc。этоих Можетпозволю тебеиспользоватьпохожий NumPy изотметка,делатьиспользоватьось Этикетка(loc)илицелочисленный индекс(iloc),отDataFrameвыбирать ХОРОШОи Списокизподмножество。

В качестве предварительного примера давайте выделим строку и столбцы с помощью меток:

Язык кода:javascript
копировать
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]])

Эти две функции индексирования также работают с одной меткой или срезами нескольких меток:

Язык кода:javascript
копировать
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

Выберите одно значение с помощью меток строк и столбцов.


2.5 Целочисленная индексация

Обрабатывает целочисленную индексацию Pandas объектчасто ставит в тупикновыйрука,потому чтоэтои Python Встроенный синтаксис индексации для списков и кортежей различен. Например, вы можете не думать, что следующий код приведет к ошибке:

Язык кода:javascript
копировать
import pandas as pd
ser = pd.Series(np.arange(3.0))
print(ser)
print(ser[2])
print(ser[-1])

здесь,Pandas Целочисленную индексацию можно делать неохотно, но это приведет к небольшим ошибкам. У нас есть индексы, содержащие 0,1,2, но ввести то, что хочет пользователь (индексация на основе тегов или позиций), сложно, плюс нет никакой двусмысленности с нецелочисленными индексами:

Язык кода:javascript
копировать
import pandas as pd
ser2 = pd.Series(np.arange(3.), index=['a', 'b', 'c'])
print(ser2[-1])

Чтобы добиться объединения ХОРОШО,Если индекс оси содержит целое число,При выборе данных всегда используется тег use. для большей точности,пожалуйстаделатьиспользоватьloc(Этикетка)илиiloc(целое число):

Язык кода:javascript
копировать
import pandas as pd
ser = pd.Series(np.arange(3.0))
print(ser)

print(ser[:1])
print(ser.loc[:1])
print(ser.iloc[:1])

Обратите внимание на различие результатов трех приведенных выше утверждений.


2.6 Арифметические операции и выравнивание данных

Pandas Одной из наиболее важных функций является то, что он может выполнять арифметические операции над объектами с разными индексами. Когда существование добавляет объекты, если существуют разные пары индексов, результатом индекса является объединение пар индексов. Для пользователей, имеющих опыт работы с базами данных, это похоже на существование индексных тегов в автоматических внешних соединениях ХОРОШО. Посмотрите на простой пример:

Язык кода:javascript
копировать
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 в индексы. Отсутствующие значения будут распространяться во время арифметических операций.

Язык кода:javascript
копировать
print(s1 + s2)

верно ВDataFrame,Операции выравнивания происходят одновременно на существующих ХОРОШОи столбцах:

Язык кода:javascript
копировать
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из Союз:

Язык кода:javascript
копировать
print(df1 + df2)

еслиDataFrameобъект Добавлять,Нет столбцов тоталиспользизиз и тегов ХОРОШО.,Результат всегда будет пустым:

Язык кода:javascript
копировать
import pandas as pd
df1 = pd.DataFrame({'A':[1,2]})
df2 = pd.DataFrame({'B':[3,4]})
print(df1)
print(df2)
print(df1 - df2)

2.7 Заполнение значений в арифметических методах

существуют При выполнении арифметических операций ХОРОШО над объектами с разными индексами вам может потребоваться ввести специальное значение (например, 0), когда метка оси, существующая в одном объекте, не найдена в другом объекте:

Язык кода:javascript
копировать
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:

Язык кода:javascript
копировать
print(df1 + df2)

делатьиспользоватьdf1изaddметод,входящийdf2киодинfill_valueпараметр:

Язык кода:javascript
копировать
print(df1.add(df2, fill_value=0))

таблица ниже Список ВнеSeriesиDataFrameизарифметикаметод:

метод

описывать

add, radd

использовать Вдобавлять Закон(+)изметод

sub, rsub

использовать Вуменьшать Закон(-)изметод

div, rdiv

использовать Вудалять Закон(/)изметод

floordiv, rfloordiv

использовать В整удалять(//)изметод

mul, rmul

использовать Вбрать Закон(*)изметод

pow, rpow

использовать Виндекс(**)изметод

Существует копия каждого из них, начинающаяся с буквы r, которая меняет параметр. Следовательно, эти два утверждения эквивалентны:

Язык кода:javascript
копировать
print(1 / df1)
print(df1.rdiv(1))

и Похоже на это,существоватьверноSeriesилиDataFrameПереиндексациячас,Вы также можете указать значение заполнения:

Язык кода:javascript
копировать
print(df1.reindex(columns=df2.columns, fill_value=0))

2.8 Операции между DataFrame и сериями

с разными размерами NumPy множество Такой же,DataFrameиSeriesмеждуарифметика Операциятакжедаиметь明确规定из。Давайте сначала посмотрим на вдохновляющуюизпример,Вычислим разницу между двумерным массивом и неким ХОРОШО:

Язык кода:javascript
копировать
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междуиз Операция Разница Нет多такжеданравитьсяэтот:

Язык кода:javascript
копировать
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из Список,Затем следуйте по ХОРОШО до конца транслировать:

Язык кода:javascript
копировать
print(frame - series)

есликто-тоиндексценитьсуществоватьDataFrameиз СписокилиSeriesизиндекссередина找Нетприезжать,Тогда два объекта операции параметра будут Переиндексация, образуя объединение:

Язык кода:javascript
копировать
series2 = pd.Series(range(3), index=['b','e','f'])
print(series2)
print(frame + series2)

Если вы хотите, чтобы ХОРОШО и существовали в колонке транслировать,нодолженделатьиспользоватьМетод арифметических операций。Например:

Язык кода:javascript
копировать
series3 = frame['d']
print(frame)
print(series3)
print(frame.sub(series3, axis='index'))

Передача номера оси из должна соответствовать оси из. существуют В этом случае,насизглазиздасоответствоватьDataFrameиз ХОРОШОиндекс(axis='index' or axis=0)и Входить ХОРОШОтранслировать。


2.9 Применение и сопоставление функций

NumPy из ufuncs(элемент级множествометод)Также возможноиспользовать Вдействовать Pandas Объект:

Язык кода:javascript
копировать
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метод Эту функцию можно реализовать:

Язык кода:javascript
копировать
f = lambda x: x.max() - x.min()
print(frame.apply(f))

здесьизфункцияf,РасчетныйSeriesизмаксимумценитьисамый маленькийценитьиз Разница,существоватьframeиз Каждый Список Все Выполнять ХОРОШОодин раз。результатэтоSeries,делатьиспользоватьframeиз Списоккакиндекс。

еслипередачаaxis='columns'приезжатьapply,Эта функция будет выполнять ХОРОШО каждый раз:

Язык кода:javascript
копировать
print(frame.apply(f, axis='columns'))

Многие из наиболее распространенныхизмножествостатистика Функция Все被实现成DataFrameизметод(нравитьсяsumиmean),因этот无需делатьиспользоватьapplyметод。

передачаприезжатьapplyизфункция Нетдадолженвозвращатьсяскаляр,возвращаться Можетвозвращаться Зависит отнесколькоценитькомпозицияизSeries

Язык кода:javascript
копировать
def f(x):
    return pd.Series([x.min(), x.max()], index=['min', 'max'])
print(frame.apply(f))

Уровень элемента из Python функциятакжеда Можетиспользоватьиз。Фальшивыйнравиться Вы думаетеприезжатьframeсерединакаждыйс плавающей запятойценитьизформатнить,делатьиспользоватьapplymapВот и все:

Язык кода:javascript
копировать
formater = lambda x: '%.2f' % x
print(frame.applymap(formater))

Из Месток叫做applymap,дапотому чтоSeriesесть одиниспользовать Вотвечатьиспользоватьэлемент级функцияизmapметод:

Язык кода:javascript
копировать
print(frame['e'].map(formater))

2.10 Сортировка и ранжирование

Сортировка набора данных по условиям также является важной встроенной операцией. Сортировать ХОРОШО или индекс столбца по ХОРОШО (лексикографический порядок),Можетделатьиспользоватьsort_indexметод,Он вернет отсортированный объект:

Язык кода:javascript
копировать
import pandas as pd
obj = pd.Series(range(4), index=['d', 'a', 'b','c'])
print(obj.sort_index())

верно ВDataFrame,Далее можно сортировать по ХОРОШО по индексу из по любой оси:

Язык кода:javascript
копировать
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))

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

Язык кода:javascript
копировать
print(frame.sort_index(axis=1, ascending=False))

Чтобы нажатьценитьверноSeriesВходить ХОРОШОсортировать,Можетделатьиспользовать Чтоsort_valuesметод:

Язык кода:javascript
копировать
import pandas as pd
obj = pd.Series([4, 7, -3, 2])
print(obj.sort_values())

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

Язык кода:javascript
копировать
import pandas as pd
obj = pd.Series([4, np.nan, 7, np.nan, -3, 2])
print(obj.sort_values())

когдасортироватьодинDataFrameчас,ты Может能希望в соответствии содинилинесколько Списоксерединаизценить Входить ХОРОШОсортировать。Воляодинилинесколько Списокизимя переданоsort_valuesизbyПараметры Вот и вседостигатьприезжать Долженглазиз:

Язык кода:javascript
копировать
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'))

Для сортировки по ХОРОШО на основе нескольких столбцов передайте список имен и з:

Язык кода:javascript
копировать
print(frame.sort_values(by=['a', 'b']))

Далее представимSeriesиDataFrameизrankметод。по умолчанию Состояние Вниз,rankдапроходить“длякаждый组分配одинсредний ранг”из Способы разрушить отношения со сверстникамииз:

Язык кода:javascript
копировать
import pandas as pd
obj = pd.Series([7, -5, 7, 4, 2, 0, 4])
print(obj.rank())

Ранжирование также может быть дано на основе порядка, в котором значения существуют в исходных данных:

Язык кода:javascript
копировать
print(obj.rank(method='first'))

здесь,полоскаглаз0и2没иметьделатьиспользоватьсредний ранг6.5,этоих被设成Понятно6и7,потому чтоданныесередина Этикетка0Кусочек ВЭтикетка2из Передний。

Вы также можете ранжировать в порядке убывания:

Язык кода:javascript
копировать
print(obj.rank(ascending=False, method='max'))

DataFrameМожетсуществовать ХОРОШОили Списокначальствовычислить Рейтинг:

Язык кода:javascript
копировать
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 между группами.,Вместо одинакового количества элементов в группе


2.11 Индекс оси с повторяющимися метками

Все представленные до сих пор примеры имели уникальные метки осей (значения индексов). Хотямногие Pandas функция(нравитьсяreindex)Все要просить Этикеткатолько,但这и Нетда Обязательныйиз。нас Приходите и посмотритесмотри ниже Это простоизс Тяжелый复индексценитьизSeries

Язык кода:javascript
копировать
import pandas as pd
obj = pd.Series(range(5), index=['a', 'a', 'b', 'b', 'c'])
print(obj)

индексизis_uniqueсвойство Может告诉тыэтоизценитьданетдатолькоиз:

Язык кода:javascript
копировать
print(obj.index.is_unique)

Для индексов с повторяющимися значениями из,Выбор данных из ХОРОШО будет несколько иным. Если индекс соответствует нескольким значениям,новозвращатьсяодинSeries;иверноотвечать单个ценитьиз,затем возвращает скалярное значение:

Язык кода:javascript
копировать
print(obj['a'])
print(obj['c'])

Это усложнит код,потому чтоиндексизвыходтипвстречав соответствии с Этикеткаданетиметь Тяжелый复发生Изменять化。

верноDataFrameиз ХОРОШОВходить ХОРОШОиндексчастакжеданравитьсяэтот:

Язык кода:javascript
копировать
import pandas as pd
df = pd.DataFrame(np.random.randn(4, 3), index=['a', 'a', 'b', 'b'])
print(df)
print(df.loc['b'])

3. Обобщить и рассчитать описательную статистику.

Pandas объект拥иметьгруппа常использоватьизматематикаистатистикаметод。этоих大部分Все属Вуменьшатьиобменобщийстатистика,использовать ВотSeriesсередина Извлечь одинценить(нравитьсяsumилиmean)илиотDataFrameиз ХОРОШОили Списоксередина提取одинSeries。иверноотвечатьиз NumPy метод массива по сравнению с ними обоими основан на没иметь缺失данныеиз Фальшивый设и Строитьиз。Посмотрите на простойизDataFrame

Язык кода:javascript
копировать
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

Язык кода:javascript
копировать
print(df.sum())

входящийaxis='columns'илиaxis=1Волявстречав соответствии с ХОРОШОВходить ХОРОШОпроситьи Операция:

Язык кода:javascript
копировать
print(df.sum(axis=1))

Значения NA автоматически исключаются,Если только не весь кусок(Здесь имеется в видуизда ХОРОШОили Список)ВседаNA。проходитьskipnaПараметры Можетзапретитьиспользовать Должен Функция:

Язык кода:javascript
копировать
print(df.mean(axis='columns', skipna=False))

В следующей таблице перечислены эти сокращения:

Параметры

описывать

axis

уменьшатьизось。DataFrameиз ХОРОШОиспользовать0,Списокиспользовать1

skipna

Исключить пропущенные значения, значение по умолчанию — True.

level

Если ось представляет собой иерархический индекс (т.е. мультииндекс),Затем сгруппируйте и сократите в соответствии с уровнем.

некоторыйметод(нравитьсяidxminиidxmax)возвращатьсяиздакосвенныйстатистика(напримердостигатьприезжатьсамый маленькийценитьилимаксимумценитьизиндекс):

Язык кода:javascript
копировать
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())

Другие являются накопительными:

Язык кода:javascript
копировать
print(df.cumsum())

Есть еще один метод,это既Нетдауменьшать型также Нетдакумулятивный。describeСразуэтопример,Он производит сразу несколько сводных статистических данных:

Язык кода:javascript
копировать
print(df.describe())

Для нечисловых данных,describeвстречапроизводить另外一добрыйобменобщийстатистика:

Язык кода:javascript
копировать
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

Рассчитать процентное изменение


3.1 Коэффициент корреляции и ковариация

некоторыйобменобщийстатистика(нравиться Коэффициент корреляциии Соглашение Разница)дапроходитьпараметрверновычислитьпублично заявитьиз。нас Приходите и посмотритенесколькоDataFrame,Они основаны на данных Yahoo Finance, а также о цене акций и объеме торгов.,делатьиспользоватьиздаpandas-datareaderСумка(МожетиспользоватьcondaилиpipУстановить):

Язык кода:javascript
копировать
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())

Текущая расчетная цена с процентным изменением:

Язык кода:javascript
копировать
returns = price.pct_change()
print(returns.head())

Seriesизcorrметодиспользовать ВвычислитьдваSeriesсередина Тяжелый叠из、Не-НАиз、в соответствии синдексверновместеизценитьиз Коэффициент корреляции。иэтотпохожий,covиспользовать Ввычислить Соглашение Разница:

Язык кода:javascript
копировать
print(returns['MSFT'].corr(returns['IBM']))
print(returns['MSFT'].cov(returns['IBM']))

потому чтоMSTFэто Разумныйиз Python Атрибуты, мы также можем использовать более краткий синтаксис. столбец:

Язык кода:javascript
копировать
print(returns.MSFT.corr(returns.IBM))

с другой стороны,DataFrameизcorrиcovметодбудетDataFrameизформа分别возвращатьсявесьиз Коэффициент корреляцииили Соглашение Разницаматрица:

Язык кода:javascript
копировать
print(returns.corr())
print(returns.cov())

выгодаиспользоватьDataFrameизcorrwithметод,ты Можетвычислить Что Списокили ХОРОШОи另одинSeriesилиDataFrameмеждуиз Коэффициент корреляции。входящийодинSeriesВолявстречавозвращатьсяодин Коэффициент корреляцииценитьSeries(Иголкавернокаждый Список Входить ХОРОШОвычислить):

Язык кода:javascript
копировать
print(returns.corrwith(returns.IBM))

входящийодинDataFrameновстречавычислитьв соответствии с Список Знаменитый матчверноиз Коэффициент корреляции。здесь,Рассчитаем процентное изменение и объем и коэффициент корреляции:

Язык кода:javascript
копировать
print(returns.corrwith(volume))

входящийaxis='columns'Вот и всев соответствии с ХОРОШОВходить ХОРОШОвычислить。несмотря ни на чтонравитьсячто,существуют до расчета коэффициента корреляции,Все элементы данных будут выровнены по меткам.


3.2 Уникальные значения, количество значений и членство

Есть еще одна категорияметод МожетотодномерныйSeriesизценитьсередина Извлечение информации。смотри нижеизпример:

Язык кода:javascript
копировать
import pandas as pd
obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])

第одинфункциядаunique,он можетпридетсяприезжатьSeriesсерединаизтолькоценитьмножество:

Язык кода:javascript
копировать
uniques = obj.unique()
print(uniques)

Единственное возвращаемое значение не отсортировано,При необходимости,Можетвернорезультатснова Входить ХОРОШОсортировать(uniques.sort())。сходствоиз,value_countsиспользовать ВвычислитьодинSeriesсерединакаждыйценить Появлятьсяизчастота:

Язык кода:javascript
копировать
print(pd.value_counts(obj.values, sort=False))

isinиспользовать ВВекторизация решенийсобиратьиз Членство,Можетиспользовать ВфильтрSeriesсерединаилиDataFrameСписоксерединаданныеизподмножество:

Язык кода:javascript
копировать
print(obj)
mask = obj.isin(['b', 'c'])
print(mask)
print(obj[mask])

иisinпохожийиздаIndex.get_indexerметод,Он дает вам индексированный массив,Из массива, который может содержать повторяющиеся значения, в другой массив с другими значениями:

Язык кода:javascript
копировать
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серединанесколько相закрывать Списокизгистограмма。Например:

Язык кода:javascript
копировать
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функция,появится:

Язык кода:javascript
копировать
result = data.apply(pd.value_counts).fillna(0)
print(result)

здесь,результатсерединаиз ХОРОШОЭтикеткадаВсе столбцы с уникальными значениями。позжеизчастотаценитьда Каждый个Списоксередина Этиценитьизсоответствующий счет。

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose