Something went wrong. Try again.
Content for Decem's Python course.
Something went wrong. Try again.
python-course Curso de Python - Tema 11.ipynb
86 kB · 3341 lines
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 11. Librería Pandas" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "**pandas** es una librería *open source* que nos proporciona estructuras de datos y herramientas de análisis de datos potentes y fáciles de usar en Python." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Se puede instalar en nuestro entorno virtual con el siguiente comando:\n", "\n", "```\n", "pipenv install pandas\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Se utiliza el alias `pd` como estándar de facto par el uso de **pandas**." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Series\n", "\n", "Una serie representa una secuencia de datos unidimensional, y se crea pasándole a pandas una lista de datos." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "0 1.0\n", "1 3.0\n", "2 5.0\n", "3 NaN\n", "4 6.0\n", "5 8.0\n", "dtype: float64" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = pd.Series([1,3,5,np.nan,6,8])\n", "s" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### DataFrame\n", "\n", "Un objeto `DataFrame` representa una estructura tabular bi-dimensional que contiene datos potencialmente heterogéneos, con filas etiquetadas.\n", "\n", "Se pueden crear a partir de un diccionario, o de un `array` de NumPy." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "df = pd.DataFrame({\n", " 'A' : [1., 2., np.nan, None],\n", " 'B' : pd.Timestamp('20130102'),\n", " 'C' : pd.Series(1,index=list(range(4)),dtype='float32'),\n", " 'D' : np.array([3] * 4,dtype='int32'),\n", " 'E' : pd.Categorical([\"test\",\"train\",\"test\",\"train\"]),\n", " 'F' : 'foo'\n", "})" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " <th>E</th>\n", " <th>F</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>1.0</td>\n", " <td>2013-01-02</td>\n", " <td>1.0</td>\n", " <td>3</td>\n", " <td>test</td>\n", " <td>foo</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>2.0</td>\n", " <td>2013-01-02</td>\n", " <td>1.0</td>\n", " <td>3</td>\n", " <td>train</td>\n", " <td>foo</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>NaN</td>\n", " <td>2013-01-02</td>\n", " <td>1.0</td>\n", " <td>3</td>\n", " <td>test</td>\n", " <td>foo</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>NaN</td>\n", " <td>2013-01-02</td>\n", " <td>1.0</td>\n", " <td>3</td>\n", " <td>train</td>\n", " <td>foo</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D E F\n", "0 1.0 2013-01-02 1.0 3 test foo\n", "1 2.0 2013-01-02 1.0 3 train foo\n", "2 NaN 2013-01-02 1.0 3 test foo\n", "3 NaN 2013-01-02 1.0 3 train foo" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "A float64\n", "B datetime64[ns]\n", "C float32\n", "D int32\n", "E category\n", "F object\n", "dtype: object" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Podemos utilizar una serie para especificar la columna de índice." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',\n", " '2013-01-05', '2013-01-06'],\n", " dtype='datetime64[ns]', freq='D')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dates = pd.date_range('20130101', periods=6)\n", "dates" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-01</th>\n", " <td>-0.679399</td>\n", " <td>-0.564244</td>\n", " <td>-0.395166</td>\n", " <td>-0.004622</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-02</th>\n", " <td>2.147829</td>\n", " <td>-0.991826</td>\n", " <td>-1.004833</td>\n", " <td>0.168517</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-03</th>\n", " <td>0.398068</td>\n", " <td>-0.536610</td>\n", " <td>-0.773990</td>\n", " <td>-1.075894</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-04</th>\n", " <td>-1.185011</td>\n", " <td>1.988697</td>\n", " <td>-0.770427</td>\n", " <td>-0.472499</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-05</th>\n", " <td>-0.359634</td>\n", " <td>0.338176</td>\n", " <td>0.105786</td>\n", " <td>0.359107</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-06</th>\n", " <td>-0.555880</td>\n", " <td>1.115044</td>\n", " <td>-2.108126</td>\n", " <td>0.139896</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D\n", "2013-01-01 -0.679399 -0.564244 -0.395166 -0.004622\n", "2013-01-02 2.147829 -0.991826 -1.004833 0.168517\n", "2013-01-03 0.398068 -0.536610 -0.773990 -1.075894\n", "2013-01-04 -1.185011 1.988697 -0.770427 -0.472499\n", "2013-01-05 -0.359634 0.338176 0.105786 0.359107\n", "2013-01-06 -0.555880 1.115044 -2.108126 0.139896" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))\n", "df2" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Ejes\n", "\n", "En un DataFrame de `pandas` se pueden realizar operaciones a lo largo de los dos ejes, o `axis`.\n", "\n", "- Si en una operación especificamos `axis=0` nos referimos a loas índices, es decir, estaremos diciendo que la operación se realiza para todas las filas.\n", "- Si en una operación especificamos `axis=1` estaremos diciendo que la operación se realiza para todas las columnas." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Visualización de datos" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-01</th>\n", " <td>-0.679399</td>\n", " <td>-0.564244</td>\n", " <td>-0.395166</td>\n", " <td>-0.004622</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-02</th>\n", " <td>2.147829</td>\n", " <td>-0.991826</td>\n", " <td>-1.004833</td>\n", " <td>0.168517</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D\n", "2013-01-01 -0.679399 -0.564244 -0.395166 -0.004622\n", "2013-01-02 2.147829 -0.991826 -1.004833 0.168517" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.head(2)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-05</th>\n", " <td>-0.359634</td>\n", " <td>0.338176</td>\n", " <td>0.105786</td>\n", " <td>0.359107</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-06</th>\n", " <td>-0.555880</td>\n", " <td>1.115044</td>\n", " <td>-2.108126</td>\n", " <td>0.139896</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D\n", "2013-01-05 -0.359634 0.338176 0.105786 0.359107\n", "2013-01-06 -0.555880 1.115044 -2.108126 0.139896" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.tail(2)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',\n", " '2013-01-05', '2013-01-06'],\n", " dtype='datetime64[ns]', freq='D')" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.index" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "Index(['A', 'B', 'C', 'D'], dtype='object')" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.columns" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### DataFrame.to_numpy()\n", "\n", "El método `.to_numpy()` de un DataFrame nos da una representación en una estructura de datos de `numpy` de los datos del DataFrame," ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "array([[-0.67939947, -0.5642441 , -0.39516608, -0.00462202],\n", " [ 2.14782856, -0.99182561, -1.00483345, 0.16851747],\n", " [ 0.39806756, -0.53661026, -0.77399033, -1.07589368],\n", " [-1.18501088, 1.98869725, -0.77042661, -0.47249893],\n", " [-0.35963418, 0.3381756 , 0.10578614, 0.35910665],\n", " [-0.55588001, 1.11504445, -2.10812582, 0.13989579]])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.to_numpy()\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Describe\n", "\n", "El método `.describe()` nos muestra un resumen estadístico de los datos." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>count</th>\n", " <td>6.000000</td>\n", " <td>6.000000</td>\n", " <td>6.000000</td>\n", " <td>6.000000</td>\n", " </tr>\n", " <tr>\n", " <th>mean</th>\n", " <td>-0.039005</td>\n", " <td>0.224873</td>\n", " <td>-0.824459</td>\n", " <td>-0.147582</td>\n", " </tr>\n", " <tr>\n", " <th>std</th>\n", " <td>1.188837</td>\n", " <td>1.148846</td>\n", " <td>0.739655</td>\n", " <td>0.534241</td>\n", " </tr>\n", " <tr>\n", " <th>min</th>\n", " <td>-1.185011</td>\n", " <td>-0.991826</td>\n", " <td>-2.108126</td>\n", " <td>-1.075894</td>\n", " </tr>\n", " <tr>\n", " <th>25%</th>\n", " <td>-0.648520</td>\n", " <td>-0.557336</td>\n", " <td>-0.947123</td>\n", " <td>-0.355530</td>\n", " </tr>\n", " <tr>\n", " <th>50%</th>\n", " <td>-0.457757</td>\n", " <td>-0.099217</td>\n", " <td>-0.772208</td>\n", " <td>0.067637</td>\n", " </tr>\n", " <tr>\n", " <th>75%</th>\n", " <td>0.208642</td>\n", " <td>0.920827</td>\n", " <td>-0.488981</td>\n", " <td>0.161362</td>\n", " </tr>\n", " <tr>\n", " <th>max</th>\n", " <td>2.147829</td>\n", " <td>1.988697</td>\n", " <td>0.105786</td>\n", " <td>0.359107</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D\n", "count 6.000000 6.000000 6.000000 6.000000\n", "mean -0.039005 0.224873 -0.824459 -0.147582\n", "std 1.188837 1.148846 0.739655 0.534241\n", "min -1.185011 -0.991826 -2.108126 -1.075894\n", "25% -0.648520 -0.557336 -0.947123 -0.355530\n", "50% -0.457757 -0.099217 -0.772208 0.067637\n", "75% 0.208642 0.920827 -0.488981 0.161362\n", "max 2.147829 1.988697 0.105786 0.359107" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.describe()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Transposición\n", "\n", "Podemos obtener el DataFrame transpuesto de uno dado a través del atributo `T`." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>2013-01-01</th>\n", " <th>2013-01-02</th>\n", " <th>2013-01-03</th>\n", " <th>2013-01-04</th>\n", " <th>2013-01-05</th>\n", " <th>2013-01-06</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>A</th>\n", " <td>-0.679399</td>\n", " <td>2.147829</td>\n", " <td>0.398068</td>\n", " <td>-1.185011</td>\n", " <td>-0.359634</td>\n", " <td>-0.555880</td>\n", " </tr>\n", " <tr>\n", " <th>B</th>\n", " <td>-0.564244</td>\n", " <td>-0.991826</td>\n", " <td>-0.536610</td>\n", " <td>1.988697</td>\n", " <td>0.338176</td>\n", " <td>1.115044</td>\n", " </tr>\n", " <tr>\n", " <th>C</th>\n", " <td>-0.395166</td>\n", " <td>-1.004833</td>\n", " <td>-0.773990</td>\n", " <td>-0.770427</td>\n", " <td>0.105786</td>\n", " <td>-2.108126</td>\n", " </tr>\n", " <tr>\n", " <th>D</th>\n", " <td>-0.004622</td>\n", " <td>0.168517</td>\n", " <td>-1.075894</td>\n", " <td>-0.472499</td>\n", " <td>0.359107</td>\n", " <td>0.139896</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " 2013-01-01 2013-01-02 2013-01-03 2013-01-04 2013-01-05 2013-01-06\n", "A -0.679399 2.147829 0.398068 -1.185011 -0.359634 -0.555880\n", "B -0.564244 -0.991826 -0.536610 1.988697 0.338176 1.115044\n", "C -0.395166 -1.004833 -0.773990 -0.770427 0.105786 -2.108126\n", "D -0.004622 0.168517 -1.075894 -0.472499 0.359107 0.139896" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.T" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Ordenación\n", "\n", "Podemos ordenar los datos por alguno de los ejes o por valores." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>D</th>\n", " <th>C</th>\n", " <th>B</th>\n", " <th>A</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-01</th>\n", " <td>-0.004622</td>\n", " <td>-0.395166</td>\n", " <td>-0.564244</td>\n", " <td>-0.679399</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-02</th>\n", " <td>0.168517</td>\n", " <td>-1.004833</td>\n", " <td>-0.991826</td>\n", " <td>2.147829</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-03</th>\n", " <td>-1.075894</td>\n", " <td>-0.773990</td>\n", " <td>-0.536610</td>\n", " <td>0.398068</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-04</th>\n", " <td>-0.472499</td>\n", " <td>-0.770427</td>\n", " <td>1.988697</td>\n", " <td>-1.185011</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-05</th>\n", " <td>0.359107</td>\n", " <td>0.105786</td>\n", " <td>0.338176</td>\n", " <td>-0.359634</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-06</th>\n", " <td>0.139896</td>\n", " <td>-2.108126</td>\n", " <td>1.115044</td>\n", " <td>-0.555880</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " D C B A\n", "2013-01-01 -0.004622 -0.395166 -0.564244 -0.679399\n", "2013-01-02 0.168517 -1.004833 -0.991826 2.147829\n", "2013-01-03 -1.075894 -0.773990 -0.536610 0.398068\n", "2013-01-04 -0.472499 -0.770427 1.988697 -1.185011\n", "2013-01-05 0.359107 0.105786 0.338176 -0.359634\n", "2013-01-06 0.139896 -2.108126 1.115044 -0.555880" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.sort_index(axis=1, ascending=False)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-02</th>\n", " <td>2.147829</td>\n", " <td>-0.991826</td>\n", " <td>-1.004833</td>\n", " <td>0.168517</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-01</th>\n", " <td>-0.679399</td>\n", " <td>-0.564244</td>\n", " <td>-0.395166</td>\n", " <td>-0.004622</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-03</th>\n", " <td>0.398068</td>\n", " <td>-0.536610</td>\n", " <td>-0.773990</td>\n", " <td>-1.075894</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-05</th>\n", " <td>-0.359634</td>\n", " <td>0.338176</td>\n", " <td>0.105786</td>\n", " <td>0.359107</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-06</th>\n", " <td>-0.555880</td>\n", " <td>1.115044</td>\n", " <td>-2.108126</td>\n", " <td>0.139896</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-04</th>\n", " <td>-1.185011</td>\n", " <td>1.988697</td>\n", " <td>-0.770427</td>\n", " <td>-0.472499</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D\n", "2013-01-02 2.147829 -0.991826 -1.004833 0.168517\n", "2013-01-01 -0.679399 -0.564244 -0.395166 -0.004622\n", "2013-01-03 0.398068 -0.536610 -0.773990 -1.075894\n", "2013-01-05 -0.359634 0.338176 0.105786 0.359107\n", "2013-01-06 -0.555880 1.115044 -2.108126 0.139896\n", "2013-01-04 -1.185011 1.988697 -0.770427 -0.472499" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.sort_values(by='B')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Selección \n", "\n", "Podemos obtener una selección de los datos usando los métodos estándar de Python o `numpy` para la obtener *slices* en listas o matrices." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Además, `pandas` proporcia métodos especializados (y optimizados) para el acceso a los datos:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "`.loc`\n", "\n", "Se utiliza principalmente para acceder por etiqueta. Soporta los siguietnes tipos de entradas:\n", "\n", "- Una etiqueta única: df.loc['a']\n", "- Una lista o array de etiqueta: df.loc[['a', 'b', 'c']]\n", "- Un *slice* con etiquetas: df.loc[a':'f']" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "`.iloc`\n", "\n", "Se utiliza principalmente para acceder posición. Soporta los siguietnes tipos de entradas:\n", "\n", "- Una entero: df.iloc[0]\n", "- Una lista o array de enteros: df.iloc[[0, 1, 2]]\n", "- Un *slice* : df.loc[1:3]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "Tipo de objeto | Selección | Valor retornado\n", "---------------|----------------|-------------------------------------\n", "Series | series[label] | valor escalar\n", "DataFrame | frame[colname] | La serie correspondiente a `colname`" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "2013-01-01 -0.679399\n", "2013-01-02 2.147829\n", "2013-01-03 0.398068\n", "2013-01-04 -1.185011\n", "2013-01-05 -0.359634\n", "2013-01-06 -0.555880\n", "Freq: D, Name: A, dtype: float64" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2['A']" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "2013-01-01 -0.679399\n", "2013-01-02 2.147829\n", "2013-01-03 0.398068\n", "2013-01-04 -1.185011\n", "2013-01-05 -0.359634\n", "2013-01-06 -0.555880\n", "Freq: D, Name: A, dtype: float64" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.A" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-01</th>\n", " <td>-0.679399</td>\n", " <td>-0.564244</td>\n", " <td>-0.395166</td>\n", " <td>-0.004622</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-02</th>\n", " <td>2.147829</td>\n", " <td>-0.991826</td>\n", " <td>-1.004833</td>\n", " <td>0.168517</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-03</th>\n", " <td>0.398068</td>\n", " <td>-0.536610</td>\n", " <td>-0.773990</td>\n", " <td>-1.075894</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D\n", "2013-01-01 -0.679399 -0.564244 -0.395166 -0.004622\n", "2013-01-02 2.147829 -0.991826 -1.004833 0.168517\n", "2013-01-03 0.398068 -0.536610 -0.773990 -1.075894" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2[0:3]" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-02</th>\n", " <td>2.147829</td>\n", " <td>-0.991826</td>\n", " <td>-1.004833</td>\n", " <td>0.168517</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-03</th>\n", " <td>0.398068</td>\n", " <td>-0.536610</td>\n", " <td>-0.773990</td>\n", " <td>-1.075894</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-04</th>\n", " <td>-1.185011</td>\n", " <td>1.988697</td>\n", " <td>-0.770427</td>\n", " <td>-0.472499</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D\n", "2013-01-02 2.147829 -0.991826 -1.004833 0.168517\n", "2013-01-03 0.398068 -0.536610 -0.773990 -1.075894\n", "2013-01-04 -1.185011 1.988697 -0.770427 -0.472499" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2['20130102':'20130104']" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "A -0.679399\n", "B -0.564244\n", "C -0.395166\n", "D -0.004622\n", "Name: 2013-01-01 00:00:00, dtype: float64" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.loc[dates[0]]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-01</th>\n", " <td>-0.679399</td>\n", " <td>-0.564244</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-02</th>\n", " <td>2.147829</td>\n", " <td>-0.991826</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-03</th>\n", " <td>0.398068</td>\n", " <td>-0.536610</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-04</th>\n", " <td>-1.185011</td>\n", " <td>1.988697</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-05</th>\n", " <td>-0.359634</td>\n", " <td>0.338176</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-06</th>\n", " <td>-0.555880</td>\n", " <td>1.115044</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B\n", "2013-01-01 -0.679399 -0.564244\n", "2013-01-02 2.147829 -0.991826\n", "2013-01-03 0.398068 -0.536610\n", "2013-01-04 -1.185011 1.988697\n", "2013-01-05 -0.359634 0.338176\n", "2013-01-06 -0.555880 1.115044" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.loc[:, ['A', 'B']]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-02</th>\n", " <td>2.147829</td>\n", " <td>-0.991826</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-03</th>\n", " <td>0.398068</td>\n", " <td>-0.536610</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-04</th>\n", " <td>-1.185011</td>\n", " <td>1.988697</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B\n", "2013-01-02 2.147829 -0.991826\n", "2013-01-03 0.398068 -0.536610\n", "2013-01-04 -1.185011 1.988697" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.loc['20130102':'20130104', ['A', 'B']]" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "A 2.147829\n", "B -0.991826\n", "Name: 2013-01-02 00:00:00, dtype: float64" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.loc['20130102', ['A', 'B']]" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "A -1.185011\n", "B 1.988697\n", "C -0.770427\n", "D -0.472499\n", "Name: 2013-01-04 00:00:00, dtype: float64" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.iloc[3]" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-04</th>\n", " <td>-1.185011</td>\n", " <td>1.988697</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-05</th>\n", " <td>-0.359634</td>\n", " <td>0.338176</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B\n", "2013-01-04 -1.185011 1.988697\n", "2013-01-05 -0.359634 0.338176" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.iloc[3:5, 0:2]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Indexación condicional\n", "\n", "Se puede acceder a las columnas que cumplan una condición concreta, indicando la condición en el selector." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-02</th>\n", " <td>2.147829</td>\n", " <td>-0.991826</td>\n", " <td>-1.004833</td>\n", " <td>0.168517</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-03</th>\n", " <td>0.398068</td>\n", " <td>-0.536610</td>\n", " <td>-0.773990</td>\n", " <td>-1.075894</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D\n", "2013-01-02 2.147829 -0.991826 -1.004833 0.168517\n", "2013-01-03 0.398068 -0.536610 -0.773990 -1.075894" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2[df2.A > 0]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Operaciones" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Se pueden realizar operaciones estadísticas básicas llamando a los métodos correspondientes." ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "A -0.039005\n", "B 0.224873\n", "C -0.824459\n", "D -0.147582\n", "dtype: float64" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.mean()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "-0.03900473868952752" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2['A'].mean()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "2013-01-01 -0.410858\n", "2013-01-02 0.079922\n", "2013-01-03 -0.497107\n", "2013-01-04 -0.109810\n", "2013-01-05 0.110859\n", "2013-01-06 -0.352266\n", "Freq: D, dtype: float64" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.mean(axis=1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Se pueden aplicar funciones a los datos." ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-01</th>\n", " <td>-0.679399</td>\n", " <td>-0.564244</td>\n", " <td>-0.395166</td>\n", " <td>-0.004622</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-02</th>\n", " <td>1.468429</td>\n", " <td>-1.556070</td>\n", " <td>-1.400000</td>\n", " <td>0.163895</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-03</th>\n", " <td>1.866497</td>\n", " <td>-2.092680</td>\n", " <td>-2.173990</td>\n", " <td>-0.911998</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-04</th>\n", " <td>0.681486</td>\n", " <td>-0.103983</td>\n", " <td>-2.944416</td>\n", " <td>-1.384497</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-05</th>\n", " <td>0.321852</td>\n", " <td>0.234193</td>\n", " <td>-2.838630</td>\n", " <td>-1.025391</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-06</th>\n", " <td>-0.234028</td>\n", " <td>1.349237</td>\n", " <td>-4.946756</td>\n", " <td>-0.885495</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D\n", "2013-01-01 -0.679399 -0.564244 -0.395166 -0.004622\n", "2013-01-02 1.468429 -1.556070 -1.400000 0.163895\n", "2013-01-03 1.866497 -2.092680 -2.173990 -0.911998\n", "2013-01-04 0.681486 -0.103983 -2.944416 -1.384497\n", "2013-01-05 0.321852 0.234193 -2.838630 -1.025391\n", "2013-01-06 -0.234028 1.349237 -4.946756 -0.885495" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.apply(np.cumsum)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " <th>E</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2013-01-01</th>\n", " <td>-0.679399</td>\n", " <td>-0.564244</td>\n", " <td>-0.395166</td>\n", " <td>-0.004622</td>\n", " <td>0.674777</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-02</th>\n", " <td>2.147829</td>\n", " <td>-0.991826</td>\n", " <td>-1.004833</td>\n", " <td>0.168517</td>\n", " <td>3.152662</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-03</th>\n", " <td>0.398068</td>\n", " <td>-0.536610</td>\n", " <td>-0.773990</td>\n", " <td>-1.075894</td>\n", " <td>1.473961</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-04</th>\n", " <td>-1.185011</td>\n", " <td>1.988697</td>\n", " <td>-0.770427</td>\n", " <td>-0.472499</td>\n", " <td>3.173708</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-05</th>\n", " <td>-0.359634</td>\n", " <td>0.338176</td>\n", " <td>0.105786</td>\n", " <td>0.359107</td>\n", " <td>0.718741</td>\n", " </tr>\n", " <tr>\n", " <th>2013-01-06</th>\n", " <td>-0.555880</td>\n", " <td>1.115044</td>\n", " <td>-2.108126</td>\n", " <td>0.139896</td>\n", " <td>3.223170</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D E\n", "2013-01-01 -0.679399 -0.564244 -0.395166 -0.004622 0.674777\n", "2013-01-02 2.147829 -0.991826 -1.004833 0.168517 3.152662\n", "2013-01-03 0.398068 -0.536610 -0.773990 -1.075894 1.473961\n", "2013-01-04 -1.185011 1.988697 -0.770427 -0.472499 3.173708\n", "2013-01-05 -0.359634 0.338176 0.105786 0.359107 0.718741\n", "2013-01-06 -0.555880 1.115044 -2.108126 0.139896 3.223170" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c = df2.apply(lambda x: x.max() - x.min(), axis=1)\n", "df2['E'] = c\n", "df2" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "2013-01-01 1.354177\n", "2013-01-02 4.157495\n", "2013-01-03 2.549855\n", "2013-01-04 4.358719\n", "2013-01-05 1.078375\n", "2013-01-06 5.331296\n", "Freq: D, dtype: float64" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.apply(lambda x: x.max() - x.min(), axis=1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Uniones\n", "\n", "La librería `pandas` proporciona diferentes métodos para la unión de Series o DataFrame." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Concat" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>0</th>\n", " <th>1</th>\n", " <th>2</th>\n", " <th>3</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>-0.634450</td>\n", " <td>0.763724</td>\n", " <td>0.710228</td>\n", " <td>-0.694768</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>-0.142616</td>\n", " <td>1.630704</td>\n", " <td>1.029687</td>\n", " <td>-1.008484</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>-0.344466</td>\n", " <td>-0.222917</td>\n", " <td>0.294177</td>\n", " <td>-0.859483</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>1.012883</td>\n", " <td>-0.369916</td>\n", " <td>-0.552784</td>\n", " <td>1.356238</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>-0.167002</td>\n", " <td>1.677076</td>\n", " <td>-0.454767</td>\n", " <td>1.183958</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>-0.528190</td>\n", " <td>-0.912389</td>\n", " <td>0.786753</td>\n", " <td>1.043857</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>0.527898</td>\n", " <td>-0.379471</td>\n", " <td>1.537252</td>\n", " <td>-1.050597</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>-0.352473</td>\n", " <td>-1.825571</td>\n", " <td>0.186576</td>\n", " <td>0.977988</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>0.991172</td>\n", " <td>-0.030169</td>\n", " <td>-1.816031</td>\n", " <td>0.601092</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>1.522968</td>\n", " <td>0.440188</td>\n", " <td>-1.763289</td>\n", " <td>1.840091</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " 0 1 2 3\n", "0 -0.634450 0.763724 0.710228 -0.694768\n", "1 -0.142616 1.630704 1.029687 -1.008484\n", "2 -0.344466 -0.222917 0.294177 -0.859483\n", "3 1.012883 -0.369916 -0.552784 1.356238\n", "4 -0.167002 1.677076 -0.454767 1.183958\n", "5 -0.528190 -0.912389 0.786753 1.043857\n", "6 0.527898 -0.379471 1.537252 -1.050597\n", "7 -0.352473 -1.825571 0.186576 0.977988\n", "8 0.991172 -0.030169 -1.816031 0.601092\n", "9 1.522968 0.440188 -1.763289 1.840091" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(np.random.randn(10, 4))\n", "df" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "[ 0 1 2 3\n", " 0 -0.634450 0.763724 0.710228 -0.694768\n", " 1 -0.142616 1.630704 1.029687 -1.008484\n", " 2 -0.344466 -0.222917 0.294177 -0.859483,\n", " 0 1 2 3\n", " 3 1.012883 -0.369916 -0.552784 1.356238\n", " 4 -0.167002 1.677076 -0.454767 1.183958\n", " 5 -0.528190 -0.912389 0.786753 1.043857\n", " 6 0.527898 -0.379471 1.537252 -1.050597,\n", " 0 1 2 3\n", " 7 -0.352473 -1.825571 0.186576 0.977988\n", " 8 0.991172 -0.030169 -1.816031 0.601092\n", " 9 1.522968 0.440188 -1.763289 1.840091]" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pieces = [df[:3], df[3:7], df[7:]]\n", "pieces" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>0</th>\n", " <th>1</th>\n", " <th>2</th>\n", " <th>3</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>-0.634450</td>\n", " <td>0.763724</td>\n", " <td>0.710228</td>\n", " <td>-0.694768</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>-0.142616</td>\n", " <td>1.630704</td>\n", " <td>1.029687</td>\n", " <td>-1.008484</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>-0.344466</td>\n", " <td>-0.222917</td>\n", " <td>0.294177</td>\n", " <td>-0.859483</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>1.012883</td>\n", " <td>-0.369916</td>\n", " <td>-0.552784</td>\n", " <td>1.356238</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>-0.167002</td>\n", " <td>1.677076</td>\n", " <td>-0.454767</td>\n", " <td>1.183958</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>-0.528190</td>\n", " <td>-0.912389</td>\n", " <td>0.786753</td>\n", " <td>1.043857</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>0.527898</td>\n", " <td>-0.379471</td>\n", " <td>1.537252</td>\n", " <td>-1.050597</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>-0.352473</td>\n", " <td>-1.825571</td>\n", " <td>0.186576</td>\n", " <td>0.977988</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>0.991172</td>\n", " <td>-0.030169</td>\n", " <td>-1.816031</td>\n", " <td>0.601092</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>1.522968</td>\n", " <td>0.440188</td>\n", " <td>-1.763289</td>\n", " <td>1.840091</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " 0 1 2 3\n", "0 -0.634450 0.763724 0.710228 -0.694768\n", "1 -0.142616 1.630704 1.029687 -1.008484\n", "2 -0.344466 -0.222917 0.294177 -0.859483\n", "3 1.012883 -0.369916 -0.552784 1.356238\n", "4 -0.167002 1.677076 -0.454767 1.183958\n", "5 -0.528190 -0.912389 0.786753 1.043857\n", "6 0.527898 -0.379471 1.537252 -1.050597\n", "7 -0.352473 -1.825571 0.186576 0.977988\n", "8 0.991172 -0.030169 -1.816031 0.601092\n", "9 1.522968 0.440188 -1.763289 1.840091" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.concat(pieces)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Join" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>key</th>\n", " <th>lval</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>foo</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>foo</td>\n", " <td>2</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " key lval\n", "0 foo 1\n", "1 foo 2" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "left = pd.DataFrame({'key': ['foo', 'foo'], 'lval': [1, 2]})\n", "left" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>key</th>\n", " <th>rval</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>foo</td>\n", " <td>4</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>foo</td>\n", " <td>5</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " key rval\n", "0 foo 4\n", "1 foo 5" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "right = pd.DataFrame({'key': ['foo', 'foo'], 'rval': [4, 5]})\n", "right" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>key</th>\n", " <th>lval</th>\n", " <th>rval</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>foo</td>\n", " <td>1</td>\n", " <td>4</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>foo</td>\n", " <td>1</td>\n", " <td>5</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>foo</td>\n", " <td>2</td>\n", " <td>4</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>foo</td>\n", " <td>2</td>\n", " <td>5</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " key lval rval\n", "0 foo 1 4\n", "1 foo 1 5\n", "2 foo 2 4\n", "3 foo 2 5" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.merge(left, right, on='key')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Append" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>-0.362774</td>\n", " <td>-0.573908</td>\n", " <td>0.098044</td>\n", " <td>1.992482</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>1.437667</td>\n", " <td>0.940580</td>\n", " <td>-0.355047</td>\n", " <td>-0.142454</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>-1.097556</td>\n", " <td>-0.593504</td>\n", " <td>-1.313146</td>\n", " <td>-0.490131</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>1.028989</td>\n", " <td>0.098031</td>\n", " <td>0.881277</td>\n", " <td>0.426499</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>-0.589829</td>\n", " <td>-0.331404</td>\n", " <td>0.692164</td>\n", " <td>0.456827</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>-0.158751</td>\n", " <td>-0.199149</td>\n", " <td>-0.395195</td>\n", " <td>0.882798</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>-0.021648</td>\n", " <td>0.764384</td>\n", " <td>0.408657</td>\n", " <td>-1.262260</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>-1.113406</td>\n", " <td>0.107256</td>\n", " <td>0.420511</td>\n", " <td>-0.968303</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D\n", "0 -0.362774 -0.573908 0.098044 1.992482\n", "1 1.437667 0.940580 -0.355047 -0.142454\n", "2 -1.097556 -0.593504 -1.313146 -0.490131\n", "3 1.028989 0.098031 0.881277 0.426499\n", "4 -0.589829 -0.331404 0.692164 0.456827\n", "5 -0.158751 -0.199149 -0.395195 0.882798\n", "6 -0.021648 0.764384 0.408657 -1.262260\n", "7 -1.113406 0.107256 0.420511 -0.968303" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'C', 'D'])\n", "df" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "A 1.028989\n", "B 0.098031\n", "C 0.881277\n", "D 0.426499\n", "Name: 3, dtype: float64" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = df.iloc[3]\n", "s" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>-0.362774</td>\n", " <td>-0.573908</td>\n", " <td>0.098044</td>\n", " <td>1.992482</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>1.437667</td>\n", " <td>0.940580</td>\n", " <td>-0.355047</td>\n", " <td>-0.142454</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>-1.097556</td>\n", " <td>-0.593504</td>\n", " <td>-1.313146</td>\n", " <td>-0.490131</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>1.028989</td>\n", " <td>0.098031</td>\n", " <td>0.881277</td>\n", " <td>0.426499</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>-0.589829</td>\n", " <td>-0.331404</td>\n", " <td>0.692164</td>\n", " <td>0.456827</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>-0.158751</td>\n", " <td>-0.199149</td>\n", " <td>-0.395195</td>\n", " <td>0.882798</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>-0.021648</td>\n", " <td>0.764384</td>\n", " <td>0.408657</td>\n", " <td>-1.262260</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>-1.113406</td>\n", " <td>0.107256</td>\n", " <td>0.420511</td>\n", " <td>-0.968303</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>1.028989</td>\n", " <td>0.098031</td>\n", " <td>0.881277</td>\n", " <td>0.426499</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D\n", "0 -0.362774 -0.573908 0.098044 1.992482\n", "1 1.437667 0.940580 -0.355047 -0.142454\n", "2 -1.097556 -0.593504 -1.313146 -0.490131\n", "3 1.028989 0.098031 0.881277 0.426499\n", "4 -0.589829 -0.331404 0.692164 0.456827\n", "5 -0.158751 -0.199149 -0.395195 0.882798\n", "6 -0.021648 0.764384 0.408657 -1.262260\n", "7 -1.113406 0.107256 0.420511 -0.968303\n", "8 1.028989 0.098031 0.881277 0.426499" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.append(s, ignore_index=True)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Agrupamientos\n", "\n", "Cuando hablamos de agrupar datos en `pandas` nos referimos a un proceso que inplica uno o más de los siguientes pasos:\n", "\n", "- Separar los datos en grupos basados en algún criterio\n", "- Aplicar una función para cada grupo de forma independiente\n", "- Combinar los resultados en una estructura de datos" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>A</th>\n", " <th>B</th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>foo</td>\n", " <td>one</td>\n", " <td>-1.976302</td>\n", " <td>-0.708903</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>bar</td>\n", " <td>one</td>\n", " <td>-1.709147</td>\n", " <td>-0.680945</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>foo</td>\n", " <td>two</td>\n", " <td>0.229683</td>\n", " <td>-0.613908</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>bar</td>\n", " <td>three</td>\n", " <td>0.917311</td>\n", " <td>-0.819363</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>foo</td>\n", " <td>two</td>\n", " <td>-1.245424</td>\n", " <td>-1.041576</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>bar</td>\n", " <td>two</td>\n", " <td>0.904258</td>\n", " <td>-1.698605</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>foo</td>\n", " <td>one</td>\n", " <td>-1.215414</td>\n", " <td>1.879422</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>foo</td>\n", " <td>three</td>\n", " <td>1.406019</td>\n", " <td>-0.603691</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " A B C D\n", "0 foo one -1.976302 -0.708903\n", "1 bar one -1.709147 -0.680945\n", "2 foo two 0.229683 -0.613908\n", "3 bar three 0.917311 -0.819363\n", "4 foo two -1.245424 -1.041576\n", "5 bar two 0.904258 -1.698605\n", "6 foo one -1.215414 1.879422\n", "7 foo three 1.406019 -0.603691" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',\n", " 'foo', 'bar', 'foo', 'foo'],\n", " 'B': ['one', 'one', 'two', 'three',\n", " 'two', 'two', 'one', 'three'],\n", " 'C': np.random.randn(8),\n", " 'D': np.random.randn(8)})\n", "df" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " <tr>\n", " <th>A</th>\n", " <th></th>\n", " <th></th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>bar</th>\n", " <td>0.112423</td>\n", " <td>-3.198913</td>\n", " </tr>\n", " <tr>\n", " <th>foo</th>\n", " <td>-2.801438</td>\n", " <td>-1.088656</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " C D\n", "A \n", "bar 0.112423 -3.198913\n", "foo -2.801438 -1.088656" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('A').sum()" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th></th>\n", " <th>C</th>\n", " <th>D</th>\n", " </tr>\n", " <tr>\n", " <th>A</th>\n", " <th>B</th>\n", " <th></th>\n", " <th></th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th rowspan=\"3\" valign=\"top\">bar</th>\n", " <th>one</th>\n", " <td>-1.709147</td>\n", " <td>-0.680945</td>\n", " </tr>\n", " <tr>\n", " <th>three</th>\n", " <td>0.917311</td>\n", " <td>-0.819363</td>\n", " </tr>\n", " <tr>\n", " <th>two</th>\n", " <td>0.904258</td>\n", " <td>-1.698605</td>\n", " </tr>\n", " <tr>\n", " <th rowspan=\"3\" valign=\"top\">foo</th>\n", " <th>one</th>\n", " <td>-3.191715</td>\n", " <td>1.170519</td>\n", " </tr>\n", " <tr>\n", " <th>three</th>\n", " <td>1.406019</td>\n", " <td>-0.603691</td>\n", " </tr>\n", " <tr>\n", " <th>two</th>\n", " <td>-1.015741</td>\n", " <td>-1.655484</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " C D\n", "A B \n", "bar one -1.709147 -0.680945\n", " three 0.917311 -0.819363\n", " two 0.904258 -1.698605\n", "foo one -3.191715 1.170519\n", " three 1.406019 -0.603691\n", " two -1.015741 -1.655484" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby(['A', 'B']).sum()" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.1" } }, "nbformat": 4, "nbformat_minor": 2}