Как да научите панди

В тази публикация ще очертая стратегия за „научаване на панди“. За тези, които не знаят, пандите са най-популярната библиотека в научната екосистема Python за извършване на анализ на данни. Pandas е способен на много задачи, включително:

  • Четене / писане на много различни формати на данни
  • Избор на подмножества от данни
  • Изчисляване на редове и колони надолу
  • Намиране и попълване на липсващи данни
  • Прилагане на операции към независими групи в рамките на данните
  • Преобразуване на данни в различни форми
  • Комбиниране на множество набори от данни заедно
  • Разширена функционалност на времеви серии
  • Визуализация чрез matplotlib и Seaborn

Станете експерт

  • Моята книга Master Data Analysis с Python е най-изчерпателният текст на пазара за научаване на анализ на данни с помощта на Python и се предлага с 300+ упражнения и проекти.
  • Регистрирайте се за БЕЗПЛАТНИЯ клас от Intro to Pandas
  • Следвайте ме в Twitter @TedPetrou за ежедневните ми трикове за научни данни

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

Тръбопровод за научни данни

За типичен учен с данни, пандите ще играят най-голямата роля, докато данните преминават през тръбопровода. Един показател за количествено определяне на това е с приложението Stack Overflow trend.

В момента pandas има повече активност в Stack Overflow от която и да е друга библиотека за научни данни на Python и представлява изумителни 1% от всички нови въпроси, изпратени на целия сайт.

Стъпка Overflow Overuse

От горната графика имаме доказателства, че много хора използват и също са объркани от пандите. Отговорих на около 400 въпроса относно пандите в Stack Overflow и видях от първа ръка колко лошо разбирана е библиотеката. За цялото величие, което Stack Overflow е дало на програмистите, той идва със значителен недостатък. Незабавното удовлетворение на намирането на отговор е масивен инхибитор за самостоятелна работа с документацията и други ресурси. Мисля, че би било добра идея да отделяте няколко седмици всяка година да не използвате Stack Overflow.

Ръководство стъпка по стъпка за учене на панди

Преди няколко седмици публикувах обикновено ръководство за r / datascience subreddit, когато някой поиска помощ за практикуване на панди. По-долу се описва информацията от тази публикация.

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

  • Обучение на библиотеката на пандите независимо от анализа на данните
  • Да се ​​научим да използваме пандите, както бихте направили по време на действителен анализ на данните

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

Обучение на библиотеката на Pandas независимо от анализа на данните: Този подход включва преди всичко четене и по-важното изследване на официалната документация за пандите.

Да се ​​научим да използваме Pandas, както бихте направили по време на действителен анализ на данните: Този подход включва намиране или събиране на данни от реалния свят и извършване на анализ на крайните данни. Едно от най-добрите места за намиране на данни е с набори от данни на Kaggle. Това не е компонентът за машинно обучение на Kaggle, който горещо бих ви препоръчал да избягвате, докато не се чувствате по-удобно с пандите.

Редуване на подход

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

Започнете с Документацията

Ако никога досега не сте работили с панди, но имате достатъчно разбиране на основния Python, тогава предлагам да започнете с официалната документация за пандите. Той е изключително задълбочен и в сегашното си състояние 2195 страници (внимателно, връзката е към пълен pdf). Дори и с огромния си размер, документацията всъщност не покрива всяка отделна операция и със сигурност не покрива всички различни комбинации от параметри, които можете да използвате в рамките на функциите / методите на пандата.

Извличане на максимума от документацията

За да извлечете максимума от документацията, не просто я четете. Има около 15 раздела от документацията, които предлагам да покрием. За всеки раздел създайте нова тетрадка на Юпитер. Прочетете този блогпост от Data Camp, ако не сте запознати с тетрадките на Юпитер.

Вашият първи тефтер за Юпитер

Започнете с раздела, Въведение в структурите на данните. Отворете тази страница успоредно с тефтера си Jupyter. Докато четете документацията, напишете кода (не го копирайте) и го изпълнете в бележника. По време на изпълнението на кода, не забравяйте да проучите операциите и да опитате нови начини за тяхното използване.

Продължете с раздела Индексиране и избор на данни. Направете нов бележник на Юпитер и отново напишете, изпълнете и проучете различните операции, които научавате. Изборът на данни е един от най-объркващите аспекти за начинаещите потребители на панди, които могат да разберат. Написах дълга публикация на Stack Overflow на .loc vs .iloc, която може да искате да прочетете за още едно обяснение.

След тези два раздела трябва да разберете компонентите на DataFrame и Series и да знаете как да изберете различни подмножества от данни. Сега прочетете 10 минути до пандите, за да получите по-широк преглед на няколко други полезни операции. Както при всички раздели, направете нова тетрадка.

Натиснете shift + tab + раздел, за да получите помощ в Jupyter Notebook

Непрекъснато натискам shift + tab + tab, когато използвам панди в тетрадка на Юпитер. Когато курсорът е поставен вътре в името или в скобите, които следват всеки валиден Python, документацията за този обект изскача в малко поле за превъртане. Това поле за помощ е безценно за мен, тъй като е невъзможно да запомня всички различни имена на параметри и техните входни типове.

Натискане на shift + раздел + раздел, за да разкриете документацията за метода на стека

Можете също да натиснете раздела директно след точка, за да имате падащо меню на всички налични обекти

Натискането на раздела след DataFrame изброява 200+ налични обекта

Ако ви харесва тази статия, помислете за закупуване на пропуск за пълен достъп! която включва всички мои настоящи и бъдещи материали за една ниска цена.

Основна недостатъчност на документацията

Въпреки че документацията е много обстойна, тя не върши добра работа в преподаването как правилно да се прави анализ на данните с реални данни. Всички данни са създадени или произволно генерирани. Освен това реалният анализ на данните ще включва множество операции на панди (понякога десетки), събрани заедно. Никога няма да получите излагане на това от документацията. Документацията преподава механичен подход за учене на панди, при който един метод се усвоява изолирано от останалите.

Вашият първи анализ на данни

След тези три раздела от документацията ще сте готови за първото си излагане на реални данни. Както споменахме по-горе, препоръчвам да започнете с набори от данни на Kaggle. Можете да сортирате по повечето гласували, за да върнете най-популярните от тях, като например набора от данни за филми TMDB 5000. Изтеглете данните и създайте нов бележник на Юпитер само в този набор от данни. Малко вероятно е да успеете да извършите каквато и да е усъвършенствана обработка на данни в този момент, но трябва да можете да практикувате наученото в трите раздела на документацията.

Погледнете ядките

Всеки набор от данни на Kaggle има раздел с ядра (ядра на базата данни за филми). Не позволявайте името „ядрото“ да ви обърква - неговите просто Jupyter тетрадки, създадени от Kaggle потребител в Python или R. Това ще бъде една от най-добрите ви възможности за обучение. След като сте направили някои основни анализи сами, отворете едно от по-популярните Python ядра. Прочетете няколко от тях и вземете парчета код, които ви се струват интересни, и го поставете в собствената си тетрадка.

Ако не разбирате нещо, задайте въпрос в секцията за коментари. Всъщност можете да създадете свое собствено ядро, но засега бих се придържал към работа на местно ниво във вашите бележници.

Да се ​​върнем към документацията

След като завършите първото си ядро, можете да се върнете към документацията и да завършите друг раздел. Ето моя препоръчан път през документацията:

  • Работа с липсващи данни
  • Групиране по: разделяне-прилагане-комбиниране
  • Преобразуване и въртящи се таблици
  • Сливане, присъединяване и обединяване
  • Инструменти за IO (Text, CSV, HDF5,…)
  • Работа с текстови данни
  • Визуализацията
  • Функционалност на времеви серии / дати
  • Времеви делти
  • Категорични данни
  • Изчислителни инструменти
  • MultiIndex / Разширено индексиране

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

След като завършите тези раздели от документацията и около 10 ядра Kaggle, трябва да сте на път да се чувствате комфортно както с механиката на пандите, така и с реалния анализ на данните.

Учебен аналитичен анализ на данни

Като прочетете много популярни ядки Kaggle, ще научите доста за това, което прави добър анализ на данните. За по-официален и строг подход препоръчвам да прочетете глава 4, Изследователски анализ на данните на онлайн книгата на Хауърд Селтман.

Създаване на собствени ядра

Трябва да помислите за създаването на собствени ядра на Kaggle. Това е отличен начин да се принудите да пишете чисти и ясни тетрадки на Юпитер. Типично е да създавате бележници самостоятелно, които са много объркани с код, написан извън ред, който би бил невъзможен за някой друг (като бъдещото ви аз) да има смисъл. Когато публикувате ядро ​​онлайн, бих предложил да го направите така, сякаш очаквате настоящият или бъдещият ви работодател да прочете. Напишете обобщена информация или резюме в горната част и ясно обяснете всеки блок код с маркиране. Това, което обикновено правя, е да направя един разхвърлян, проучвателен тефтер и цял отделен тефтер като краен продукт. Ето ядро ​​от един от моите ученици в набора от данни за HR анализи.

Не научавайте просто панди; Овладейте го

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

Ако сте учен с данни, който работи с Python, вероятно вече често използвате панди, така че като приоритет да го овладеете, трябва да създадете много стойност за вас. Предлагат се и много забавни трикове.

Тествайте знанията си със стек препълване

Всъщност не знаете библиотека на Python, ако не можете да отговорите на повечето въпроси, зададени в Stack Overflow. Това твърдение може да е малко прекалено силно, но като цяло Stack Overflow предоставя чудесна тестова база за вашите познания за определена библиотека. Има над 50 000 въпроса, маркирани като панди, така че имате безкрайна банка за тестове, за да изградите знанията си за панди.

Ако никога не сте отговорили на въпрос относно Stack Overflow, бих препоръчал да разгледате по-стари въпроси, които вече имат отговори, и да се опитате да отговорите само с помощта на документацията. След като почувствате, че можете да съберете висококачествени отговори, бих предложил да направите опити на въпроси без отговор. Нищо не подобри уменията ми за панди повече от отговаряне на въпроси относно Stack Overflow.

Ваши собствени проекти

Ядрата на Kaggle са страхотни, но в крайна сметка трябва да се справите самостоятелно с уникален проект. Първата стъпка е намирането на данни, от които има много ресурси като:

  • data.gov
  • data.world
  • Отворени данни в Ню Йорк, отворени данни в Хюстън, отворени данни в Денвър - повечето големи американски градове имат портали с отворени данни

След като намерите набор от данни, който искате да проучите, продължете същия процес на създаване на тетрадка на Jupyter и когато имате хубав краен продукт, публикувайте го в GitHub.

резюме

В обобщение, използвайте документацията, за да научите механиката на операциите на панди и да използвате реални набори от данни, започвайки с ядра Kaggle, за да научите как да използвате пандите за анализ на данни. И накрая, тествайте знанията си със Stack Overflow.

Вземете пропуск за пълен достъп!

Вземете всички мои настоящи и бъдещи материали за една ниска цена с Пропуск за пълен достъп! Основните налични курсове са следните:

  • Упражнение Python
  • Основен анализ на данни с Python
  • Мастерно машинно обучение с Python