Наука за данните

Урок за рамка за данни на Pandas

Урок за рамка за данни на Pandas

Панди за числен анализ

Pandas е разработен поради необходимостта от ефективен начин за управление на финансови данни в Python.  Pandas е библиотека, която може да се импортира в python, за да подпомогне манипулирането и трансформирането на цифрови данни. Уес Маккини стартира проекта през 2008 г.  Pandas вече се управлява от група инженери и се подкрепя от организацията с нестопанска цел NUMFocus, която ще осигури бъдещия й растеж и развитие. Това означава, че пандите ще бъдат стабилна библиотека в продължение на много години и могат да бъдат включени във вашите приложения, без да се притеснявате от малък проект.

Въпреки че първоначално пандите са разработени за моделиране на финансови данни, нейните структури от данни могат да се използват за манипулиране на различни цифрови данни.  Pandas има редица структури от данни, които са вградени и могат да се използват за лесно моделиране и манипулиране на цифрови данни. Този урок ще обхване пандите DataFrame структура на данните в дълбочина.

Какво е DataFrame?

A DataFrame е една от основните структури от данни в пандите и представлява двумерна колекция от данни.  Има много аналогични обекти на този тип 2-D структура на данни, някои от които включват все по-популярната електронна таблица на Excel, таблица на базата данни или 2-D масив, открити в повечето езици за програмиране.  По-долу е даден пример за DataFrame в графичен формат.  Той представлява група от времеви редове на цените на затваряне на акции по дата.

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

Импортиране на данни

Класовете Pandas имат някои вградени методи за подпомагане при импортиране на данни в структура от данни. По-долу е даден пример за това как да импортирате данни в панел Pandas с DataReader клас.  Може да се използва за импортиране на данни от няколко безплатни източника на финансови данни, включително Quandl, Yahoo Finance и Google. За да използвате библиотеката на пандите, трябва да я добавите като импорт във вашия код.

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

Методът по-долу ще стартира програмата чрез стартиране на метода на ръководството.

ако __name__ == "__main__":
tutorial_run ()

The tutorial_run метод е по-долу.  Това е следващият метод, който ще добавя към кода.  Първият ред на този метод дефинира списък на акции.  Тази променлива ще бъде използвана по-късно в кода като списък на запасите, за които ще бъдат поискани данни, за да се попълни DataFrame.  Вторият ред код извиква get_data метод.  Както ще видим, get_data метод приема три параметъра като свой вход. Ние ще предадем списъка с акции, начална дата и крайна дата за данните, които ще поискаме.

def tutorial_run ():
#Stock Tickers за източник от Yahoo Finance
символи = ['SPY', 'AAPL', 'GOOG']
#get data
df = get_data (символи, '03.01.2006', '2017-12-31')

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

Първият ред на кода дефинира панел панди чрез инстанциране на a DataReader клас.  Обаждането до DataReader class ще се свърже със сървъра на Yahoo Finance и ще поиска ежедневните високи, ниски, затворени и коригирани стойности на затваряне за всеки от акциите в символи списък.  Тези данни се зареждат в панелен обект от панди.

A панел е триизмерна матрица и може да се счита за „стек“ от DataFrames.  Всеки DataFrame в стека съдържа една от дневните стойности за запасите и исканите периоди от време.  Например по-долу DataFrame, представена по-рано, е цената на затваряне DataFrame от искането.  Всеки тип цена (висока, ниска, затворена и коригирана затваряне) има своя собствена DataFrame в получения панел, върнат от заявката.

Вторият ред код нарязва панела на един DataFrame и възлага получените данни на df.  Това ще бъде моята променлива за DataFrame което използвам за останалата част от урока.  Той съдържа дневни близки стойности за трите акции за посочения период от време.  Панелът се нарязва, като се посочи кой от панела DataFrames бихте искали да се върнете.  В този примерен ред на код по-долу това е „Затвори“.

След като имаме своите DataFrame на място, ще разгледам някои от полезните функции в библиотеката на пандите, които ще ни позволят да манипулираме данните в DataFrame обект.

def get_data (символи, start_date, end_date):
панел = данни.DataReader (символи, 'yahoo', start_date, end_date)
df = панел ['Затваряне']
печат (df.глава (5))
печат (df.опашка (5))
връщане df

Ези тура

Третият и четвъртият ред на get_data отпечатайте функционалната глава и опашката на рамката за данни.  Намирам това за най-полезно при отстраняване на грешки и визуализация на данните, но може да се използва и за избор на първата или последната извадка от данните в DataFrame.  Функцията глава и опашка изтегля първия и последния ред данни от DataFrame.  Целочисленият параметър между скобите определя броя на редовете, които трябва да бъдат избрани от метода.

 .локал

The DataFrame локал метод нарязва DataFrame по индекс.  Долният ред на кода нарязва df DataFrame от индекса 2017-12-12.  Предоставих снимка на екрана на резултатите по-долу.

отпечатай df.loc ["12.12.2017"]

локал може да се използва и като двуизмерен парче. Първият параметър е редът, а вторият параметър е колоната.  Кодът по-долу връща единична стойност, която е равна на цената на затваряне на Apple на 12/12/2014.

отпечатай df.loc ["2017-12-12", "AAPL"]

The локал метод може да се използва за нарязване на всички редове в колона или всички колони в ред. The : оператор се използва за означаване на всички.  Кодът по-долу избира всички редове в колоната за цените на затваряне от Google.

отпечатай df.loc [:, "GOOG"]

.филна

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

The .филна метод ще замени посочената стойност за всяка NaN стойност във вашия набор от данни.  Долният ред на кода ще запълни целия NaN в нашия DataFrame с 0.  Тази стойност по подразбиране може да бъде променена за стойност, която отговаря на нуждите на набора от данни, с който работите, като актуализирате параметъра, който се предава на метода.

df.fillna (0)

Нормализиране на данни

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

.iloc е метод, подобен на .локал но взема параметри, базирани на местоположение, вместо параметри, базирани на етикет.  Отнема индекс, базиран на нула, а не името на колоната от .локал пример.  Кодът за нормализация по-долу е пример за някои от мощните матрични изчисления, които могат да бъдат извършени.  Ще пропусна урока по линейна алгебра, но по същество този ред код ще раздели цялата матрица или DataFrame по първата стойност на всеки времеви ред.   В зависимост от вашия набор от данни може да искате норма, базирана на мин, макс или средна стойност.  Тези норми също могат лесно да се изчислят, като се използва матричния стил по-долу.

def normalize_data (df):
връщане df / df.iloc [0 ,:]

Графиране на данни

Когато работите с данни, често е необходимо да ги представите графично.  Методът на графика ви позволява лесно да изградите графика от вашите набори от данни.

Методът по-долу взема нашите DataFrame и го нанася на стандартна линейна графика.  Методът отнема a DataFrame и заглавие като негови параметри.  Първият ред кодови набори брадва към сюжет на DataFrame df.  Той задава заглавието и размера на шрифта за текста.  Следващите два реда задават етикетите за оста x и y.  Последният ред на кода извиква метода show, който отпечатва графиката на конзолата. Представих скрийншот на резултатите от сюжета по-долу.  Това представлява нормализираните цени на затваряне за всеки от акциите през избрания период от време.

def plot_data (df, title = "Цени на акциите"):
брадва = df.парцел (заглавие = заглавие, размер на шрифта = 2)
брадва.set_xlabel ("Дата")
брадва.set_ylabel ("Цена")
парцел.покажи ()

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

Пълен код

импортирайте панди като pd
def plot_selected (df, колони, start_index, end_index):
data_data (df.ix [начален_индекс: краен_индекс, колони])
def get_data (символи, start_date, end_date):
панел = данни.DataReader (символи, 'yahoo', start_date, end_date)
df = панел ['Затваряне']
печат (df.глава (5))
печат (df.опашка (5))
отпечатай df.loc ["12.12.2017"]
отпечатай df.loc ["12.12.2017", "AAPL"]
отпечатай df.loc [:, "GOOG"]
df.fillna (0)
връщане df
def normalize_data (df):
връщане df / df.ix [0 ,:]
def plot_data (df, title = "Цени на акциите"):
брадва = df.парцел (заглавие = заглавие, размер на шрифта = 2)
брадва.set_xlabel ("Дата")
брадва.set_ylabel ("Цена")
парцел.покажи ()
def tutorial_run ():
# Изберете символи
символи = ['SPY', 'AAPL', 'GOOG']
#get data
df = get_data (символи, '03.01.2006', '2017-12-31')
data_data (df)
ако __name__ == "__main__":
tutorial_run ()

Препратки

Начална страница на Pandas
Страница на Wiki в Pandas
https: // en.wikipedia.org / wiki / Wes_McKinney
Начална страница на NumFocus

Как да покажа брояч на FPS в игрите на Linux
Linux игрите получиха голям тласък, когато Valve обяви поддръжка на Linux за Steam клиент и техните игри през 2012 г. Оттогава много AAA и независими ...
Как да изтеглите и пуснете Civilization VI на Сид Майер на Linux
Въведение в играта Civilization 6 е модерен поглед върху класическата концепция, въведена в поредицата от игрите Age of Empires. Идеята беше доста про...
Как да инсталирате и играете Doom на Linux
Въведение в Doom Серията Doom възниква през 90-те години след пускането на оригиналния Doom. Това беше незабавен хит и от този момент нататък серията ...