Знаете ли, че пандите могат да направят толкова много?

Не кодирайте Python без първо да изследвате пандите

Тази статия ще очертае всички ключови функции, които библиотеката Pandas предлага. Ще демонстрирам колко мощна е библиотеката и как може да ви спести време и усилия при внедряването на Python приложения.

Разделих тази статия в три раздела.

Снимка от Element5 Digital на Unsplash

Ако искате да разберете всичко за езика за програмиране на Python, моля, прочетете:

Раздел 1: Въведение на панди

Този раздел ще запознае читателите с пакета Pandas и ще подчертае и трите най-важни структури от данни на библиотеката.

Какво е Панда?

  • Една от най-използваните библиотеки Python за анализ и инженеринг на данни.
  • Изпълнено през 2008 г. от Уес Макинни
  • Отворен код
  • Прилага се отгоре на C - следователно е бързо
  • Въведени в обектите DataFrame, Series и Panel

Как да инсталирам Pandas?

Използвайте Pyphon Package Installer Pip

pip инсталирате панди

Какво е серия?

  • Серията е с 1 измерен характер, като например масив. Серията е изменяем обект на данни. Това означава, че може да бъде актуализиран, могат да се добавят нови елементи и съществуващи елементи да бъдат изтрити от колекцията.
  • Той може да съхранява данни от всякакъв тип.
  • Тя може да бъде инстанцирана с масив или речник. Клавишите на речника се използват за представяне на индекси.
  • Конструкторът на Series може да бъде извикан чрез предаване на данни, индекс, тип данни и булев флаг, указващ дали искаме да копираме данните. Ако не посочим имената на индексите, тогава индексите се маркират като цели числа, започващи от 0.
  • Помислете за сериите като вертикални колони, които могат да съдържат няколко реда.

За да създадете серия

импортиране на панди като pd
импортиране numpy като np
series = pd.Series (data = [111, 222, 3], index = ['one', 'two', 'three'])
#или дори
серия = pd.Series ([111, 222, 3])

За извличане на данни от серия

Можем да приложим сплитане на масив и функционалност на индекса. Можем да предадем и името на индекса:

печат (серия [ "едно"])
или
печат (серия [0])
# Множество колони
печат (серия [[ "един", "две"]]

Какво е рамка от данни?

  • Вероятно най-използваната структура на данни в проект за научни данни.
  • Това е таблица с редове и колони - като SQL таблица или таблица за електронни таблици на Excel.
  • Таблицата може да съхранява в памет данни обекти в различен формат.
  • Предлага високоефективен анализ и инженеринг на данни от времеви серии
  • Кадърът от данни е контейнер от една или повече серии.
  • DataFrame е изменяем.

Това изображение очертава как изглежда кадър с данни:

Създаване на DataFrame

Има няколко начина за създаване на DataFrame; от масив, речник, списък, серия или дори от друг кадър с данни. Обикновено създавам DataFrame от серия:

импортиране на панди като pd

d = {'Колона A': pd.Series ([111, 222, 333])
   „КолонаB“: pd.Series ([444, 555, 666])}

df = pd.DataFrame (d)

Горният кадър с данни ще съдържа две колони, наречени ColumnA и ColumnB.

Колона A ще съдържа три реда: 111 222 и 333.

КолонаB ще съдържа три реда: 444,555 и 666

Избор на колона

Можем да използваме името на колоната, за да получим данните:

data = df ['ColumnA']

Ако искаме да изтрием колона, използвайте поп функция.

Избор на редове

Ако един ред има етикет, тогава можем да използваме локална функция:

data = df.loc ['label']
# множество колони
data = df.loc [['label1', 'label2']]

В противен случай можем да използваме местоположението, като използваме iloc функция:

data = df.iloc [0] # това ще върне първия ред

Можем да използваме ix (), който ни позволява да използваме етикет и се връща обратно към целочислен позиционен достъп. Забележка: ix () е оттеглен.

заличаване

Ако искаме да изтрием ред, използваме функцията за пускане.

Когато данните се заредят в DataFrame, тогава можем да приложим редица подпрограми, например колоните могат да бъдат обединени, може да се приложи всякакъв брой математически изчисления върху данните и така нататък. DataFrame ни позволява да извършваме операции, базирани на задаване.

Всяка колона е индексирана.

Преименуване на етикети

Можем да използваме преименуването (колони, индекс, инпламент = Неверно), за да преименуваме колоните на DataFrame. Ако е на място = True, основните данни ще бъдат преименувани. Функцията не връща нов обект. Когато inplace = False е предаден (стойност по подразбиране), тогава той извършва операцията и връща копие на обекта.

повторно индексиране

Ако искате да реиндексирате (променете етикетите на реда / колоните), тогава можем да използваме функцията reindex

Итерация над колони DataFrame

За да превключваме върху колони на рамка от данни, можем да направим:

за колона в dataFrame:
  печат (колона)

Можем също да повтаряме върху елементите:

за колона, елементи в dataFrame.iteritems ():

За повторение на редове:

за index_of_row, ред в dataFrame.iterrows ():

itertuples () се използва за показване на всеки ред като обект:

за ред в dataFrame.itertuples ():

DataFrame е много мощен. Лесно можем да сортираме елементи по редове и колони.

Сортиране по редове:

Можем да сортираме по индекс на редове, като прилагаме:

sorted_dataFrame = dataFrame.sort_index ()
# по избор преминават в подредените етикети на реда

Сортиране по колони:

Можем да използваме метода sort_index (ос = 1), за да сортираме по колони.

Можем също да използваме sort_values ​​(от = „списък на колоните“), за да сортираме по няколко колони:

sorted_dataFrame = dataFrame.sort_values ​​(от = 'ColumnA')

Функциите, базирани на низове, могат също да бъдат приложени към колони / редове на рамка от данни, като долен (), горен (), len (), лента () и т.н.

панел

Панел има три оси. Първата ос съдържа DataFrames. Втората ос е известна като основната ос и е индексът на всяка от DataFrames. Третата ос са колоните на всеки от DataFrame.

Забележка: Панелът е оттеглен. Multindex е алтернативна структура на данни.

импортиране на панди като pd
импортиране numpy като np

data = {'FirstDataFrame': pd.DataFrame (данни),
   „SecondDataFrame“: pd.DataFrame (данни)}
p = pd.Panel (данни)
Снимка от Thought Catalog на Unsplash

Раздел 2: Функционалност на пандите - трябва да знам

Този раздел предоставя общ преглед на функционалността на must know, която Pandas предлага. Очевидно е да се види, че повечето от често срещаните случаи на манипулиране на данни могат да бъдат разгледани от основните функции, които ще очертая тук:

Четене на CSV файл

Нека започнем с най-често срещаната задача за четене на csv файл и създаване на рамка от данни от него:

импортиране на панди като pd

dataFrame = pd.read_csv ( "mycsv.csv", index_col = [ 'черво'])

Четене на Excel файл

Можем да прочетем файл с excel в кадър с данни:

pd.read_excel ('myExcel.xlsx', index_col = ['ColumnA'])

Можем също да заредим един лист в рамка с данни:

pd.read_excel (отворен ('myExcel.xlsx', 'rb'), sheet_name = 'Sheet1')

Глава

Използвайте head (n), за да върнете първите n записи

r = dataFrame.head (10) # ще върне първите 10 записа

опашка

Използвайте tail (n), за да върнете последните n записи

r = dataFrame.tail (10) # ще върне последните 10 записа

Транспониране

Ако искате да разменяте редове и колони, използвайте атрибута T

транспониран = dataFrame.T

Има и ключови атрибути на DataFrame като:

  • форма - показва размерността на DataFarme
  • размер - брой артикули
  • ndim - брой оси

Описвам

Ако искате да видите кратко обобщение на вашия кадър с данни и искате да бъдете информирани за броя му, средното, стандартното отклонение, минималното, максималното и броя на процентилите за всяка от колоните в рамката с данни, тогава използвайте метода на опис:

dataFrame.describe ()

DataFrame също предлага редица статистически функции като:

  • abs () - Абсолютни стойности
  • mean () - Средни стойности. Той също така предлага среден (), режим ()
  • min () - минимална стойност. Предлага също max ()
  • count (), std () - стандартно отклонение, prod () - за изчисляване на произведение на стойностите и cumsum () за изчисляване на кумулативна сума и т.н.
Понякога искаме да приложим собствените си персонализирани функции

Функция на таблицата

За да приложите персонализирана функция върху всички колони на таблица с данни, използвайте метода pipe ():

def myCustom (a, b):
 връщане a-b
dataFrame.pipe (myCustom, 1) # последният параметър е стойността на b в myCustom

Функция на ред / колона

Ако искате да приложите функция към ред или колона, тогава използвайте Apply ():

Това ще приложи myCustom функцията за всички колони:

def myCustom (a):
 връщане a-1
dataFrame.apply (myCustom)

Ако искате да приложите функция към всеки ред:

зададена ос = 1 напр.

dataFrame.apply (myCustom, ос = 1)

Ако искате да приложите функция към всяка колона:

зададена ос = 0, напр.

dataFrame.apply (myCustom, ос = 0)

Забележка: стойността на параметъра по подразбиране на оста е 0

Елементна функция

Можем да използваме функцията map () на Series и applymap () на DataFrame:

dataFrame.applymap (myCustom)
Снимка на Kaitlyn Baker на Unsplash

Раздел 3: Функционалност на пандите: Инженеринг на данни

Pandas е фантастична библиотека, когато става въпрос за изпълнение на задачи за инженеринг на данни. Този раздел ще предостави подробности за основните функции, които Pandas предоставя.

Първо и най-важното, когато работим по проект за научни данни, често се сблъскваме с липсващи данни. За да запълним липсващи данни, можем да заменим празната стойност с предварително дефинирана стойност или можем да използваме запълване назад или напред.

За да проверите за липсващи стойности

dataFrame.notnull ()

За да изпуснете липсващи стойности

dataFrame.dropna ()

Попълване на липсващи стойности - директно заместване

dataFrame.fillna (ScalarValue)

Можем също така да преминем в речник и да използваме метода substitu (), за да заменим елементите със заменената стойност.

Попълване на липсващи стойности - назад или напред

dataFrame.fillna (method = 'backfill') #ffill за предварително запълване

Сравняване на елементи в процент

Можем да сравним елементите в рамка от данни и да изчислим процентна промяна на всеки елемент с предишния му елемент:

dataFrame.pct_change () # колона мъдра
dataFrame.pct_change (ос = 1) #row pamet

Компютърно стандартно отклонение

Можем да направим std ** 2, за да намерим вариация на всяка колона

dataFrame.std () #std на всяка колона

Изчислителна ковариация

За да изчислите ковариацията между две колони на рамка от данни:

dataFrame.cov () # между всички колони
dataFrame ['columnA']. cov (dataFrame ['columnB']) # между две колони

Изчислителна корелация

dataFrame.corr () # между всички колони
dataFrame ['columnA']. corr (dataFrame ['columnB']) # между две колони

Изчисляване на подвижен средно подвижен с прозорец

За да се изчисли средният подвижен прозорец, тук средното може да бъде всяка статистическа мярка за всеки прозорец с размери:

dataFrame.rolling (прозорец = N) .median ()

Това ще замести N-тия ред нататък с медианата на предишните N редове.

Изчисляване на разширяване и експоненциално претеглено средно

Можем да използваме метод на разширяване () за извършване на разширяваща се трансформация.

Експоненциално претеглена средна стойност може да се изчисли и с помощта на evm () функция:

dataFrame.ewm (COM = 0.5) .median ()

Агрегиращи колони

Редица функции могат да бъдат приложени към редица колони в DataFrame чрез използване на агрегираната функция:

dataFrame.aggregate ({'ColumnName': функция})

Групиране на редове

Можем да използваме groupby () функция:

groupedDataFrame = dataFrame.groupby ('ColumnName')
#multiple групиране на колони
groupedDataFrame = dataFrame.groupby (['КолонаA', 'КолонаB')

За да видите групите:

groupedDataFrame.groups

За да изберете група:

groupedDataFrame.get_group (ключ)

филтриране

Можем да изпълним филтър (функция) за филтриране на записите:

dataFrame.filter (myCustomFunction) #myCustomFunction приема параметър и връща стойност

Сливане

Присъединяването на два кадъра с данни е вероятно една от най-важните задачи за наука за данни. Pandas предлага набор от обединяващи функционалности, при които могат да се присъединят множество рамки данни въз основа на ляво, дясно, пълно вътрешно и външно съединение.

Функцията за сливане се нарича merge (), която поема в левия кадър от данни, десния рамка от данни и върху параметъра, определящ кои колони искаме да се присъединим и как параметър, очертаващ съединението, напр. ляво, дясно, външно или вътрешно.

Забележка: Ако искаме да избираме различни колони в лявата и дясната рамка с данни, тогава можем да използваме параметри left_on и right_on и да зададем имената на колоните. Колоните могат да бъдат списък с колони.

Пример:

merged = pd.merge (вляво, вдясно, вляво_on = 'име', right_on = 'id', как = 'наляво')

Съединителни рамки за данни

За да свържете два кадъра с данни, използвайте concat () функция:

pd.concat ([един, два])

За изчисляване на дати

Pandas предлага набор от функционалности за изчисляване на дати в рамка от данни. Можем да използваме:

pd.date_range (начало, край)

Също така можем да преминем в редица честоти като работна дата, седмични, месечни и т.н.

Начертаване на рамка от данни

Данната рамка предлага набор от опции за графично начертаване. Можем да начертаем, кутия, площ, разпръсване на графики, подредени диаграми, диаграми, хистограми и т.н.

dataFrame.plot.bar () # създава лентова диаграма
dataFarme.diff.hist (bins = 10) # създава хистограма
dataFrame.plot.scatter () #plots диаграма на разсейване

Ако искате да разберете всичко за езика за програмиране на Python, моля, прочетете:

резюме

Тази статия очерта и предостави преглед на една от най-важните python библиотеки, известна като Pandas.

Той представи библиотеката и след това открои всички ключови области на библиотеката.

Моля, уведомете ме ако имате някакви отзиви.

Надявам се, че помага.