Denna artikel publicerades som en del av Data Science Blogathon
Beskrivning
Tja, det finns en bra möjlighet att du kan!
För datavetenskapare som använder Python som sitt primära programmeringsspråk är Pandas-paketet ett måste-ha dataanalysverktyg. Pandas -paketet har allt en datavetenskapare behöver, och varje kurs lärde oss hur man använder det till en början. Det är så stort, kraftfullt och utför nästan varje tabellmanipulation du kan tänka dig. Denna bredd kan emellertid ibland vara en nackdel.
Den har många vackra funktioner som löser sällsynta kantfall, olika scenarier.
En av pandans viktigaste nackdelar är att den kämpar med stora datamängder eftersom pandor lagrar sina datastrukturer i RAM, vilket kan bli otillräckligt när datastorleken växer. Använd PySpark eller Dask för detta.
Även om Pandas -paketet används i stor utsträckning finns det fortfarande många funktioner som människor kan förbise, oavsett om det används mindre eller för att de inte är medvetna om dess existens. Det här inlägget har för avsikt att återinföra dig till dessa funktioner och visa att Pandor är mycket mer kompetenta än du tidigare visste.
Pipe
För att utföra datarengöring på ett kortfattat och kompakt sätt i pandor kan man använda rörfunktioner, som låter dig kombinera flera funktioner i en operation.
Till exempel, om du gillar att tillämpa funktioner som drop_duplicates, encod_categoricals, remove_outliers som accepterar dess argument.
df_cleaned = (diamonds.pipe (drop_duplicates). pipe (remove_outliers, ['price', 'carat', 'depth']). pipe (encod_categoricals, ['cut', 'color', 'clarity']))
Faktorisera
Denna funktion är ett alternativ till Sklearns Label Encoder.
# Tänk på [0] i slutet diamanter ["cut_enc"] = pd.factorize (diamants ["cut"]) [0] >>> diamanter ["cut_enc"]. Prov (5) 52103 2 39813 0 31843 0 10675 0 6634 0 Namn: cut_enc, dtype: int64
Faktorisera resultat en tuppel av värden: det kodade värdet och en lista med unika kategorier.
värden, unika = pd.factorize (diamanter ["cut"], sort = True) >>> värden [: 10] array ([0, 1, 3, 1, 3, 2, 2, 2, 4, 2] , dtype = int64) >>> unik ['Ideal', 'Premium', 'Very Good', 'Good', 'Fair']
Explode
Foto: Edewaa Foster on Unsplash
Explode är en funktion med ett intressant namn. Låt oss börja med ett exempel och sedan en förklaring:
df = pd.Series ([1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]). to_frame ("smutsig") >>> df
Funktionskolumnen har två rader markerade med listor. Denna typ av data är tillgänglig i undersökningar där några frågor accepterar flera val.
>>> df.explode ("smutsig", ignore_index = True)
Denna funktion tar en cell med en rad värden och exploderar i flera rader. För att behålla ordningen av ett numeriskt index, använd ignorera_index som sant.
Mellan
För booleska indexering av numeriska funktioner inom ett intervall, här är en praktisk funktion:
# Få diamanter som är prissatta mellan 3500 och 3700 dollar diamanter [diamanter ["pris"]. Mellan (3500, 3700, inklusive = "varken")]. Prov (5)
T
DataFrame har ett enkelt T -attribut, kallat transponering. Vi kanske inte använder det ofta, beskriv metod är till hjälp när du tittar på dataramar.
>>> boston.describe (). T.head (10)
Pandas Alternativ
Man kan använda globala inställningar för pandor som hjälper till att justera och ändra standardbeteenden.
>>> dir (pd.options) ['beräkna', 'display', 'io', 'läge', 'plotta']
Den består av 5 moduler. Låt oss se tillgängliga alternativ under displayen. Det finns många alternativ tillgängliga, men jag använder mest max_columns.
>>> dir (pd.options.display) ['chop_threshold', 'max_columns', 'max_colwidth', 'max_info_columns', 'max_info_rows', 'max_rows', ... 'precision', 'show_dimensions', 'unicode' , 'bredd']
De flesta använder max_kolumner och precision
# Ta bort gränsen för att visa antalet cols pd.options.display.max_columns = None # Visa bara 5 siffror efter decimalen pd.options.display.precision = 5 # blir av med vetenskaplig notation
Convert_dtypes
Vi är alla medvetna om att pandor har en irriterande vana att markera vissa kolumner som objektdatatyper. I stället för att definiera deras typer direkt kan du använda metoden convert dtypes, som försöker härleda den bästa datatypen:
sample = pd.read_csv ("data/station_day.csv", usecols = ["StationId", "CO", "O3", "AQI_Bucket"]) >>> sample.dtypes StationId object CO float64 O3 float64 AQI_Bucket object dtype: objekt >>> sample.convert_dtypes (). dtypes StationId string CO float64 O3 float64 AQI_Bucket string dtype: object
Select_dtypes
Från namnet tror jag att det är klart vad funktionen gör. Du kan använda inkluderings- och uteslutningsalternativen för att ange kolumner som innehåller eller utelämnar specifika datatyper.
Välj endast numeriska kolumner med nummer nummer, till exempel:
# Välj endast numeriska kolumner diamonds.select_dtypes (include = np.nummer) .head ()
Mask
Denna funktion hjälper till att ersätta värden där det anpassade villkoret inte uppfylls.
# Skapa provdata åldrar = pd.Series ([55, 52, 50, 66, 57, 59, 49, 60]). To_frame ("åldrar") åldrar
Efter att ha utfört ovanstående operation.
Min och Max
Även om min och max är välkända, har det några bättre egenskaper för vissa kantfall.
index = ["Diamonds", "Titanic", "Iris", "Heart Disease", "Loan Default"] libraries = ["XGBoost", "CatBoost", "LightGBM", "Sklearn GB"] df = pd.DataFrame ({lib: np.random.uniform (90, 100, 5) för lib i bibliotek}, index = index) >>> df
Den fiktiva DataFrame ovan visar resultaten från fyra olika gradienthöjande bibliotek på fem datamängder. Vi letar efter det paket som gjorde bäst i varje datauppsättning. Så här uppnår du det med max på ett elegant sätt:
>>> df.max (axel = 1) Diamanter 99.52684 Titanic 99.63650 Iris 99.10989 Hjärtsjukdom 99.31627 Lån Standard 97.96728 dtyp: float64
Störst och minst
Det största och det minsta är till hjälp för att se de översta N- eller ~ (översta N) -värdena för en variabel.
diamonds.nlargest (5, "pris")
diamonds.nsmallest (5, "pris")
Idxmax och Idxmin
Pandor returnerar det största/minsta numret när du ringer max eller min på en kolumn. Det finns dock situationer när du behöver positionen för min/max, som dessa funktioner inte ger.
Istället kan du använda idxmax/idxmin:
>>> diamonds.price.idxmax () 27749 >>> diamonds.carat.idxmin () 14
Value_Counts
Ett vanligt sätt att hitta procentandelen av de saknade värdena är att kombinera isnull och summa och dividera med matrisens storlek.
Men value_counts med relevanta argument gör samma sak:
bostäder = pd.read_csv ("train.csv") >>> bostäder ["FireplaceQu"]. value_counts (dropna = False, normalize = True) NaN 0.47260 Gd 0.26027 TA 0.21438 Fa 0.02260 Ex 0.01644 Po 0.01370 Namn: FireplaceQu, dtype: float64
Clip
Klippfunktionen hjälper till att hitta outliers utanför ett område och ersätta dem med hårda gränser.
>>> ages.clip (50, 60)
At_time och Betweeen_time
Dessa funktioner är användbara när du arbetar med tidsserier med hög granularitet.
at_time hjälper till att få värden vid ett visst datum eller tidpunkt.
index = pd.date_range ("2021-08-01", perioder = 100, freq = "H") df = pd.DataFrame ({"col": list (intervall (100))}, index = index) >> > df.head ()
>>> df.at_time (“15:00”)
mellan_tid används för att hämta rader inom ett anpassat intervall.
från datetime import datetime >>> df.between_time ("09:45", "12:00")
Bdate_range
Denna funktion hjälper till att skapa tidsserieindex med arbetsdagens frekvens. Finansvärlden har denna typ av frekvens. Så den här funktionen kan vara till hjälp vid tidpunkten för indexering av tidsserier med reindexfunktion.
serie = pd.bdate_range ("2021-01-01", "2021-01-31") # En period på en månad >>> len (serie) 21
På och Iat
Dessa två accessorer är väsentligt snabbare än loc och iloc. De har dock en nackdel. De låter dig bara välja eller ersätta ett värde i taget:
# [index, etikett] >>> diamonds.at [234, "cut"] 'Ideal' # [index, index] >>> diamonds.iat [1564, 4] 61.2 # Ersätt 16541: e raden i priskolumnen >> > diamonds.at [16541, "pris"] = 10000
Argsort
Denna funktion hjälper till att extrahera index som skulle sortera en rad funktioner.
tips.reset_index (inplace = True, drop = True) sort_idx = tips ["total_bill"]. argsort (kind = "mergesort") # Nu, sortera `tips` baserat på total_bill tips.iloc [sort_idx] .head ()
Katttillbehör
Pandorna tillåter inbyggda funktioner för python på datum och strängar med hjälp av accessorer som str eller dt.
>>> diamonds.dtypes carat float64 cut kategori färgkategori klarhetskategori djup float64 tabell float64 pris int64 x float64 y float64 z float64 cut_enc int64 dtype: objekt
Man kan använda många specialfunktioner med hjälp av cat accessor på kategoriska kolumner. Den har funktioner som kategorier för att hitta unika, rename_categories för att byta namn på funktionerna.
diamants ["new_cuts"] = diamants ["cut"]. cat.rename_categories (list ("ABCDE")) >>> diamonds ["new_cuts"]. cat.categories Index (['A', 'B', ' C ',' D ',' E '], dtype =' objekt ')
Kolla in detta för en mer lista över funktioner under katttillbehör.
Squeeze
Squeeze är en funktion som används i sällsynta men försvårande kantomständigheter.
När ett enda värde returneras från ett villkor som används för att delsätta en DataFrame, är detta ett av dessa fall. Tänk på följande scenario:
delmängd = diamonds.loc [diamonds.index >> delmängd
Även om det bara finns en cell, returnera DataFrame. Det är obekvämt eftersom du nu måste använda .loc med både kolumnnamn och index för att få priset.
Du behöver inte om du vet hur man klämmer. En axel kan tas bort från en enda cell DataFrame eller serie med denna funktion. Tänk på följande scenario:
>>> delmängd.squeeze () 326
Det är möjligt att ange vilken axel som ska tas bort. Det hade bara återvänt skalär nu.
>>> subset.squeeze ("kolumner") # eller "rader" 0 326 Namn: pris, dtype: int64
Observera att den här funktionen bara fungerar för serier eller DataFrame med enstaka värden.
Excel_writer
Det är en generisk klass för att skapa excel -filer och skriva DataFrame i den. Tänk på att vi har dessa två datamängder.
# Ladda två datamängder diamanter = sns.load_dataset ("diamanter") tips = sns.load_dataset ("tips") # Skriv till samma excel -fil med pd.ExcelWriter ("data/data.xlsx") som författare: diamonds.to_excel (författare, bladnamn = "diamanter") tips.to_excel (författare, bladnamn = "tips")
Den har egenskaper för att ange vilket DateTime -format som ska användas, oavsett om du behöver en ny fil eller ändra en befintlig, vad händer om ett ark finns. Kolla detta dokumentation för mer detaljer.
Slutsats
Det är inte en uttömmande översikt över pandor och dokumentation innehåller mer information om koden och funktioner. Jag rekommenderar att du experimenterar med olika varianter av kodavsnitten som tillhandahålls här, liksom olika parametrar. Man kan till fullo förstå kraften i pandor genom att göra detta.
Bibliotek som Dask och datatabell förskjuter gradvis Pandas med sina flashiga nya funktioner för hantering av stora datamängder, Pandas är fortfarande det mest använda datahanteringsverktyget i Python datavetenskapssamhälle. På grund av hur väl det passar in i den nuvarande SciPy -stacken, fungerar biblioteket som ett paradigm för andra paket att följa och bygga.
Jag hoppas att du hade funnit detta inlägg insiktsfullt och tack för att du läste.
Media som visas i denna artikel ägs inte av Analytics Vidhya och används efter författarens gottfinnande.
Relaterad
- "
- 100
- 7
- Alla
- analys
- analytics
- argument
- Artikeln
- BÄST
- öka
- boston
- SLUTRESULTAT
- Ring
- fall
- byta
- Rengöring
- koda
- Kolumn
- Gemensam
- samfundet
- Compute
- Skapa
- datum
- dataanalys
- datavetenskap
- datavetare
- Datum
- DID
- Sjukdom
- dollar
- kant
- excel
- experimentera
- verkligt
- Leverans
- Funktioner
- finansiella
- Förnamn
- följer
- format
- fungera
- Välgörenhet
- god
- Väx
- Arbetsmiljö
- praktisk
- här.
- Hög
- Hur ser din drömresa ut
- How To
- HTTPS
- index
- informationen
- IT
- Nyckel
- språk
- Large
- inlärning
- Bibliotek
- Lista
- listor
- läsa in
- lån
- maskininlärning
- Manipulation
- mask
- Media
- Nya funktioner
- nummer
- Tillbehör
- Övriga
- paradigmet
- Personer
- Röret
- kraft
- Precision
- Premium
- presentera
- pris
- Programmering
- Python
- RAM
- område
- Läsning
- Resultat
- Vetenskap
- vetenskapsmän
- Serier
- Enkelt
- Storlek
- So
- LÖSA
- starta
- lagrar
- tid
- Tips
- topp
- unicode
- us
- värde
- utsikt
- VEM
- inom
- fungerar
- världen
- författare
- skrivning
- X