Pandas es una biblioteca de código abierto que proporciona estructuras de datos y herramientas de análisis de datos de alto rendimiento, donde el DataFrame es una de sus más importantes estructuras de datos. Los DataFrames poseen una idea similar a lo que son las hojas de cálculo en Excel
o a una tabla en SQL
.
Podemos crear nuestro primer DataFrame utilizando un diccionario como base para nuestros datos, para ello utilizaremos pd.DataFrame()
que recive como parámetro el nombre del diccionario en cuestión. Por ejemplo
# Importamos el módulo necesario
import pandas as pd
# Creamos el diccionario
dict1 = {
'País': ['Brazil', 'Rusia', 'India', 'China', 'Japón'],
'Capital': ['Brasilia', 'Moscú', 'Nueva Delhí', 'Beijing', 'Tokio'],
'Población': [200.4, 140, 1300, 1500, 500]
}
# Creamos el DataFrame
d1 = pd.DataFrame(dict1)
# Veamos el DataFrame creado
d1
País | Capital | Población | |
---|---|---|---|
0 | Brazil | Brasilia | 200.4 |
1 | Rusia | Moscú | 140.0 |
2 | India | Nueva Delhí | 1300.0 |
3 | China | Beijing | 1500.0 |
4 | Japón | Tokio | 500.0 |
donde de manera automática se crea una primer columna con un índece por defecto de la filas. Podemos cambiarlo utilizando
# redefinimos el índice por defecto con los valores que deseamos colocar
d1.index = ['BR', 'RU', 'IN', 'CH', 'JA']
# veamos ahora nuestro DataFrame
d1
País | Capital | Población | |
---|---|---|---|
BR | Brazil | Brasilia | 200.4 |
RU | Rusia | Moscú | 140.0 |
IN | India | Nueva Delhí | 1300.0 |
CH | China | Beijing | 1500.0 |
JA | Japón | Tokio | 500.0 |
Por lo general, cuando se trabaja con DataFrames suelen tener cantidades grandes de datos, por lo que no se crean éstos de manera manual, siendo lo usual importar datos de otros lados y crear los DataFrames a partir de ellos. Por ejemplo, podemos crear un DataFrame extrayendo datos de un archivo csv de un sitio web como sigue
# Creamos el DataFrame a partir de los datos de una sitio web,
# donde como paramétro de pd.read_csv() pondremos la dirección web de dicho sitio
d2 = pd.read_csv("https://ndownloader.figshare.com/files/2292172")
# veamos el DataFrame
d2
record_id | month | day | year | plot_id | species_id | sex | hindfoot_length | weight | |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 7 | 16 | 1977 | 2 | NL | M | 32.0 | NaN |
1 | 2 | 7 | 16 | 1977 | 3 | NL | M | 33.0 | NaN |
2 | 3 | 7 | 16 | 1977 | 2 | DM | F | 37.0 | NaN |
3 | 4 | 7 | 16 | 1977 | 7 | DM | M | 36.0 | NaN |
4 | 5 | 7 | 16 | 1977 | 3 | DM | M | 35.0 | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
35544 | 35545 | 12 | 31 | 2002 | 15 | AH | NaN | NaN | NaN |
35545 | 35546 | 12 | 31 | 2002 | 15 | AH | NaN | NaN | NaN |
35546 | 35547 | 12 | 31 | 2002 | 10 | RM | F | 15.0 | 14.0 |
35547 | 35548 | 12 | 31 | 2002 | 7 | DO | M | 36.0 | 51.0 |
35548 | 35549 | 12 | 31 | 2002 | 5 | NaN | NaN | NaN | NaN |
35549 rows × 9 columns
y notemos como Python al final de la salida nos indica que hay 35549 filas en dicho DataFrame.
Consideremos otro ejemplo, en este caso crearemos un DataFrame a partir de tres listas como sigue
# Consideramos las listas
nombres = ['United States', 'Australia', 'Japan', 'India', 'Russia', 'Morocco', 'Egypt']
md = [True, False, False, False, True, True, True]
cpc = [809, 731, 588, 18, 200, 70, 45]
# Creamos un diccionario a partir de las tres listas anteriores
mi_dict = {'nombres': nombres, 'maneja_derecha': valor, 'carros_per_cap': codigo}
# Creamos el DataFrame
carros = pd.DataFrame(mi_dict)
# Veamos el DataFrame
carros
nombres | maneja_derecha | carros_per_cap | |
---|---|---|---|
0 | United States | True | 809 |
1 | Australia | False | 731 |
2 | Japan | False | 588 |
3 | India | False | 18 |
4 | Russia | True | 200 |
5 | Morocco | True | 70 |
6 | Egypt | True | 45 |
podemos modificar la columna de los índices dados por defecto
# modificando primer columna de índices dados por defecto
carros.index = ['EU','AU', 'JA', 'IN', 'RU', 'MO', 'EG']
# Veamos nuestro DataFrame
carros
nombres | maneja_derecha | carros_per_cap | |
---|---|---|---|
EU | United States | True | 809 |
AU | Australia | False | 731 |
JA | Japan | False | 588 |
IN | India | False | 18 |
RU | Russia | True | 200 |
MO | Morocco | True | 70 |
EG | Egypt | True | 45 |
Cuando creamos un DataFrame utilizando datos externos, por defecto se creará la columna de índices como en el ejemplo anterior, sin embargo, en muchos casos la información externa posee su propia primer columna por lo que la creada por defecto muchas veces está de más. Para especificar que tomaremos como primer columna la columna de los datos externos agregamos index_col = 0
al parámetro donde "leemos" la información externa y creamos el DataFrame. Por ejemplo
d2 = pd.read_csv("https://ndownloader.figshare.com/files/2292172", index_col = 0)
# veamos el DataFrame
d2
month | day | year | plot_id | species_id | sex | hindfoot_length | weight | |
---|---|---|---|---|---|---|---|---|
record_id | ||||||||
1 | 7 | 16 | 1977 | 2 | NL | M | 32.0 | NaN |
2 | 7 | 16 | 1977 | 3 | NL | M | 33.0 | NaN |
3 | 7 | 16 | 1977 | 2 | DM | F | 37.0 | NaN |
4 | 7 | 16 | 1977 | 7 | DM | M | 36.0 | NaN |
5 | 7 | 16 | 1977 | 3 | DM | M | 35.0 | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... |
35545 | 12 | 31 | 2002 | 15 | AH | NaN | NaN | NaN |
35546 | 12 | 31 | 2002 | 15 | AH | NaN | NaN | NaN |
35547 | 12 | 31 | 2002 | 10 | RM | F | 15.0 | 14.0 |
35548 | 12 | 31 | 2002 | 7 | DO | M | 36.0 | 51.0 |
35549 | 12 | 31 | 2002 | 5 | NaN | NaN | NaN | NaN |
35549 rows × 8 columns