Tutorial para principiantes sobre la biblioteca Panda de Python

    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!

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *