Tämä artikkeli julkaistiin osana Data Science Blogathon
esittely
No, sinulla on hyvä mahdollisuus!
Datatieteilijöille, jotka käyttävät Pythonia ensisijaisena ohjelmointikielenään, Pandas-paketti on pakollinen tietojen analysointityökalu. Pandas -paketti sisältää kaiken datatieteilijän tarvitseman, ja jokainen kurssi opetti meille sen hyödyntämisen aluksi. Se on niin suuri, voimakas ja suorittaa melkein kaikki taulukolliset manipulaatiot, joita voit kuvitella. Tämä leveys voi kuitenkin joskus olla haitta.
Siinä on monia kauniita ominaisuuksia, jotka ratkaisevat harvinaisia reunatapauksia, erilaisia skenaarioita.
Yksi pandojen keskeisistä haitoista on se, että se kamppailee suurten tietojoukkojen kanssa, koska pandat tallentavat tietorakenteensa RAM -muistiin, mikä voi muuttua riittämättömäksi datakokojen kasvaessa. Käytä tähän PySparkia tai Daskia.
Vaikka Pandas -pakettia käytetään laajalti, monet toiminnot voivat silti jättää huomiotta, koska sitä käytetään vähemmän tai koska he eivät tiedä sen olemassaolosta. Tämän viestin tarkoituksena on esitellä sinulle nämä ominaisuudet ja osoittaa, että Pandas on paljon pätevämpi kuin aiemmin tiesit.
Putki
Pandojen tietojen puhdistamiseksi ytimekkäästi ja kompaktisti voidaan käyttää Pipe -toimintoja, joiden avulla voit yhdistää useita toimintoja yhteen toimintoon.
Jos esimerkiksi haluat käyttää toimintoja, kuten drop_duplicates, encode_categoricals, remove_outliers, jotka hyväksyvät sen argumentit.
df_cleaned = (diamonds.pipe (drop_duplicates). pipe (remove_outliers, ['price', 'carat', 'syvyys']). pipe (encode_categoricals, ['cut', 'color', 'clearity']))
Faktoida
Tämä toiminto on vaihtoehto Sklearns Label Encoderille.
# Muista [0] lopussa timantit ["cut_enc"] = pd.factorize (timantit ["cut"]) [0] >>> timantit ["cut_enc"]. Näyte (5) 52103 2 39813 0 31843 0 10675 0 6634 0 Nimi: cut_enc, dtype: int64
Faktoroi tuloksena joukko arvoja: koodattu arvo ja luettelo ainutlaatuisista luokista.
arvot, yksilöllinen = pd.factorize (timantit ["leikkaus"], lajittelu = tosi) >>> arvot [: 10] array ([0, 1, 3, 1, 3, 2, 2, 2, 4, 2] , dtype = int64) >>> ainutlaatuinen ['Ideal', 'Premium', 'Very Good', 'Good', 'Fair']
Räjähtää
Kuva Edewaa Foster on Unsplash
Räjähdys on toiminto, jolla on mielenkiintoinen nimi. Aloitetaan esimerkillä ja sitten selityksellä:
df = pd.Series ([1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]). to_frame ("likainen") >>> df
Ominaisuussarakkeessa on kaksi riviä, jotka on merkitty luetteloilla. Tämäntyyppisiä tietoja on saatavilla kyselyissä, joissa muutama kysymys hyväksyy useita vaihtoehtoja.
>>> df.explode ("likainen", ignore_index = True)
Tämä funktio ottaa solun, jossa on joukko arvoja, ja räjähtää useille riveille. Jos haluat säilyttää numeerisen indeksin järjestyksen, käytä ignore_index -arvoa True.
Välillä
Tässä on kätevä toiminto loogisen indeksoinnin numeerisille ominaisuuksille alueella:
# Hanki timantteja, joiden hinta on 3500–3700 dollaria [timantit ["price"]. Välillä (3500, 3700, inclusive = "ei")]. Näyte (5)
T
DataFrame sisältää yksinkertaisen T -määritteen, joka tunnetaan nimellä transponointi. Emme ehkä käytä sitä usein, kuvausmenetelmä on hyödyllinen datakehysten katselun aikana.
>>> boston.describe (). T.head (10)
Pandavaihtoehdot
Voidaan käyttää pandojen yleisiä asetuksia, jotka auttavat säätämään ja muuttamaan oletuskäyttäytymistä.
>>> dir (pd.options) ['laskea', 'näyttö', 'io', 'tila', 'piirtäminen']
Se koostuu 5 moduulista. Katsotaan käytettävissä olevat vaihtoehdot näytön alla. Vaihtoehtoja on monia, mutta käytän enimmäkseen max_columns.
>>> dir (pd.options.display) ['chop_threshold', 'max_columns', 'max_colwidth', 'max_info_columns', 'max_info_rows', 'max_rows', ... 'tarkkuus', 'show_dimensions', 'unicode' , 'leveys']
Useimmat ihmiset käyttävät maksimi_sarakkeita ja tarkkuutta
# Poista rajoitus näyttääksesi sarakkeiden lukumäärän pd.options.display.max_columns = Ei mitään # Näytä vain viisi numeroa desimaalin jälkeen pd.options.display.precision = 5 # eroaa tieteellisistä merkeistä
Muunna_tyypit
Olemme kaikki tietoisia siitä, että pandoilla on ärsyttävä tapa merkitä joitain sarakkeita objektin tietotyypeiksi. Sen sijaan, että määrittäisit niiden tyypit suoraan, voit käyttää muuntaa dtypes -menetelmää, joka yrittää päätellä parhaan tietotyypin:
näyte = pd.read_csv ("data/station_day.csv", usecols = ["StationId", "CO", "O3", "AQI_Bucket"]) >>> sample.dtypes StationId -objekti CO float64 O3 float64 AQI_Bucket -objektityyppi: objekti >>> sample.convert_dtypes (). dtypes StationId merkkijono CO float64 O3 float64 AQI_Bucket string dtype: object
Valitse_tyypit
Mielestäni nimen perusteella on selvää, mitä toiminto tekee. Voit käyttää sisällyttämis- ja poissulkemisasetuksia määrittääksesi sarakkeita, jotka sisältävät tai jättävät pois tietyt tietotyypit.
Valitse vain numeeriset sarakkeet, joissa on np.number, esimerkiksi:
# Valitse vain numeeriset sarakkeet diamonds.select_dtypes (include = np.number) .head ()
Naamio
Tämä toiminto auttaa korvaamaan arvot, jos mukautettu ehto ei täyty.
# Luo näytetietojen ikä = pd.Series ([55, 52, 50, 66, 57, 59, 49, 60]). To_frame ("age") -ikä
Yllä olevan toimenpiteen suorittamisen jälkeen.
Min ja Max
Vaikka min ja max ovat hyvin tunnettuja, sillä on joitain parempia ominaisuuksia joillekin reunatapauksille.
index = ["Timantit", "Titanic", "Iris", "Sydänsairaus", "Lainan oletus"] kirjastot = ["XGBoost", "CatBoost", "LightGBM", "Sklearn GB"] df = pd.DataFrame ({lib: np.random.uniform (90, 100, 5) lib kirjastoissa}, index = index) >>> df
Yllä oleva kuvitteellinen DataFrame näyttää neljän eri gradientin tehostavan kirjaston tulokset viidellä tietojoukolla. Etsimme pakettia, joka toimi parhaiten kussakin tietojoukossa. Voit tehdä sen maksimin avulla tyylikkäästi seuraavasti:
>>> df.max (akseli = 1) Timantit 99.52684 Titanic 99.63650 Iris 99.10989 Sydänsairaus 99.31627 Lainan oletusarvo 97.96728 dtype: float64
Suurin ja pienin
Suurin ja pienin on hyödyllinen muuttujan N- tai ~ (alin N) -arvon tarkasteluun.
timantit.suuri (5, "hinta")
timantit.nsm pienin (5, "hinta")
Idxmax ja Idxmin
Pandat palauttavat suurimman/pienimmän numeron, kun soitat sarakkeessa max tai min. On kuitenkin tilanteita, joissa tarvitset min/max -asennon, jota nämä toiminnot eivät tarjoa.
Sen sijaan voit käyttää idxmax/idxmin:
>>> diamonds.price.idxmax () 27749 >>> diamonds.carat.idxmin () 14
Arvo_määrät
Yleinen tapa löytää puuttuvien arvojen prosenttiosuus on yhdistää nolla ja summa ja jakaa matriisin koolla.
Mutta arvo_laskut asiaankuuluvilla argumenteilla tekee saman:
kotelo = pd.read_csv ("train.csv") >>> kotelo ["TakkaQu"]. value_counts (dropna = False, normalize = True) NaN 0.47260 Gd 0.26027 TA 0.21438 Fa 0.02260 Ex 0.01644 Po 0.01370 Nimi: TakkaQu, dtype: float64
Leikata
Leiketoiminto auttaa löytämään poikkeamia alueen ulkopuolella ja korvaamaan ne kovilla rajoilla.
>>> age.clip (50, 60)
At_time ja Betweeen_time
Nämä toiminnot ovat hyödyllisiä työskenneltäessä erittäin rakeisten aikasarjojen kanssa.
at_time auttaa saamaan arvot tiettynä päivänä tai kellonaikana.
index = pd.date_range ("2021-08-01", pisteet = 100, freq = "H") df = pd.DataFrame ({"col": list (range (100))}, index = index) >> > df.head ()
>>> df.at_time ("15:00")
välillä_aika käytetään rivien noutamiseen mukautetulla alueella.
datetime tuonti datetime >>> df.between_time ("09:45", "12:00")
Bdate_range
Tämä toiminto auttaa luomaan aikasarjaindeksit työpäivän taajuudella. Finanssimaailmassa on tällainen taajuus. Tästä toiminnosta voi siis olla apua silloin, kun aikasarjoja indeksoidaan uudelleen indeksin avulla.
series = pd.bdate_range ("2021-01-01", "2021-01-31") # Yhden kuukauden jakso >>> len (sarja) 21
Klo ja Iat
Nämä kaksi lisälaitetta ovat huomattavasti nopeampia kuin loc ja iloc. Niillä on kuitenkin haittapuoli. Niiden avulla voit valita tai korvata vain yhden arvon kerrallaan:
# [hakemisto, etiketti] >>> diamonds.at [234, "cut"] 'Ideal' # [index, index] >>> diamonds.iat [1564, 4] 61.2 # Korvaa hinta -sarakkeen 16541. rivi >> > timantit.at [16541, "price"] = 10000
Argsort
Tämä toiminto auttaa poimimaan indeksejä, jotka lajittelisivat joukon ominaisuuksia.
tips.reset_index (inplace = True, drop = True) sort_idx = tips ["total_bill"]. argsort (kind = "mergesort") # Lajittele nyt "vinkit" total_bill tips.iloc [sort_idx] .head ()
Kissan lisävaruste
Pandat mahdollistavat sisäänrakennetut python-toiminnot päivämäärinä ja merkkijonoina käyttämällä lisäosia, kuten str tai dt.
>>> diamonds.dtypes karaatti float64 leikkausluokka väriluokka kirkkaus luokka syvyys float64 pöytä float64 hinta int64 x float64 y float64 z float64 cut_enc int64 dtype: object
Voidaan käyttää monia erityistoimintoja käyttämällä kissan lisävarustetta kategorisissa sarakkeissa. Siinä on toimintoja, kuten luokkia yksilöllisten etsimiseksi, rename_categories, joiden avulla toiminnot voidaan nimetä uudelleen.
timantit ["new_cuts"] = timantit ["leikattu"]. kissa.nimi_luokat (luettelo ("ABCDE")) >>> timantit ["uudet_leikkaukset"]. kissa.luokat Hakemisto (['A', 'B', ' C ',' D ',' E '], dtype =' objekti ')
Katso tästä lisää luetteloa alla olevista toiminnoista kissan lisävaruste.
Puristaa
Puristus on toiminto, jota käytetään harvinaisissa mutta raskauttavissa reunatilanteissa.
Kun yksi arvo palautetaan datakehyksen alijoukkoon käytetystä ehdosta, tämä on yksi näistä tapauksista. Harkitse seuraavaa skenaariota:
osajoukko = diamonds.loc [diamonds.index >> osajoukko
Vaikka soluja olisi vain yksi, palauta DataFrame. Se on hankalaa, koska sinun täytyy nyt käyttää.loc sekä sarakkeen nimellä että indeksillä hinnan saamiseksi.
Sinun ei tarvitse, jos tiedät puristaa. Akseli voidaan poistaa yksisoluisesta DataFrame- tai -sarjasta tällä toiminnolla. Harkitse seuraavaa skenaariota:
>>> osajoukko.purista () 326
Poistettava akseli on mahdollista määrittää. Se oli vasta palannut skalaariksi.
>>> subset.squeeze ("sarakkeet") # tai "rivit" 0 326 Nimi: hinta, dtype: int64
Huomaa, että tämä toiminto toimii vain sarja- tai DataFrame -kehyksissä, joissa on yksittäiset arvot.
Excel_writer
Se on yleinen luokka Excel -tiedostojen luomiseen ja DataFramen kirjoittamiseen siihen. Harkitse, meillä on nämä kaksi tietojoukkoa.
# Lataa kaksi tietojoukkoa timantit = sns.load_dataset ("timantit") vinkit = sns.load_dataset ("vinkit") # Kirjoita samaan excel -tiedostoon pd.ExcelWriter ("data/data.xlsx") avulla kirjoittajana: diamonds.to_excel (kirjoittaja, arkin_nimi = "timantit") tips.to_excel (kirjoittaja, arkin_nimi = "vinkit")
Siinä on ominaisuuksia, jotka määrittävät käytettävän DateTime -muodon riippumatta siitä, tarvitsetko uuden tiedoston vai muokkaatko olemassa olevaa, mitä tapahtuu, jos taulukko on olemassa. Tarkista tämä dokumentointi lisätietoja.
Yhteenveto
Se ei ole tyhjentävä katsaus pandoihin ja dokumentointi sisältää lisätietoja koodista ja ominaisuuksista. Suosittelen kokeilemaan tässä annettujen koodinpätkien eri muunnelmia sekä erilaisia parametreja. Pandojen voiman voi täysin ymmärtää tekemällä tämän.
Kirjastot, kuten Dask ja datatable, ovat vähitellen syrjäyttäneet Pandat uusilla ominaisuuksillaan suurten tietojoukkojen käsittelyyn. Pandas on edelleen laajimmin käytetty tietojenkäsittelyväline Python -datatieyhteisössä. Koska se sopii hyvin nykyiseen SciPy -pinoon, kirjasto toimii paradigmana muiden pakettien seurattavaksi ja rakennettavaksi.
Toivottavasti pidit tätä viestiä oivaltavana ja kiitos kun luit.
Tässä artikkelissa esitetyt tiedotusvälineet eivät ole Analytics Vidhyan omistuksessa ja niitä käytetään tekijän harkinnan mukaan.
liittyvä
- "
- 100
- 7
- Kaikki
- analyysi
- Analytics
- perustelut
- artikkeli
- PARAS
- lisäämällä
- boston
- rakentaa
- soittaa
- tapauksissa
- muuttaa
- Siivous
- koodi
- Sarake
- Yhteinen
- yhteisö
- Laskea
- Luominen
- tiedot
- tietojen analysointi
- tietojenkäsittely
- tietojen tutkija
- Päivämäärät
- DID
- Sairaus
- dollaria
- reuna
- kunnostautua
- kokeilu
- oikeudenmukainen
- Ominaisuus
- Ominaisuudet
- taloudellinen
- Etunimi
- seurata
- muoto
- toiminto
- Global
- hyvä
- Kasvaa
- Käsittely
- kätevä
- tätä
- Korkea
- Miten
- Miten
- HTTPS
- indeksi
- tiedot
- IT
- avain
- Kieli
- suuri
- oppiminen
- Kirjasto
- Lista
- Listat
- kuormitus
- lainata
- koneoppiminen
- Manipulointi
- naamio
- Media
- Uudet ominaisuudet
- numerot
- Vaihtoehdot
- Muut
- paradigma
- Ihmiset
- putki
- teho
- Tarkkuus
- palkkio
- esittää
- hinta
- Ohjelmointi
- Python
- RAM
- alue
- Lukeminen
- tulokset
- tiede
- tutkijat
- Sarjat
- Yksinkertainen
- Koko
- So
- SOLVE
- Alkaa
- varastot
- aika
- vinkit
- ylin
- Unicode
- us
- arvo
- Näytä
- KUKA
- sisällä
- toimii
- maailman-
- kirjailija
- kirjoittaminen
- X