Python Pandas - DataFrame

Un marco de datos es una estructura de datos bidimensional, es decir, los datos se alinean de forma tabular en filas y columnas.

Características de DataFrame

  • Potencialmente, las columnas son de diferentes tipos
  • Tamaño: mutable
  • Ejes etiquetados (filas y columnas)
  • Puede realizar operaciones aritméticas en filas y columnas

Estructura

Supongamos que estamos creando un marco de datos con los datos del estudiante.

Puede pensar en ello como una tabla SQL o una representación de datos de hoja de cálculo.

pandas.DataFrame

Se puede crear un DataFrame de pandas usando el siguiente constructor:

pandas.DataFrame( data, index, columns, dtype, copy)

Los parámetros del constructor son los siguientes:

No Señor Descripción de parámetros
1

data

los datos toman varias formas como ndarray, series, mapa, listas, dict, constantes y también otro DataFrame.

2

index

Para las etiquetas de fila, el índice que se utilizará para el marco resultante es opcional predeterminado np.arange (n) si no se pasa ningún índice.

3

columns

Para las etiquetas de columna, la sintaxis predeterminada opcional es - np.arange (n). Esto solo es cierto si no se pasa ningún índice.

4

dtype

Tipo de datos de cada columna.

5

copy

Este comando (o lo que sea) se utiliza para copiar datos, si el valor predeterminado es Falso.

Crear DataFrame

Se puede crear un DataFrame de pandas usando varias entradas como:

  • Lists
  • dict
  • Series
  • Numpy ndarrays
  • Otro DataFrame

En las siguientes secciones de este capítulo, veremos cómo crear un DataFrame utilizando estas entradas.

Crear un marco de datos vacío

Un DataFrame básico, que se puede crear, es un Dataframe vacío.

Ejemplo

#import the pandas library and aliasing as pd
import pandas as pd
df = pd.DataFrame()
print df

Sus output es como sigue -

Empty DataFrame
Columns: []
Index: []

Crear un DataFrame a partir de listas

El DataFrame se puede crear usando una sola lista o una lista de listas.

Ejemplo 1

import pandas as pd
data = [1,2,3,4,5]
df = pd.DataFrame(data)
print df

Sus output es como sigue -

0
0    1
1    2
2    3
3    4
4    5

Ejemplo 2

import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
print df

Sus output es como sigue -

Name      Age
0     Alex      10
1     Bob       12
2     Clarke    13

Ejemplo 3

import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'],dtype=float)
print df

Sus output es como sigue -

Name     Age
0     Alex     10.0
1     Bob      12.0
2     Clarke   13.0

Note - Observa, el dtype El parámetro cambia el tipo de columna Edad a punto flotante.

Cree un DataFrame a partir de Dict of ndarrays / Lists

Todos ndarraysdebe tener la misma longitud. Si se pasa el índice, entonces la longitud del índice debe ser igual a la longitud de las matrices.

Si no se pasa ningún índice, entonces por defecto, el índice será rango (n), donde n es la longitud de la matriz.

Ejemplo 1

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data)
print df

Sus output es como sigue -

Age      Name
0     28        Tom
1     34       Jack
2     29      Steve
3     42      Ricky

Note- Observar los valores 0,1,2,3. Son el índice predeterminado asignado a cada uno que usa el rango de función (n).

Ejemplo 2

Creemos ahora un DataFrame indexado usando matrices.

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
print df

Sus output es como sigue -

Age    Name
rank1    28      Tom
rank2    34     Jack
rank3    29    Steve
rank4    42    Ricky

Note - Observa, el index El parámetro asigna un índice a cada fila.

Crear un marco de datos a partir de la lista de dictados

La lista de diccionarios se puede pasar como datos de entrada para crear un DataFrame. Las claves del diccionario se toman por defecto como nombres de columna.

Ejemplo 1

El siguiente ejemplo muestra cómo crear un DataFrame pasando una lista de diccionarios.

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print df

Sus output es como sigue -

a    b      c
0   1   2     NaN
1   5   10   20.0

Note - Observe, NaN (No es un número) se agrega en las áreas faltantes.

Ejemplo 2

El siguiente ejemplo muestra cómo crear un DataFrame pasando una lista de diccionarios y los índices de fila.

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data, index=['first', 'second'])
print df

Sus output es como sigue -

a   b       c
first   1   2     NaN
second  5   10   20.0

Ejemplo 3

El siguiente ejemplo muestra cómo crear un DataFrame con una lista de diccionarios, índices de fila e índices de columna.

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]

#With two column indices, values same as dictionary keys
df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])

#With two column indices with one index with other name
df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])
print df1
print df2

Sus output es como sigue -

#df1 output
         a  b
first    1  2
second   5  10

#df2 output
         a  b1
first    1  NaN
second   5  NaN

Note- Observe, df2 DataFrame se crea con un índice de columna diferente a la clave del diccionario; por lo tanto, agregó los NaN en su lugar. Considerando que, df1 se crea con índices de columna igual que las claves del diccionario, por lo que se adjunta NaN.

Crear un DataFrame a partir de Dict of Series

El Diccionario de Series se puede pasar para formar un DataFrame. El índice resultante es la unión de todos los índices de la serie aprobados.

Ejemplo

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df

Sus output es como sigue -

one    two
a     1.0    1
b     2.0    2
c     3.0    3
d     NaN    4

Note - Observe, para la serie uno, no hay etiqueta ‘d’ pasado, pero en el resultado, para el d etiqueta, NaN se agrega con NaN.

Ahora entendamos column selection, additiony deletion a través de ejemplos.

Selección de columna

Comprenderemos esto seleccionando una columna del DataFrame.

Ejemplo

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df ['one']

Sus output es como sigue -

a     1.0
b     2.0
c     3.0
d     NaN
Name: one, dtype: float64

Adición de columnas

Comprenderemos esto agregando una nueva columna a un marco de datos existente.

Ejemplo

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)

# Adding a new column to an existing DataFrame object with column label by passing new series

print ("Adding a new column by passing as Series:")
df['three']=pd.Series([10,20,30],index=['a','b','c'])
print df

print ("Adding a new column using the existing columns in DataFrame:")
df['four']=df['one']+df['three']

print df

Sus output es como sigue -

Adding a new column by passing as Series:
     one   two   three
a    1.0    1    10.0
b    2.0    2    20.0
c    3.0    3    30.0
d    NaN    4    NaN

Adding a new column using the existing columns in DataFrame:
      one   two   three    four
a     1.0    1    10.0     11.0
b     2.0    2    20.0     22.0
c     3.0    3    30.0     33.0
d     NaN    4     NaN     NaN

Eliminación de columnas

Las columnas se pueden eliminar o resaltar; tomemos un ejemplo para entender cómo.

Ejemplo

# Using the previous DataFrame, we will delete a column
# using del function
import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']), 
   'three' : pd.Series([10,20,30], index=['a','b','c'])}

df = pd.DataFrame(d)
print ("Our dataframe is:")
print df

# using del function
print ("Deleting the first column using DEL function:")
del df['one']
print df

# using pop function
print ("Deleting another column using POP function:")
df.pop('two')
print df

Sus output es como sigue -

Our dataframe is:
      one   three  two
a     1.0    10.0   1
b     2.0    20.0   2
c     3.0    30.0   3
d     NaN     NaN   4

Deleting the first column using DEL function:
      three    two
a     10.0     1
b     20.0     2
c     30.0     3
d     NaN      4

Deleting another column using POP function:
   three
a  10.0
b  20.0
c  30.0
d  NaN

Selección, adición y eliminación de filas

Ahora entenderemos la selección, adición y eliminación de filas a través de ejemplos. Comencemos por el concepto de selección.

Selección por etiqueta

Las filas se pueden seleccionar pasando la etiqueta de fila a un loc función.

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df.loc['b']

Sus output es como sigue -

one 2.0
two 2.0
Name: b, dtype: float64

El resultado es una serie con etiquetas como nombres de columna del DataFrame. Y, el Nombre de la serie es la etiqueta con la que se recupera.

Selección por ubicación de entero

Las filas se pueden seleccionar pasando la ubicación del número entero a un iloc función.

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df.iloc[2]

Sus output es como sigue -

one   3.0
two   3.0
Name: c, dtype: float64

Filas de rebanadas

Se pueden seleccionar varias filas usando el operador ':'.

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df[2:4]

Sus output es como sigue -

one  two
c  3.0    3
d  NaN    4

Suma de filas

Agregue nuevas filas a un DataFrame usando el appendfunción. Esta función agregará las filas al final.

import pandas as pd

df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])

df = df.append(df2)
print df

Sus output es como sigue -

a  b
0  1  2
1  3  4
0  5  6
1  7  8

Eliminación de filas

Use la etiqueta de índice para eliminar o quitar filas de un DataFrame. Si la etiqueta está duplicada, se eliminarán varias filas.

Si observa, en el ejemplo anterior, las etiquetas están duplicadas. Dejemos caer una etiqueta y veremos cuántas filas se eliminarán.

import pandas as pd

df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])

df = df.append(df2)

# Drop rows with label 0
df = df.drop(0)

print df

Sus output es como sigue -

a b
1 3 4
1 7 8

En el ejemplo anterior, se descartaron dos filas porque esas dos contienen la misma etiqueta 0.