Пријатељски увод у анализу података у Питхон-у

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

Наука о подацима је огромна област проучавања са много подобласти, од којих је анализа података без сумње једно од најважнијих од свих ових области, и без обзира на ниво вештине у науци о подацима, постаје све важније разумети или имати бар основно знање о томе.

Шта је анализа података?

Анализа података је чишћење и трансформација велике количине неструктурираних или неорганизованих података, са циљем генерисања кључних увида и информација о тим подацима који би помогли у доношењу информисаних одлука.

Постоје различити алати који се користе за анализу података, Питхон, Мицрософт Екцел, Таблеау, СаС, итд., али у овом чланку ћемо се фокусирати на то како се анализа података ради у Питхон-у. Тачније, како се то ради са питхон библиотеком под називом Панде.

Шта је Пандас?

Пандас је Питхон библиотека отвореног кода која се користи за манипулацију подацима и препирање. Брз је и високо ефикасан и има алате за учитавање неколико врста података у меморију. Може се користити за преобликовање, означавање пресека, индексирање или чак груписање неколико облика података.

Структуре података у Пандас

У Пандас постоје 3 структуре података, наиме;

Најбољи начин да разликујете њих три је да видите да један садржи неколико хрпа другог. Дакле, ДатаФраме је стог серија, а Панел је стог ДатаФраме-а.

Серија је једнодимензионални низ

Стог од неколико серија чини 2-димензионални ДатаФраме

Стог од неколико оквира података чини 3-димензионални панел

Структура података са којом бисмо највише радили је 2-димензионални ДатаФраме који такође може бити подразумевано средство представљања за неке скупове података на које бисмо могли наићи.

Анализа података у Пандас

За овај чланак није потребна инсталација. Користили бисмо алат који се зове сараднички креирао Гоогле. То је онлајн питхон окружење за анализу података, машинско учење и вештачку интелигенцију. То је једноставно Јупитер нотебоок заснован на облаку који долази унапред инсталиран са скоро сваким Питхон пакетом који би вам био потребан као научнику података.

Сада, идите на хттпс://цолаб.ресеарцх.гоогле.цом/нотебоокс/интро.ипинб. Требало би да видите доле.

У горњем левом делу навигације кликните на опцију датотеке и кликните на опцију „нова бележница“. Видећете нову страницу Јупитер бележнице учитану у ваш претраживач. Прва ствар коју треба да урадимо је да увеземо панде у наше радно окружење. То можемо учинити тако што ћемо покренути следећи код;

import pandas as pd

За овај чланак користили бисмо скуп података о ценама станова за нашу анализу података. Може се пронаћи скуп података који бисмо користили овде. Прва ствар коју бисмо желели да урадимо је да учитамо овај скуп података у наше окружење.

  Како зарадити новац од партнерског маркетинга на Инстаграму

То можемо урадити са следећим кодом у новој ћелији;

df =  pd.read_csv('https://firebasestorage.googleapis.com/v0/b/ai6-portfolio-abeokuta.appspot.com/o/kc_house_data.csv?alt=media &token=6a5ab32c-3cac-42b3-b534-4dbd0e4bdbc0 ', sep=',')

.реад_цсв се користи када желимо да прочитамо ЦСВ датотеку и пренели смо својство сеп да бисмо показали да је ЦСВ датотека раздвојена зарезима.

Такође треба да приметимо да се наша учитана ЦСВ датотека чува у променљивој дф.

Не морамо да користимо функцију принт() у Јупитер бележници. Можемо једноставно да унесемо име променљиве у нашу ћелију и Јупитер Нотебоок ће нам је одштампати.

То можемо испробати тако што ћемо у нову ћелију укуцати дф и покренути га, он ће одштампати све податке у нашем скупу података као ДатаФраме за нас.

Али не желимо увек да видимо све податке, понекад само желимо да видимо првих неколико података и имена њихових колона. Можемо користити функцију дф.хеад() за штампање првих пет колона и дф.таил() за штампање последњих пет. Резултат било ког од ова два би изгледао као такав;

Желели бисмо да проверимо везе између ових неколико редова и колона података. Функција .десцрибе() ради управо то за нас.

Покретање дф.десцрибе() даје следећи излаз;

Одмах можемо да видимо да .десцрибе() даје средњу вредност, стандардну девијацију, минималне и максималне вредности и перцентиле сваке колоне у ДатаФраме-у. Ово је посебно корисно.

Такође можемо да проверимо облик нашег 2Д оквира података да бисмо сазнали колико редова и колона има. То можемо урадити помоћу дф.схапе који враћа тупле у формату (редови, колоне).

Такође можемо да проверимо имена свих колона у нашем ДатаФраме-у користећи дф.цолумнс.

Шта ако желимо да изаберемо само једну колону и вратимо све податке у њој? Ово се ради на сличан начин као и сечење кроз речник. Унесите следећи код у нову ћелију и покрените га

df['price ']

Горњи код враћа колону цена, можемо ићи даље тако што ћемо је сачувати у нову променљиву као такву

price = df['price']

Сада можемо да извршимо сваку другу радњу која се може извршити на ДатаФраме-у на нашој променљивој цене јер је то само подскуп стварног ДатаФраме-а. Можемо радити ствари попут дф.хеад(), дф.схапе итд.

  Како да откријете скривене камере за надзор помоћу телефона

Такође бисмо могли да изаберемо више колона тако што ћемо проследити листу назива колона у дф као такав

data = df[['price ', 'bedrooms']]

Горе селектују колоне са називима ‘прице’ и ‘бедроомс’, ако унесемо дата.хеад() у нову ћелију, имаћемо следеће

Горњи начин сечења колона враћа све елементе реда у тој колони, шта ако желимо да вратимо подскуп редова и подскуп колона из нашег скупа података? Ово се може урадити помоћу .илоц и индексира се на начин сличан Питхон листама. Тако да можемо да урадимо нешто слично

df.iloc[50: , 3]

Који враћа 3. колону од 50. реда до краја. Прилично је уредно и исто као и резање листа у Питхон-у.

Хајде сада да урадимо неке заиста занимљиве ствари, наш скуп података о ценама станова има колону која нам говори о цени куће, а друга колона нам говори о броју спаваћих соба које та кућа има. Цена становања је континуирана вредност, па је могуће да немамо две куће које имају исту цену. Али број спаваћих соба је донекле дискретан, тако да можемо имати неколико кућа са две, три, четири спаваће собе итд.

Шта ако желимо да добијемо све куће са истим бројем спаваћих соба и пронађемо средњу цену сваке одвојене спаваће собе? То је релативно лако урадити у пандама, то се може учинити као такво;

df.groupby('bedrooms ')['price '].mean()

Горе наведено прво групише ДатаФраме по скуповима података са идентичним бројем спаваће собе користећи функцију дф.гроупби(), затим му кажемо да нам да само колону спаваће собе и користи функцију .меан() да пронађе средњу вредност сваке куће у скупу података .

Шта ако желимо да визуализујемо горе наведено? Желели бисмо да можемо да проверимо како варира средња цена сваког појединачног броја спаваће собе? Само треба да повежемо претходни код са функцијом .плот() као таквом;

df.groupby('bedrooms ')['price '].mean().plot()

Имаћемо излаз који изгледа као такав;

Горе наведено нам показује неке трендове у подацима. На хоризонталној оси имамо различит број спаваћих соба (Имајте на уму да више од једне куће може имати Кс број спаваћих соба), на вертикалној оси имамо средњу вредност цена у односу на одговарајући број спаваћих соба на хоризонтали осовина. Сада одмах можемо приметити да куће које имају између 5 и 10 спаваћих соба коштају много више од кућа са 3 спаваће собе. Такође ће постати очигледно да куће које имају око 7 или 8 спаваћих соба коштају много више од оних са 15, 20 или чак 30 соба.

  Како играти Орвелла на Линуку

Информације попут горе наведених су разлог зашто је анализа података веома важна, ми смо у могућности да извучемо користан увид из података који није одмах или сасвим немогуће приметити без анализе.

Недостаје Подаци

Претпоставимо да радим на анкети која се састоји од низа питања. Делим везу до анкете са хиљадама људи како би могли да дају своје повратне информације. Мој крајњи циљ је да извршим анализу података на овим подацима како бих могао да добијем неке кључне увиде из података.

Сада би много тога могло поћи наопако, неки геодети би се могли осећати непријатно да одговоре на нека од мојих питања и оставе поље празним. Многи људи би могли да ураде исто за неколико делова мојих анкетних питања. Ово се можда неће сматрати проблемом, али замислите да сам прикупљао нумеричке податке у својој анкети и да је део анализе захтевао да добијем или збир, средњу вредност или неку другу аритметичку операцију. Неколико вредности које недостају довеле би до много нетачности у мојој анализи, морам да смислим начин да пронађем и заменим ове недостајуће вредности са неким вредностима које би могле бити блиска замена за њих.

Панде нам пружају функцију за проналажење вредности које недостају у ДатаФраме-у под називом иснулл().

Функција иснулл() се може користити као таква;

df.isnull()

Ово враћа ДатаФраме логичких вредности који нам говори да ли су изворно присутни подаци заиста недостајали или лажно недостају. Излаз би изгледао као такав;

Потребан нам је начин да можемо да заменимо све ове недостајуће вредности, најчешће се избор вредности које недостају може узети као нула. Понекад се може узети као средња вредност свих других података или можда средња вредност података око њих, у зависности од научника података и случаја употребе података који се анализирају.

Да бисмо попунили све недостајуће вредности у ДатаФраме-у, користимо функцију .филлна() која се користи као таква;

df.fillna(0)

У горњем тексту, све празне податке попуњавамо нултом вредношћу. То може бити и било који други број за који смо одредили да буде.

Важност података се не може пренагласити, они нам помажу да добијемо одговоре директно из наших података!. За анализу података кажу да је нова нафта за дигиталну економију.

Сви примери у овом чланку се могу наћи овде.

Да бисте сазнали детаљније, погледајте Онлине курс Анализа података са Питхон и Пандас.