Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:modulos:pandas

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:python:modulos:pandas [2021/11/05 14:23] – [DataFrame] tempwininformatica:programacion:python:modulos:pandas [2021/11/08 16:11] (actual) – [Filtrar registros Excel] tempwin
Línea 43: Línea 43:
  
 # Resultado # Resultado
 +
 # 0    Chocolate # 0    Chocolate
 # 1     Vainilla # 1     Vainilla
Línea 64: Línea 65:
 pd.Series(webster) pd.Series(webster)
  
-# Resultado+# Resultado
 # Plátano    Fruta deliciosa # Plátano    Fruta deliciosa
 # Púrpura           Un color # Púrpura           Un color
Línea 108: Línea 110:
   * ''*.sum()'': suma los elementos de una serie   * ''*.sum()'': suma los elementos de una serie
   * ''*.prod()'': multiplicación de todos los elementos de la serie.   * ''*.prod()'': multiplicación de todos los elementos de la serie.
-  * ''*.mean()'': devuelve la media de los elementos de la serie.+  * ''*.mean()'': devuelve la media aritmética de los elementos de la serie.
   * ''*.head()'': devuelve, por defecto, los primeros 5 elementos de la serie. Entre paréntesis se puede indicar el número de elementos a devolver.   * ''*.head()'': devuelve, por defecto, los primeros 5 elementos de la serie. Entre paréntesis se puede indicar el número de elementos a devolver.
   * ''*.tail()'': devuelve, por defecto, los últimos 5 elementos de la serie. Entre paréntesis se puede indicar el número de elementos a devolver.   * ''*.tail()'': devuelve, por defecto, los últimos 5 elementos de la serie. Entre paréntesis se puede indicar el número de elementos a devolver.
Línea 137: Línea 139:
  
 # Resultado: # Resultado:
 +
 # >>> numeros # >>> numeros
 # 3     0.3 # 3     0.3
Línea 159: Línea 162:
  
 # Resultado: # Resultado:
 +
 # True # True
 </code> </code>
Línea 277: Línea 281:
  
 # Resultado: # Resultado:
-  Customer     Item  Quantity  Unit price + 
-0      Bob  Oranges                   2 +  Customer     Item  Quantity  Unit price 
-1      Bob   Apples                   1 +0      Bob  Oranges                   2 
-2      Bob     Milk                   4 +1      Bob   Apples                   1 
-3    Alice  Oranges                   2 +2      Bob     Milk                   4 
-4    Alice      NaN                   3+3    Alice  Oranges                   2 
 +4    Alice      NaN                   3
 </code> </code>
  
Línea 301: Línea 306:
   * ''*.describe()'': realiza varias operaciones a la vez.   * ''*.describe()'': realiza varias operaciones a la vez.
   * ''*.nunique()'': devuelve los valores únicos de una columna.   * ''*.nunique()'': devuelve los valores únicos de una columna.
 +
 +<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 ''inplace=True'')
 +</WRAP>
 +
  
 <code> <code>
Línea 397: 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)
 </code> </code>
  
 +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, inplace=True)
 +</code>
 ==== Eliminar columnas ==== ==== Eliminar columnas ====
  
Línea 544: Línea 560:
  
 <code python> <code python>
-sales.sort_values("Salary")+sales.sort_values(by="Salary")
 </code> </code>
  
Línea 1213: Línea 1229:
 output.to_excel("demo_mod.xlsx", index=False) output.to_excel("demo_mod.xlsx", index=False)
 </code> </code>
 +
 +==== Titanic ====
 +
 +Partiendo de un CSV con información sobre pasajeros:
 +
 +<code python>
 +import pandas as pd
 +
 +fname = '~/data/titanic/train.csv'
 +
 +data = pd.read_csv(fname)
 +</code>
 +
 +Ver si hay campos vacíos:
 +
 +<code python>
 +data.count()
 +</code>
 +
 +Valores mínimos y máximos de edad:
 +
 +<code python>
 +data['Age'].min(), data['Age'].max()
 +</code>
 +
 +Distribución de valores de supervivientes:
 +
 +<code python>
 +data['Survived'].value_counts()
 +</code>
 +
 +En términos porcentuales:
 +
 +<code python>
 +data['Survived'].value_counts() * 100 / len(data)
 +</code>
 +
 +Distribución por sexo:
 +
 +<code python>
 +data['Sex'].value_counts()
 +</code>
 +
 +Distribución por tipo de pasajero:
 +
 +<code python>
 +data['Pclass'].value_counts()
 +</code>
 +
 +Representación gráfica (en notebook de Jupyter):
 +
 +<code python>
 +%matplotlib inline
 +
 +alpha_color = 0.5
 +
 +# Distribución se supervivientes
 +data['Survived'].value_counts().plot(kind='bar')
 +</code>
 +
 +Distribución gráfica por sexo:
 +
 +<code python>
 +data['Sex'].value_counts().plot(kind='bar',
 +                                color=['b', 'r'],
 +                                alpha=alpha_color)
 +</code>
 +
 +Distribución gráfica por clase de pasajeros:
 +
 +<code python>
 +data['Pclass'].value_counts().sort_index().plot(kind='bar',
 +                                                alpha=alpha_color)
 +</code>
 +
 +Comparando gráficamente supervivientes con edades:
 +
 +<code python>
 +data.plot(kind='scatter', x='Survived', y='Age')
 +</code>
 +
 +Comparando gráficamente supervivientes con tramos de edades:
 +
 +<code python>
 +bins = [0, 10, 20, 30, 40, 50, 60, 70, 80]
 +
 +data['AgeBin'] = pd.cut(data['Age'], bins)
 +
 +data[data['Survived'] == 1]['AgeBin'].value_counts().sort_index().plot(kind='bar')
 +</code>
 +
 +Gráficamente los que no sobrevivieron:
 +
 +<code python>
 +data[data['Survived'] == 0]['AgeBin'].value_counts().sort_index().plot(kind='bar')
 +</code>
 +
 +<code python>
 +data['AgeBin'].value_counts().sort_index().plot(kind='bar')
 +</code>
 +
 +Pasajeros de primera clase que sobrevivieron:
 +
 +<code python>
 +data[data['Pclass'] == 1]['Survived'].value_counts().plot(kind='bar')
 +</code>
 +
 +Pasajeros de tercera clase que sobrevivieron:
 +
 +<code python>
 +data[data['Pclass'] == 3]['Survived'].value_counts().plot(kind='bar')
 +</code>
 +
 +Pasajeros de género masculino que sobrevivieron:
 +
 +<code python>
 +data[data['Sex'] == 'male']['Survived'].value_counts().plot(kind='bar')
 +</code>
 +
 +Pasajeros de género femenino que sobrevivieron:
 +
 +<code python>
 +data[data['Sex'] == 'female']['Survived'].value_counts().plot(kind='bar')
 +</code>
 +
 +Pasajeros de género masculino y primera clase que sobrevivieron:
 +
 +<code python>
 +data[(data['Sex'] == 'male') & (data['Pclass'] == 1)]['Survived'].value_counts().plot(kind='bar')
 +</code>
 +
 +Pasajeros de género masculino y tercera clase que sobrevivieron:
 +
 +<code python>
 +data[(data['Sex'] == 'male') & (data['Pclass'] == 3)]['Survived'].value_counts().plot(kind='bar')
 +</code>
 +
 +Pasajeros de género femenino y primera clase que sobrevivieron:
 +
 +<code python>
 +data[(data['Sex'] == 'female') & (data['Pclass'] == 1)]['Survived'].value_counts().plot(kind='bar')
 +</code>
 +
 +Pasajeros de género femenino y tercera clase que sobrevivieron:
 +
 +<code python>
 +data[(data['Sex'] == 'female') & (data['Pclass'] == 3)]['Survived'].value_counts().plot(kind='bar')
 +</code>
 +
 +
 +===== Recursos =====
 +
 +  * https://github.com/bonzanini/VideoCourse-DataAnalysisPython
informatica/programacion/python/modulos/pandas.1636118637.txt.gz · Última modificación: por tempwin