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.