Tutorial para principiantes sobre la biblioteca Panda de Python

T

Pandas es un paquete Python de código abierto que proporciona numerosas herramientas para el análisis de datos. El paquete viene con varias estructuras de datos que se pueden usar para muchas tareas diferentes de manipulación de datos. También tiene una variedad de métodos que se pueden invocar para el análisis de datos, lo que resulta útil cuando se trabaja en ciencia de datos y problemas de Machine Learning en Python.

Ventajas de usar panda

Las siguientes son algunas de las ventajas de la biblioteca Pandas :

  • Se puede presentar datos de una manera que es adecuado para el análisis de datos a través de sus Seriesy DataFrameestructuras de datos.
  • El paquete contiene varios métodos para un filtrado de datos conveniente.
  • Pandas tiene una variedad de utilidades para realizar operaciones de entrada / salida de manera transparente. Puede leer datos de una variedad de formatos como CSV, TSV, MS Excel, etc.

Instalación de Panda

La distribución estándar de Python no viene con el módulo Pandas. Para utilizar este módulo de terceros, debe instalarlo.

Lo bueno de Python es que viene con una herramienta llamada pip que puede usarse para la instalación de Pandas. Para realizar la instalación, debe ejecutar el siguiente comando:

$ pip install pandas

Si ha instalado Anaconda en su sistema, simplemente ejecute el siguiente comando para instalar Pandas:

$ conda install pandas

Se recomienda encarecidamente que instale la última versión del paquete Pandas. Sin embargo, si desea instalar una versión anterior, puede especificarla ejecutando el conda installcomando de la siguiente manera:

$ conda install pandas=0.23.4

Estructuras de datos de Panda

Pandas tiene dos estructuras de datos principales para el almacenamiento de datos:

  • Serie
  • Marco de datos

Serie

Una serie es similar a una matriz unidimensional. Puede almacenar datos de cualquier tipo. Los valores de Pandas Seriesson mutables, pero el tamaño de a Serieses inmutable y no se puede cambiar.

Al primer elemento de la serie se le asigna el índice 0, mientras que el último elemento está en el índice N-1, donde Nes el número total de elementos de la serie.

Para crear un Pandas Series, primero debemos importar el paquete Pandas a través del importcomando de Python :

import pandas as pd

Para crear Series, invocamos el pd.Series()método y pasamos una matriz, como se muestra a continuación:

series1 = pd.Series([1,2,3,4])

A continuación, ejecute la printdeclaración para mostrar el contenido de Series:

print(series1)

Salida:

0    1
1    2
2    3
3    4
dtype: int64

Puedes ver que tenemos dos columnas, la primera con números comenzando por el índice 0y la segunda con los elementos que se agregaron a la serie.

La primera columna denota los índices de los elementos.

Sin embargo, es posible que obtenga un error cuando intente mostrar el Series. La principal causa de este error es que Pandas busca la cantidad de información para mostrar, por lo tanto, debe proporcionar la información de salida del sistema.

Puede solucionar el error ejecutando el código de la siguiente manera:

import pandas as pd
import sys

sys.__stdout__ = sys.stdout

series1 = pd.Series([1,2,3,4])
print(series1)

A Seriestambién puede ser creado a partir de un numpy matriz. Creemos una matriz numpy y luego conviértala en Pandas Series:

import pandas as pd
import numpy as np
import sys

sys.__stdout__ = sys.stdout

fruits = np.array(['apple','orange','mango','pear'])
series2 = pd.Series(fruits)
print(series2)

Salida:

0     apple
1    orange
2     mango
3      pear
dtype: object

Comenzamos importando las bibliotecas necesarias, incluido numpy. A continuación, llamamos a la array()función de numpy para crear una variedad de frutas. Luego usamos la Series()función Pandas y le pasamos la matriz que queremos convertir en una serie. Finalmente, llamamos a la print()función para mostrar el Series.

Marco de datos

El DataFrame de Pandas se puede ver como una tabla. Organiza los datos en filas y columnas, lo que los convierte en una estructura de datos bidimensional. Potencialmente, las columnas son de un tipo diferente y el tamaño del DataFrame es mutable y, por lo tanto, puede modificarse.

Para crear un DataFrame, puede optar por empezar desde cero o convertir otras estructuras de datos como matrices Numpy en un DataFrame. Así es como puede crear un DataFrame desde cero:

import pandas as pd
df = pd.DataFrame({
    "Column1": [1, 4, 8, 7, 9],
    "Column2": ['a', 'column', 'with', 'a', 'string'],
    "Column3": [1.23, 23.5, 45.6, 32.1234, 89.453],
    "Column4": [True, False, True, False, True]
})
print(df)

Salida:

   Column1 Column2  Column3  Column4
0        1       a   1.2300     True
1        4  column  23.5000    False
2        8    with  45.6000     True
3        7       a  32.1234    False
4        9  string  89.4530     True

En este ejemplo, hemos creado un DataFrame llamado df. La primera columna del DataFrame tiene valores enteros. La segunda columna tiene una cadena, la tercera columna tiene valores de punto flotante, mientras que la cuarta columna tiene valores booleanos.

La declaración print(df)nos mostrará el contenido del DataFrame a través de la consola, lo que nos permitirá inspeccionar y verificar su contenido.

Sin embargo, al mostrar el DataFrame, es posible que haya notado que hay una columna adicional al inicio de la tabla, con sus elementos comenzando en 0. Esta columna se crea automáticamente y marca los índices de las filas.

Para crear un DataFrame, debemos invocar el pd.DataFrame()método como se muestra en el ejemplo anterior.

Es posible para nosotros crear un DataFrame a partir de una lista o incluso un conjunto de listas. Solo tenemos que llamar al pd.DataFrame()método y luego pasarle la variable list como único argumento.

Considere el siguiente ejemplo:

import pandas as pd
mylist = [4, 8, 12, 16, 20]
df = pd.DataFrame(mylist)
print(df)

Salida:

  0
0   4
1   8
2  12
3  16
4  20

En este ejemplo creamos una lista nombrada mylistcon una secuencia de 5 enteros. Luego llamamos al DataFrame()método y le pasamos el nombre de la lista como argumento. Aquí es donde ocurrió la conversión de la lista a un DataFrame.

Luego imprimimos el contenido del DataFrame. El DataFrame tiene una columna predeterminada que muestra índices, con el primer elemento en el índice 0 y el último en el índice N-1, donde N es el número total de elementos en el DataFrame.

Aquí hay otro ejemplo:

import pandas as pd
items = [['Phone', 2000], ['TV', 1500], ['Radio', 800]]
df = pd.DataFrame(items, columns=['Item', 'Price'], dtype=float)
print(df)

Salida:

  Item   Price
0  Phone  2000.0
1     TV  1500.0
2  Radio   800.0

Aquí hemos creado una lista nombrada itemscon un conjunto de 3 elementos. Para cada artículo, tenemos un nombre y un precio. Luego, la lista se pasa al DataFrame()método para convertirla en un DataFrameobjeto.

En este ejemplo, también se han especificado los nombres de las columnas para el DataFrame. Los valores numéricos también se han convertido en valores de punto flotante desde que especificamos el dtypeargumento como “flotante”.

Para obtener un resumen de los datos de este elemento, podemos llamar a la describe()función en la variable DataFrame, es decir df:

df.describe()

Salida:

      Price
count     3.000000
mean   1433.333333
std     602.771377
min     800.000000
25%    1150.000000
50%    1500.000000
75%    1750.000000
max    2000.000000

La describe()función devuelve algunos detalles estadísticos comunes de los datos, incluida la media, la desviación estándar, el elemento mínimo, el elemento máximo y algunos otros detalles. Esta es una excelente manera de obtener una instantánea de los datos con los que está trabajando si el conjunto de datos es relativamente desconocido para usted. También podría ser una buena forma de comparar rápidamente dos conjuntos de datos separados de datos similares.

Importación de datos

A menudo, necesitará utilizar Pandas para analizar los datos almacenados en un archivo de Excel o en un archivo CSV. Esto requiere que abra e importe los datos de dichas fuentes a Pandas.

Afortunadamente, Pandas nos proporciona numerosos métodos que podemos usar para cargar los datos de dichas fuentes en un Pandas DataFrame.

Importación de datos CSV

Un archivo CSV, que significa valor separado por comas, es simplemente un archivo de texto con valores separados por una coma (,). Dado que este es un estándar muy conocido y de uso frecuente, podemos usar Pandas para leer archivos CSV en su totalidad o en parte.

Para este ejemplo, crearemos un archivo CSV llamado cars.csv. El archivo debe tener los siguientes datos:

Number,Type,Capacity
SSD,Premio,1800
KCN,Fielder,1500
USG,Benz,2200
TCH,BMW,2000
KBQ,Range,3500
TBD,Premio,1800
KCP,Benz,2200
USD,Fielder,1500
UGB,BMW,2000
TBG,Range,3200

Puede copiar los datos y pegarlos en un editor de texto como el Bloc de notas, y luego guardarlos con el nombre cars.csv en el mismo directorio que sus scripts de Python.

Pandas nos proporciona un método denominado read_csvque se puede utilizar para leer valores CSV en un Pandas DataFrame. El método toma la ruta al archivo CSV como argumento.

El siguiente código es lo que usaremos para ayudarnos a leer el archivo cars.csv:

import pandas as pd
data = pd.read_csv('cars.csv')
print(data)

Salida:

 Number     Type  Capacity
0    SSD   Premio      1800
1    KCN  Fielder      1500
2    USG     Benz      2200
3    TCH      BMW      2000
4    KBQ    Range      3500
5    TBD   Premio      1800
6    KCP     Benz      2200
7    USD  Fielder      1500
8    UGB      BMW      2000
9    TBG    Range      3200

En mi caso, guardé el archivo CSV en el mismo directorio que el script de Python, por lo que simplemente pasé el nombre del archivo al read_csvmétodo y supo verificar el directorio de trabajo actual.

Si ha guardado su archivo en una ruta diferente, asegúrese de pasar la ruta correcta como argumento del método. Puede ser una ruta relativa, como “../cars.csv”, o una ruta absoluta como “/Users/nicholas/data/cars.csv”.

En algunos casos, puede tener miles de filas en su conjunto de datos. En tal caso, sería más útil imprimir solo las primeras filas en la consola en lugar de imprimir todas las filas.

Esto se puede hacer llamando al head()método en el DataFrame como se muestra a continuación:

data.head()

Para nuestros datos anteriores, el comando anterior devuelve solo las primeras 5 filas del conjunto de datos, lo que le permite inspeccionar una pequeña muestra de los datos. Esto se muestra a continuación:

Salida:

  Number     Type  Capacity
0    SSD   Premio      1800
1    KCN  Fielder      1500
2    USG     Benz      2200
3    TCH      BMW      2000
4    KBQ    Range      3500

El loc()método es una buena utilidad que nos ayuda a leer solo ciertas filas de una columna específica en el conjunto de datos, como se demuestra en el siguiente ejemplo:

import pandas as pd
data = pd.read_csv('cars.csv')

print (data.loc[[0, 4, 7], ['Type']])

Salida:

 Type
0   Premio
4    Range
7  Fielder

Aquí usamos el loc()método para leer solo los elementos en los índices 0, 4 y 7 de la columna Tipo.

A veces, es posible que Wwe solo necesite leer ciertas columnas y no otras. Esto también se puede hacer usando el loc()método, que se muestra a continuación en este ejemplo:

import pandas as pd
data = pd.read_csv('cars.csv')

print (data.loc[:, ['Type', 'Capacity']])

Salida:

Type  Capacity
0   Premio      1800
1  Fielder      1500
2     Benz      2200
3      BMW      2000
4    Range      3500
5   Premio      1800
6     Benz      2200
7  Fielder      1500
8      BMW      2000
9    Range      3200

Aquí usamos el loc()método para leer todas las filas (la :parte) de solo dos de nuestras columnas del conjunto de datos, es decir, las columnas Tipo y Capacidad, como se especifica en el argumento.

Importación de datos de Excel

Además del read_csvmétodo, Pandas también tiene la read_excelfunción que se puede usar para leer datos de Excel en un Pandas DataFrame. En este ejemplo, usaremos un archivo de Excel llamado Workers.xlsx con detalles de los trabajadores de una empresa.

El siguiente código se puede usar para cargar el contenido del archivo de Excel en un Pandas DataFrame:

import pandas as pd
data = pd.read_excel('workers.xlsx')
print (data)

Salida:

  ID    Name      Dept  Salary
0   1    John       ICT    3000
1   2    Kate   Finance    2500
2   3  Joseph        HR    3500
3   4  George       ICT    2500
4   5    Lucy     Legal    3200
5   6   David   Library    2000
6   7   James        HR    2000
7   8   Alice  Security    1500
8   9   Bosco   Kitchen    1000
9  10    Mike       ICT    3300

Después de llamar a la read_excelfunción, pasamos el nombre del archivo como argumento, que read_excelsolía abrir / cargar el archivo y luego analizar los datos. La print()función luego nos ayuda a mostrar el contenido del DataFrame, como lo hemos hecho en ejemplos anteriores.

Y al igual que con nuestro ejemplo de CSV, esta función se puede combinar con el loc()método para ayudarnos a leer filas y columnas específicas del archivo de Excel.

Por ejemplo:

import pandas as pd
data = pd.read_excel('workers.xlsx')

print (data.loc[[1,4,7],['Name','Salary']])

Salida:

Name  Salary
1   Kate    2500
4   Lucy    3200
7  Alice    1500

Hemos utilizado el loc()método para recuperar los valores de Nombre y Salario de los elementos en los índices 1, 4 y 7.

Pandas también nos permite leer desde dos hojas de Excel simultáneamente. Supongamos que nuestros datos anteriores están en Sheet1 y tenemos otros datos en Sheet2 del mismo archivo de Excel. El siguiente código muestra cómo podemos leer de las dos hojas simultáneamente:

import pandas as pd
with pd.ExcelFile('workers.xlsx') as x:
    s1 = pd.read_excel(x, 'Sheet1')
    s2 = pd.read_excel(x, 'Sheet2')

print("Sheet 1:")
print (s1)
print("")
print("Sheet 2:")
print (s2)

Salida:

Sheet 1:
   ID    Name      Dept  Salary
0   1    John       ICT    3000
1   2    Kate   Finance    2500
2   3  Joseph        HR    3500
3   4  George       ICT    2500
4   5    Lucy     Legal    3200
5   6   David   Library    2000
6   7   James        HR    2000
7   8   Alice  Security    1500
8   9   Bosco   Kitchen    1000
9  10    Mike       ICT    3300

Sheet 2:
   ID    Name  Age  Retire
0   1    John   55    2023
1   2    Kate   45    2033
2   3  Joseph   55    2023
3   4  George   35    2043
4   5    Lucy   42    2036
5   6   David   50    2028
6   7   James   30    2048
7   8   Alice   24    2054
8   9   Bosco   33    2045
9  10    Mike   35    2043

Lo que pasó es que combinamos la read_excel()función con la ExcelFileclase contenedora. La variable xse creó al llamar a la clase contenedora y la withpalabra clave Python, que usamos para abrir temporalmente el archivo.

A partir de la ExcelFilevariable x, hemos creado dos variables más, s1y s2para representar los contenidos que se leyeron de las diferentes hojas.

Luego usamos printdeclaraciones para ver el contenido de las dos hojas en la consola. La printdeclaración en blanco , print("")solo se utiliza para imprimir una línea en blanco entre los datos de nuestra hoja.

Negociación de datos

La manipulación de datos es el proceso de procesamiento de datos para prepararlos para su uso en el siguiente paso. Los ejemplos de procesos de disputa de datos incluyen fusión, agrupación y concatenación. Este tipo de manipulación a menudo se necesita en la ciencia de datos para que sus datos estén en una forma que funcione bien con cualquier análisis o algoritmo que vaya a realizar.

Fusión

La biblioteca de Pandas nos permite unir objetos DataFrame a través de la merge()función. Creemos dos DataFrames y demostremos cómo fusionarlos.

Esta es la primera trama de datos, df1:

import pandas as pd

d = {
    'subject_id': ['1', '2', '3', '4', '5'],
    'student_name': ['John', 'Emily', 'Kate', 'Joseph', 'Dennis']
}
df1 = pd.DataFrame(d, columns=['subject_id', 'student_name'])
print(df1)

Salida:

subject_id student_name
0          1         John
1          2        Emily
2          3         Kate
3          4       Joseph
4          5       Dennis

Aquí está el código para crear el segundo DataFrame df2:

import pandas as pd

data = {
    'subject_id': ['4', '5', '6', '7', '8'],
    'student_name': ['Brian', 'William', 'Lilian', 'Grace', 'Caleb']
}
df2 = pd.DataFrame(data, columns=['subject_id', 'student_name'])
print(df2)

Salida:

subject_id student_name
0          4        Brian
1          5      William
2          6       Lilian
3          7        Grace
4          8        Caleb

Ahora necesitamos fusionar los dos DataFrames, es decir, df1y a lo df2largo de los valores de subject_id. Simplemente llamamos a la merge()función como se muestra a continuación:

pd.merge(df1, df2, on='subject_id')

Salida:

subject_id student_name_x student_name_y
0          4         Joseph          Brian
1          5         Dennis        William

Lo que hace la fusión es que devuelve las filas de ambos DataFrames con el mismo valor para la columna que está utilizando para la fusión.

Hay muchas otras formas de usar la pd.mergefunción que no cubriremos en este artículo, como qué datos deben combinarse, cómo deben combinarse, si deben ordenarse, etc. Para obtener más información, consulte el documento oficial. documentación sobre la función de combinación .

Agrupamiento

Agrupar es el proceso de colocar datos en varias categorías. Aquí hay un ejemplo simple:

# import pandas library
import pandas as pd

raw = {
    'Name': ['John', 'John', 'Grace', 'Grace', 'Benjamin', 'Benjamin', 'Benjamin',
        'Benjamin', 'John', 'Alex', 'Alex', 'Alex'],
    'Position': [2, 1, 1, 4, 2, 4, 3, 1, 3, 2, 4, 3],
    'Year': [2009, 2010, 2009, 2010, 2010, 2010, 2011, 2012, 2011, 2013, 2013, 2012],
    'Marks':[408, 398, 422, 376, 401, 380, 396, 388, 356, 402, 368, 378]
}
df = pd.DataFrame(raw)

group = df.groupby('Year')
print(group.get_group(2010))

Salida:

   Marks      Name  Position  Year
1    398      John         1  2010
3    376     Grace         4  2010
5    380  Benjamin         4  2010

En este sencillo ejemplo, hemos agrupado los datos por año, que en este caso fue 2010. También podríamos haberlos agrupado por cualquiera de las otras columnas, como “Nombre”, “Posición”, etc.

Concatenación

La concatenación de datos, que básicamente significa agregar un conjunto de datos a otro, se puede realizar llamando a la concat()función.

Demostremos cómo concatenar DataFrames usando nuestros dos Dataframes anteriores, es decir, df1y df2, cada uno con dos columnas, “subject_id” y “student_name”:

print(pd.concat([df1, df2]))

Salida:

subject_id student_name
0          1         John
1          2        Emily
2          3         Kate
3          4       Joseph
4          5       Dennis
0          4        Brian
1          5      William
2          6       Lilian
3          7        Grace
4          8        Caleb

Estadísticas descriptivas

Como mostré brevemente antes, cuando usamos la describe()función obtenemos las estadísticas descriptivas para columnas numéricas, pero las columnas de caracteres están excluidas.

Primero creemos un DataFrame que muestre los nombres de los estudiantes y sus puntajes en matemáticas e inglés:

import pandas as pd
 
data = {
    'Name': ['John', 'Alice', 'Joseph', 'Alex'],
    'English': [64, 78, 68, 58],
    'Maths': [76, 54, 72, 64]
}

df = pd.DataFrame(data)
print(df)

Salida:

 English  Maths    Name
0       64     76    John
1       78     54   Alice
2       68     72  Joseph
3       58     64    Alex

Solo tenemos que llamar a la describe()función en el DataFrame y obtener las diversas medidas como la media, la desviación estándar, la mediana, el elemento máximo, el elemento mínimo, etc.

df.describe()

Salida:

   English      Maths
count   4.000000   4.000000
mean   67.000000  66.500000
std     8.406347   9.712535
min    58.000000  54.000000
25%    62.500000  61.500000
50%    66.000000  68.000000
75%    70.500000  73.000000
max    78.000000  76.000000

Como puede ver, el describe()método ignoró por completo la columna “Nombre” ya que no es numérica, que es lo que queremos. Esto simplifica las cosas para la persona que llama, ya que no necesita preocuparse por eliminar columnas no numéricas antes de calcular las estadísticas numéricas que desea.

Conclusión

Pandas es una biblioteca de Python extremadamente útil, particularmente para la ciencia de datos. Varias funcionalidades de Pandas hacen que el preprocesamiento de datos sea extremadamente simple. Este artículo proporciona una breve introducción a las principales funcionalidades de la biblioteca. En este artículo, vimos ejemplos prácticos de todas las principales utilidades de la biblioteca Panda. Para aprovechar al máximo Pandas, le sugiero que practique los ejemplos de este artículo y también pruebe la biblioteca con sus propios conjuntos de datos. ¡Feliz codificación!

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con tus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad