informatica:programacion:python:modulos:pandas
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| informatica:programacion:python:modulos:pandas [2021/06/15 16:38] – tempwin | informatica:programacion:python:modulos:pandas [2021/11/08 16:11] (actual) – [Filtrar registros Excel] tempwin | ||
|---|---|---|---|
| Línea 5: | Línea 5: | ||
| * [[https:// | * [[https:// | ||
| + | Pandas está construido sobre NumPy. Sus estructuras de datos básicas son **Series** y **DataFrame** | ||
| ===== Instalación ===== | ===== Instalación ===== | ||
| Línea 22: | Línea 22: | ||
| <code python> | <code python> | ||
| import pandas as pd | import pandas as pd | ||
| + | from pandas import Series, DataFrame | ||
| </ | </ | ||
| Línea 30: | Línea 31: | ||
| ==== Series ==== | ==== Series ==== | ||
| - | Para crear una serie de panda a partir de una **lista**: | + | '' |
| + | |||
| + | Para crear una serie de pandas | ||
| <code python> | <code python> | ||
| - | import | + | import |
| helados = [" | helados = [" | ||
| Línea 40: | Línea 43: | ||
| # Resultado | # Resultado | ||
| + | |||
| # 0 Chocolate | # 0 Chocolate | ||
| # 1 | # 1 | ||
| Línea 49: | Línea 53: | ||
| En la parte izquierda está el índice. No tiene por qué ser índice numérico. | En la parte izquierda está el índice. No tiene por qué ser índice numérico. | ||
| - | Para crear una serie de panda a partir de un **diccionario**: | + | Para crear una serie de pandas |
| <code python> | <code python> | ||
| Línea 61: | Línea 65: | ||
| pd.Series(webster) | pd.Series(webster) | ||
| - | # Resultado | + | # Resultado: |
| # Plátano | # Plátano | ||
| # Púrpura | # Púrpura | ||
| Línea 105: | Línea 110: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| - | * '' | + | * '' |
| * '' | * '' | ||
| * '' | * '' | ||
| Línea 121: | Línea 126: | ||
| <WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
| - | '' | + | '' |
| </ | </ | ||
| Línea 134: | Línea 139: | ||
| # Resultado: | # Resultado: | ||
| + | |||
| # >>> | # >>> | ||
| # 3 0.3 | # 3 0.3 | ||
| Línea 156: | Línea 162: | ||
| # Resultado: | # Resultado: | ||
| + | |||
| # True | # True | ||
| </ | </ | ||
| Línea 227: | Línea 234: | ||
| ===== DataFrame ===== | ===== DataFrame ===== | ||
| - | Las series son estructuras de una dimensión (una columna de datos). Un DataFrame es una estructura bidimensional, | + | Las series son estructuras de una dimensión (una columna de datos). Un '' |
| {{: | {{: | ||
| Línea 260: | Línea 267: | ||
| Si aparece '' | Si aparece '' | ||
| </ | </ | ||
| + | |||
| + | Ejemplo de un DataFrame creado a partir de un diccionario: | ||
| + | |||
| + | <code python> | ||
| + | purchases = [{' | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | df = DataFrame(purchases) | ||
| + | |||
| + | df | ||
| + | |||
| + | # Resultado: | ||
| + | |||
| + | # | ||
| + | # 0 Bob Oranges | ||
| + | # 1 Bob | ||
| + | # 2 Bob | ||
| + | # 3 Alice Oranges | ||
| + | # 4 Alice NaN | ||
| + | </ | ||
| ==== Métodos ==== | ==== Métodos ==== | ||
| Línea 277: | Línea 306: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | La mayoría de las funciones de DataFrames devuelven un objeto **nuevo** de pandas. Si queremos realizar una operación y que se modifique el propio objeto, debemos pasarle el argumento '' | ||
| + | </ | ||
| + | |||
| < | < | ||
| Línea 373: | Línea 407: | ||
| <code python> | <code python> | ||
| # Eliminar la fila que ocupa la posición 10: | # Eliminar la fila que ocupa la posición 10: | ||
| - | sales.drop(10) | + | new_sales = sales.drop(10) |
| </ | </ | ||
| + | Si queremos que se modifique el DataFrame en lugar de hacer una copia de él: | ||
| + | |||
| + | <code python> | ||
| + | # Eliminar la fila que ocupa la posición 10: | ||
| + | sales.drop(10, | ||
| + | </ | ||
| ==== Eliminar columnas ==== | ==== Eliminar columnas ==== | ||
| Línea 384: | Línea 424: | ||
| sales.drop(10, | sales.drop(10, | ||
| </ | </ | ||
| + | |||
| + | <WRAP center round tip 60%> | ||
| + | También podemos indicar el nombre de la columna en lugar de la posición: '' | ||
| + | </ | ||
| También podemos borrarla utilizando la función '' | También podemos borrarla utilizando la función '' | ||
| Línea 516: | Línea 560: | ||
| <code python> | <code python> | ||
| - | sales.sort_values(" | + | sales.sort_values(by=" |
| </ | </ | ||
| Línea 1185: | Línea 1229: | ||
| output.to_excel(" | output.to_excel(" | ||
| </ | </ | ||
| + | |||
| + | ==== Titanic ==== | ||
| + | |||
| + | Partiendo de un CSV con información sobre pasajeros: | ||
| + | |||
| + | <code python> | ||
| + | import pandas as pd | ||
| + | |||
| + | fname = ' | ||
| + | |||
| + | data = pd.read_csv(fname) | ||
| + | </ | ||
| + | |||
| + | Ver si hay campos vacíos: | ||
| + | |||
| + | <code python> | ||
| + | data.count() | ||
| + | </ | ||
| + | |||
| + | Valores mínimos y máximos de edad: | ||
| + | |||
| + | <code python> | ||
| + | data[' | ||
| + | </ | ||
| + | |||
| + | Distribución de valores de supervivientes: | ||
| + | |||
| + | <code python> | ||
| + | data[' | ||
| + | </ | ||
| + | |||
| + | En términos porcentuales: | ||
| + | |||
| + | <code python> | ||
| + | data[' | ||
| + | </ | ||
| + | |||
| + | Distribución por sexo: | ||
| + | |||
| + | <code python> | ||
| + | data[' | ||
| + | </ | ||
| + | |||
| + | Distribución por tipo de pasajero: | ||
| + | |||
| + | <code python> | ||
| + | data[' | ||
| + | </ | ||
| + | |||
| + | Representación gráfica (en notebook de Jupyter): | ||
| + | |||
| + | <code python> | ||
| + | %matplotlib inline | ||
| + | |||
| + | alpha_color = 0.5 | ||
| + | |||
| + | # Distribución se supervivientes | ||
| + | data[' | ||
| + | </ | ||
| + | |||
| + | Distribución gráfica por sexo: | ||
| + | |||
| + | <code python> | ||
| + | data[' | ||
| + | color=[' | ||
| + | alpha=alpha_color) | ||
| + | </ | ||
| + | |||
| + | Distribución gráfica por clase de pasajeros: | ||
| + | |||
| + | <code python> | ||
| + | data[' | ||
| + | alpha=alpha_color) | ||
| + | </ | ||
| + | |||
| + | Comparando gráficamente supervivientes con edades: | ||
| + | |||
| + | <code python> | ||
| + | data.plot(kind=' | ||
| + | </ | ||
| + | |||
| + | Comparando gráficamente supervivientes con tramos de edades: | ||
| + | |||
| + | <code python> | ||
| + | bins = [0, 10, 20, 30, 40, 50, 60, 70, 80] | ||
| + | |||
| + | data[' | ||
| + | |||
| + | data[data[' | ||
| + | </ | ||
| + | |||
| + | Gráficamente los que no sobrevivieron: | ||
| + | |||
| + | <code python> | ||
| + | data[data[' | ||
| + | </ | ||
| + | |||
| + | <code python> | ||
| + | data[' | ||
| + | </ | ||
| + | |||
| + | Pasajeros de primera clase que sobrevivieron: | ||
| + | |||
| + | <code python> | ||
| + | data[data[' | ||
| + | </ | ||
| + | |||
| + | Pasajeros de tercera clase que sobrevivieron: | ||
| + | |||
| + | <code python> | ||
| + | data[data[' | ||
| + | </ | ||
| + | |||
| + | Pasajeros de género masculino que sobrevivieron: | ||
| + | |||
| + | <code python> | ||
| + | data[data[' | ||
| + | </ | ||
| + | |||
| + | Pasajeros de género femenino que sobrevivieron: | ||
| + | |||
| + | <code python> | ||
| + | data[data[' | ||
| + | </ | ||
| + | |||
| + | Pasajeros de género masculino y primera clase que sobrevivieron: | ||
| + | |||
| + | <code python> | ||
| + | data[(data[' | ||
| + | </ | ||
| + | |||
| + | Pasajeros de género masculino y tercera clase que sobrevivieron: | ||
| + | |||
| + | <code python> | ||
| + | data[(data[' | ||
| + | </ | ||
| + | |||
| + | Pasajeros de género femenino y primera clase que sobrevivieron: | ||
| + | |||
| + | <code python> | ||
| + | data[(data[' | ||
| + | </ | ||
| + | |||
| + | Pasajeros de género femenino y tercera clase que sobrevivieron: | ||
| + | |||
| + | <code python> | ||
| + | data[(data[' | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Recursos ===== | ||
| + | |||
| + | * https:// | ||
informatica/programacion/python/modulos/pandas.1623767919.txt.gz · Última modificación: por tempwin
