'N Vriendelike inleiding tot data-analise in Python
Oor die jare heen het die gebruik van python vir gegewenswetenskap ongelooflik gegroei en groei daagliks.
Datawetenskap is 'n groot studieveld met baie subvelde, waarvan data-analise ongetwyfeld een van die belangrikste van al hierdie velde is, en ongeag 'n mens se vaardigheidsvlak in data-wetenskap, het dit toenemend belangrik geword om te verstaan ​​of ten minste 'n basiese kennis daarvan hê.
1 Wat is data-analise?
2 Wat is Pandas??
2.1 Datastrukture in Pandas
3 Data-ontleding in Pandas
4 Data ontbreek
Wat is data-analise?
Data-analise is die skoonmaak en transformasie van 'n groot hoeveelheid ongestruktureerde of ongeorganiseerde data, met die doel om belangrike insigte en inligting oor hierdie data te genereer wat kan help om ingeligte besluite te neem.
Daar is verskillende instrumente wat gebruik word vir data-analise, Python, Microsoft Excel, Tableau, SaS, ens., Maar in hierdie artikel fokus ons op hoe data-analise in python gedoen word. Meer spesifiek, hoe dit gedoen word met 'n pythonbiblioteek genaamd pandas.
Wat is Pandas??
Pandas is 'n open source Python-biblioteek wat gebruik word vir datamanipulasie en -wurging. Dit is vinnig en baie doeltreffend en het instrumente om verskillende soorte data in die geheue te laai. Dit kan gebruik word om verskillende vorme van data te vorm, etiketteer, indekseer of selfs te groepeer.
Datastrukture in Pandas
Daar is 3 datastrukture in Pandas, naamlik;
Die beste manier om die drie van mekaar te onderskei, is om te sien dat die een verskillende stapels van die ander bevat. Dus is 'n DataFrame 'n stapel reekse en 'n paneel 'n stapel DataFrames.
'N Reeks is 'n eendimensionele skikking
'N Stapel van verskeie reekse maak 'n 2-dimensionele DataFrame
'N Stapel met verskeie DataFrames maak 'n driedimensionele paneel
Die datastruktuur waarmee ons die meeste werk, is die tweedimensionele DataFrame, wat ook die standaardmiddel kan wees vir sommige datastelle wat ons teëkom.
Data-ontleding in Pandas
Geen installasie is nodig vir hierdie artikel nie. Ons gebruik 'n instrument genaamd colaboratory geskep deur Google. Dit is 'n aanlyn-python-omgewing vir data-analise, masjienleer en AI. Dit is eenvoudig 'n wolk-gebaseerde Jupyter Notebook wat vooraf geïnstalleer is met byna elke pythonpakket wat u as data-wetenskaplike sou benodig..
Nou, gaan voort na https://colab.research.google.com/notebooks/intro.ipynb. U moet die onderstaande sien.
Klik op die lêeropsie aan die linkerkant links en klik op die "nuwe notaboek" -opsie. U sou sien dat 'n nuwe Jupyter-notaboekbladsy in u blaaier gelaai is. Die eerste ding wat ons moet doen, is om pandas in ons werksomgewing in te voer. Ons kan dit doen deur die volgende kode te gebruik;
voer pandas in as pd
Vir hierdie artikel gebruik ons ​​'n dataprys vir huise vir ons data-ontleding. Die datastel wat ons sou gebruik, kan gevind word hier. Die eerste ding wat ons wil doen, is om hierdie datastel in ons omgewing te laai.
Ons kan dit doen met die volgende kode in 'n nuwe sel;
Die .read_csv word gebruik wanneer ons 'n CSV-lêer wil lees en ons het 'n sep-eienskap deurgegee om aan te toon dat die CSV-lêer komma-afgebaken is.
Ons moet ook daarop let dat ons gelaaide CSV-lêer in 'n veranderlike df gestoor word .
Ons hoef nie die druk () -funksie in Jupyter Notebook te gebruik nie. Ons kan eenvoudig 'n veranderlike naam in ons sel invoer en Jupyter Notebook sal dit vir ons uitdruk.
Ons kan dit probeer deur df in 'n nuwe sel in te tik en dit te gebruik, en dit sal al die data in ons datastel as 'n DataFrame vir ons uitdruk.
Maar ons wil nie altyd al die data sien nie, maar soms wil ons net die eerste paar data en hul kolomname sien. Ons kan die df.head () -funksie gebruik om die eerste vyf kolomme te druk en df.tail () om die laaste vyf te druk. Die een van die twee se uitsette lyk so;
Ons wil kyk of daar verwantskappe tussen hierdie verskillende rye en kolomme data is. Die .describe () -funksie doen presies dit vir ons.
As u df.describe () loop, word die volgende afvoer gegee;
Ons kan onmiddellik sien dat die .beskryf () die gemiddelde, standaardafwyking, minimum en maksimum waardes en persentiele gee van elke kolom in die DataFrame. Dit is veral nuttig.
Ons kan ook die vorm van ons 2D DataFrame ondersoek om uit te vind hoeveel rye en kolomme dit het. Ons kan dit doen met behulp van df.shape wat 'n tule in die formaat (rye, kolomme) teruggee.
Ons kan ook die name van al die kolomme in ons DataFrame met behulp van df.column's nagaan.
Wat as ons net een kolom wil kies en al die data daarin moet terugstuur? Dit word gedoen op 'n manier soortgelyk aan die sny deur 'n woordeboek. Tik die volgende kode in 'n nuwe sel in en voer dit uit
Bogenoemde kode gee die pryskolom, ons kan verder gaan deur dit in 'n nuwe veranderlike as sodanig op te slaan
prys = df ['prys']
Nou kan ons elke ander aksie uitvoer wat op 'n DataFrame op ons prysveranderlike uitgevoer kan word, aangesien dit slegs 'n deelversameling van 'n werklike DataFrame is. Ons kan dinge doen soos df.head (), df.shape ens..
Ons kan ook verskeie kolomme kies deur 'n lys kolomname in df as sodanig deur te gee
data = df [['prys', 'slaapkamers']]
Bogenoemde kies kolomme met die name 'prys' en 'slaapkamers'. As ons data invoer.head () in 'n nuwe sel, sal ons die volgende hê:
Die bogenoemde manier om kolomme te sny gee al die ryelemente in daardie kolom terug, wat as ons 'n deelversameling rye en 'n deelversameling kolomme van ons datastel wil teruggee? Dit kan gedoen word met behulp van .iloc en word op 'n soortgelyke manier as pythonlyste geïndekseer. Sodat ons iets kan doen soos
Wat die 3de kolom van die 50ste ry tot die einde terugbring. Dit is redelik netjies en net soos snylyste in python.
Laat ons 'n paar baie interessante dinge doen, ons datastel vir huispryse bevat 'n kolom waarin ons die prys van 'n huis vertel en 'n ander kolom vertel hoeveel slaapkamers die spesifieke huis het. Die huisprys is 'n deurlopende waarde, so dit is moontlik dat ons nie twee huise het wat dieselfde prys het nie. Maar die aantal slaapkamers is ietwat diskreet, so ons kan verskillende huise hê met twee, drie, vier slaapkamers, ens.
Wat as ons al die huise met dieselfde aantal slaapkamers wil kry en die gemiddelde prys van elke afsonderlike slaapkamer wil vind? Dit is relatief maklik om dit in pandas te doen, dit kan as sodanig gedoen word;
df.groupby ('slaapkamers') ['prys'] .mean ()
Bogenoemde groepeer eers die DataFrame volgens die datastelle met identiese slaapkamer nommer met behulp van die funksie df.groupby (), dan sê ons dit moet vir ons net die slaapkolom gee en die funksie .mean () gebruik om die gemiddelde van elke huis in die datastel te vind..
Wat as ons bogenoemde wil visualiseer? Ons wil graag kyk hoe die gemiddelde prys van elke spesifieke slaapkamer nommer verskil? Ons hoef net die vorige kode vas te koppel aan 'n .plot () -funksie as sodanig;
df.groupby ('slaapkamers') ['prys'] .mean (). plot ()
Ons het 'n uitset wat as sodanig lyk;
Bogenoemde toon 'n paar neigings in die data. Op die horisontale as het ons 'n duidelike aantal slaapkamers (let daarop dat meer as een huis X aantal slaapkamers kan hê). Op die vertikale as het ons die gemiddelde prys van die ooreenstemmende aantal slaapkamers op die horisontale vlak. as. Ons kan nou dadelik agterkom dat huise wat tussen 5 en 10 slaapkamers het baie meer kos as huise met 3 slaapkamers. Dit sal ook duidelik word dat huise met ongeveer 7 of 8 slaapkamers baie meer kos as huise met 15, 20 of selfs 30 kamers..
Inligting soos bogenoemde is die rede waarom data-analise baie belangrik is; ons kan nuttige insig verkry uit die data wat nie onmiddellik of heeltemal onmoontlik is om op te let sonder ontleding nie.
Gestel ek neem 'n opname wat bestaan ​​uit 'n reeks vrae. Ek deel 'n skakel na die opname met duisende mense sodat hulle hul terugvoer kan gee. My uiteindelike doel is om data-ontleding van hierdie data uit te voer, sodat ek 'n paar belangrike insigte uit die data kan kry.
Daar kan baie verkeerd gaan, sommige landmeters voel miskien ongemaklik om sommige van my vrae te beantwoord en dit leeg te laat. Baie mense kan dieselfde doen vir verskillende dele van my opnamesvrae. Dit kan moontlik nie as 'n probleem beskou word nie, maar stel jou voor dat ek numeriese data in my opname sou versamel en dat 'n deel van die ontleding van my die som, gemiddelde of ander rekenkundige bewerking moes kry. Verskeie ontbrekende waardes sou in my ontleding tot baie onakkuraathede lei, ek moet 'n manier vind om hierdie ontbrekende waardes te vind en te vervang met 'n paar waardes wat 'n goeie plaasvervanger vir hulle kan wees.
Pandas voorsien ons van 'n funksie om ontbrekende waardes te vind in 'n DataFrame genaamd isnull ().
Die isnull () -funksie kan as sodanig gebruik word;
Hierdeur word 'n DataFrame van Booleërs teruggestuur wat aan ons dui of die data wat oorspronklik daar aanwesig was, regtig ontbreek of vals ontbreek. Die uitset sal as sodanig lyk;
Ons het 'n manier nodig om al hierdie ontbrekende waardes te vervang. Die keuse van ontbrekende waardes word meestal as nul beskou. Dit kan soms gebruik word as die gemiddelde van alle ander data, of miskien die gemiddelde van die gegewens rondom dit, afhangende van die data-wetenskaplike en die gebruiksgeval van die data wat ontleed word..
Om alle ontbrekende waardes in 'n DataFrame te vul, gebruik ons ​​die .fillna () -funksie wat as sodanig gebruik word;
In die bogenoemde vul ons al die leë data met waarde nul. Dit kan net so goed wees as enige ander nommer wat ons spesifiseer.
Die belangrikheid van data kan nie te veel beklemtoon word nie, dit help ons om antwoorde uit ons data self te kry !. Volgens die data-analise is dit die nuwe olie vir digitale ekonomieë.