{"id":2209,"date":"2020-07-11T16:43:30","date_gmt":"2020-07-11T21:43:30","guid":{"rendered":"https:\/\/naps.com.mx\/blog\/?p=2209"},"modified":"2020-07-11T16:43:30","modified_gmt":"2020-07-11T21:43:30","slug":"pandas-en-python-lo-que-debes-saber","status":"publish","type":"post","link":"https:\/\/naps.com.mx\/blog\/pandas-en-python-lo-que-debes-saber\/","title":{"rendered":"Pandas en Python: lo que debes saber para comenzar"},"content":{"rendered":"<p>Aprende a utilizar las funciones b\u00e1sicas de Pandas en Python: read_csv, shape, dtypes, describe, mean, info, rename, head, tabulate, tail, sample, index, loc, set_index, columns, drop, value_counts y qcut.<\/p>\n<p><!--more--><\/p>\n<p>\u00c9ste art\u00edculo est\u00e1 disponible explicado en video. B\u00fascalo aqu\u00ed:\u00a0<a href=\"https:\/\/youtu.be\/JdEJUzLcMus\" target=\"_blank\" rel=\"noopener\">https:\/\/youtu.be\/JdEJUzLcMus<\/a><\/p>\n<p><a href=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/07\/pandas-en-python-portada.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2210\" src=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/07\/pandas-en-python-portada.jpeg\" alt=\"pandas en python portada\" width=\"643\" height=\"482\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/07\/pandas-en-python-portada.jpeg 1024w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/07\/pandas-en-python-portada-300x225.jpeg 300w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/07\/pandas-en-python-portada-768x576.jpeg 768w\" sizes=\"auto, (max-width: 643px) 100vw, 643px\" \/><\/a><\/p>\n<h2>Instalaci\u00f3n de Pandas<\/h2>\n<p>Desde una ventana de terminal ejecuta el siguiente comando:<\/p>\n<pre class=\"lang:batch decode:true \">pip install pandas<\/pre>\n<h2>Importar la librer\u00eda de Pandas en Python<\/h2>\n<p>Procedemos a importar la librer\u00eda de Pandas en Python y opcionalmente tabulate si deseamos dar otra apariencia a la salida en consola.<\/p>\n<pre class=\"lang:python decode:true \">import pandas as pd\r\nfrom tabulate import tabulate<\/pre>\n<h2>Cargar el archivo de datos<\/h2>\n<p>Podemos utilizar un archivo de datos CSV para su manejo y an\u00e1lisis. Si deseas el que utilizamos de ejemplo, te dejo el enlace para su descarga:<\/p>\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1i5s30GCPTqg07N4JU7T2l0Uu6lY7LU_z\/view?usp=sharing\" target=\"_blank\" rel=\"noopener\">https:\/\/drive.google.com\/file\/d\/1i5s30GCPTqg07N4JU7T2l0Uu6lY7LU_z\/view?usp=sharing<\/a><\/p>\n<p>El archivo anterior contiene informaci\u00f3n sobre los votos obtenidos en las elecciones primarias de estados unidos. Para abrirlo, el c\u00f3digo es:<\/p>\n<pre class=\"lang:python decode:true \">df = pd.read_csv(\"votos.csv\")<\/pre>\n<h2>Dimensi\u00f3n del dataset (conjunto de datos)<\/h2>\n<p>Para ver el tama\u00f1o (filas y columnas) del conjunto de datos que estamos usando, escribimos:<\/p>\n<pre class=\"lang:python decode:true \">print (\"Dimensiones: \" , df.shape)<\/pre>\n<h2>Ver qu\u00e9 tipos de datos interpreta Pandas<\/h2>\n<p>Podemos ver las columnas de nuestro dataset y c\u00f3mo las interpret\u00f3 Pandas en Python, es decir, qu\u00e9 tipo de datos le asign\u00f3 a cada una.<\/p>\n<pre class=\"lang:python decode:true \">print (\"Tipos de datos\")\r\nprint (df.dtypes)<\/pre>\n<h2>Informaci\u00f3n estad\u00edstica de nuestro dataset<\/h2>\n<p>Podemos ver cu\u00e1ntos datos, la media, la desviaci\u00f3n est\u00e1ndar, el valor m\u00ednimo y m\u00e1ximo de nuestro dataset utilizando:<\/p>\n<pre class=\"lang:python decode:true \">print (\"Datos estad\u00edsticos\")\r\nprint (df.describe())<\/pre>\n<h2>Renombrar columnas en Pandas<\/h2>\n<p>Podemos renombrar las columnas que deseemos. Un ejemplo es:<\/p>\n<pre class=\"lang:python decode:true\">df = df.rename(columns={\r\n\t\"state_abbreviation\": \"ab\",\r\n\t\"fraction_votes\": \"%v\"\r\n\t})<\/pre>\n<h2>\u00a0Visualizar muestras en Pandas<\/h2>\n<p>En el c\u00f3digo a continuaci\u00f3n vemos c\u00f3mo mostrar las primeras filas de nuestro dataset, las \u00faltimas, y filas aleatorias. Esto nos servir\u00e1 para tener una muestra de datos para consultar. Tambi\u00e9n utilizamos tabulate para darle otra apariencia a la salida. La instrucci\u00f3n headers=\u00bbkeys\u00bb permite que se muestren como encabezados los nombres de las columnas.<\/p>\n<pre class=\"lang:python decode:true \">primeras = df.head(3)\r\nprint (\"Primeras filas\")\r\nprint (tabulate(primeras, headers='keys'))\r\n\r\nultimas = df.tail()\r\nprint (\"Ultimas filas\")\r\nprint (tabulate(ultimas, headers='keys'))\r\n\r\nmuestrax = df.sample(6)\r\nprint (\"Muestra aleatoria\")\r\nprint (tabulate(muestrax, headers='keys'))<\/pre>\n<h2>\u00cdndices<\/h2>\n<p>C\u00f3digo:<\/p>\n<pre class=\"lang:python decode:true \">print (df.index)\r\nprint (df.loc[0])\r\n\r\ndf2 = df.set_index(\"county\")\r\nprimeras2 = df2.head(2)\r\nprint (tabulate(primeras2, headers='keys'))\r\n\r\nprint (df2.index)\r\nprint (df2.loc[\"Los Angeles\"])<\/pre>\n<p>Aqu\u00ed visualizamos el \u00edndice con df.index. Vemos que obtiene un \u00edndice num\u00e9rico asignando a cada fila un valor consecutivo. Podemos utilizar ese valor para acceder a una fila. (df.loc[0]). Tambi\u00e9n es posible cambiar el \u00edndice de un dataframe. Lo conseguimos con set_index. \u00a0Al escribir set_index(county) le indicamos que queremos que county (condado) sea el nuevo \u00edndice. Si visualizamos \u00e9se \u00edndice (df2.index) nos devolver\u00e1 una lista de etiquetas con los nombres de los condados. Si ahora utilizamos loc[\u00abLos Angeles\u00bb] nos devolver\u00e1 todas las filas asociadas a \u00e9se \u00edndice.<\/p>\n<h2>Eliminar columnas<\/h2>\n<p>Hay dos formas de eliminar columnas y ambas utilizan el m\u00e9todo drop. La primera ser\u00eda:<\/p>\n<pre class=\"lang:python decode:true \">df = df.drop('%v',1) #0 filas, 1 columnas<\/pre>\n<p>Aqu\u00ed se elimina la fila y se reasigna el dataframe a \u00e9ste nuevo estado.<\/p>\n<p>Podemos utilizar:<\/p>\n<pre class=\"lang:python decode:true \">df.drop('%v',1,inplace=True)<\/pre>\n<p>Que no necesita la asignaci\u00f3n porque utiliza el par\u00e1metro inplace para indicarle que lo haga sobre s\u00ed mismo.<\/p>\n<h2>Contar valores<\/h2>\n<p>Si dese\u00e1ramos ver cu\u00e1ntas veces aparece un valor (por ejemplo, el nombre de un candidato) en el dataset, podemos utilizar <em>value_counts<\/em>.<\/p>\n<pre class=\"lang:python decode:true\">contador = df.candidate.value_counts(sort=True)\r\nprint (contador)\r\nprint (\"El mas com\u00fan es: \", str(contador[0]))\r\nprint (contador.keys()[0])<\/pre>\n<p>El c\u00f3digo anterior nos muestra una lista ordenada de mayor a menor de todos los candidatos, y a la derecha el valor de cu\u00e1ntas veces fue encontrado. Podemos acceder a un valor de esa lista con su valor de \u00edndice. Y si deseamos el nombre de la clave (en \u00e9ste caso el nombre del candidato) utilizamos el m\u00e9todo <em>keys<\/em> y le pasamos el valor del \u00edndice que queremos.<\/p>\n<h2>Qcut<\/h2>\n<p>\u00c9sta funci\u00f3n la podemos utilizar para &#8216;discretizar&#8217; una variable.\u00a0Por ejemplo, deseamos agregar una columna que contenga:<br \/>\n\u00abMuy pocos\u00bb, \u00abPocos\u00bb, \u00abConsiderable\u00bb, \u00abMuchos\u00bb<\/p>\n<p>De acuerdo a los votos obtenidos.<\/p>\n<p>Lo har\u00edamos de \u00e9sta forma:<\/p>\n<pre class=\"lang:ps decode:true \">clasificacion = [\"Muy pocos\", \"Pocos\", \"Considerable\", \"Muchos\"]\r\ndf[\"Clasif\"] = pd.qcut(df[\"votes\"], 4 , clasificacion)\r\nprint (tabulate(df.sample(5), headers='keys'))<\/pre>\n<p>Primero ponemos las etiquetas en una lista. Luego usamos el m\u00e9todo <em>qcut<\/em> para separar en 4 grupos la columna <em>votes<\/em>. Se asignar\u00e1 el valor correspondiente de la lista <em>clasificaci\u00f3n<\/em> a la columan <em>Clasif<\/em>.<\/p>\n<p>&nbsp;<\/p>\n<p>\u00c9ste art\u00edculo tambi\u00e9n est\u00e1 disponible en video. Te lo dejo a continuaci\u00f3n.<\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/JdEJUzLcMus\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aprende a utilizar las funciones b\u00e1sicas de Pandas en Python: read_csv, shape, dtypes, describe, mean, info, rename, head, tabulate, tail, sample, index, loc, set_index, columns, drop, value_counts y qcut.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"amp_status":"","footnotes":""},"categories":[301],"tags":[266,287,306],"class_list":["post-2209","post","type-post","status-publish","format-standard","hentry","category-curso-python-analisis-datos","tag-analisis-de-datos","tag-curso-python","tag-pandas-en-python"],"_links":{"self":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/2209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=2209"}],"version-history":[{"count":4,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/2209\/revisions"}],"predecessor-version":[{"id":2240,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/2209\/revisions\/2240"}],"wp:attachment":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=2209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=2209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=2209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}