Escrito por:
Un DataFrame
es una estructura de dos dimensiones, muy similar a una hoja de cálculo o una tabla en base de datos, veamos como crear un DataFrame
a partir de una lista.
1import pandas as pd 2 3list_rrss = ['Facebook','Twitter','Instagram','Youtube'] 4 5# Crear dataframe a partir de una lista 6df_rrss = pd.DataFrame(list_rrss, columns=['Name']) 7 8print(df_rrss)
(output) de la variable
df_rrss
Name | |
---|---|
0 | |
1 | |
2 | |
3 | Youtube |
En este ejemplo, utilizamos la función DataFrame()
para crear un DataFrame
a partir de las lista list_rrss
y su resultado se guarda en la variable df_rrss
, a la función DataFrame()
en este caso le pasamos dos argumentos, la variable list_rrss
la cual serán los datos del DataFrame
y columns
donde se especifica el nombre de las columnas, en este caso Name
. Finalmente, se muestra por la terminal el DataFrame
con los nombres de las redes sociales en la columna Name
.
🔗 Si quieres un tutorial sobre Pandas python, te invito a leer el Blog de 4Geeks, donde encontrarás mucha información relevante.
Un DataFrame
como se mencionó anteriormente es una estructura de dos dimensiones, para crear un DataFrame
en Pandas, primero se necesita importar la librería Pandas y luego utilizar la clase pandas.DataFrame
. La clase pandas.DataFrame
permite varios parámetros a la hora de crearse, veamos cuales son estos parámetros:
1pandas.DataFrame(data, index, columns, dtype)
data
: Representa los datos que utilizara el DataFrame
, puede ser un objeto, una lista, un diccionario, otro DataFrame
, entre otros.index
: Se utiliza cuando queremos especificar los índices del DataFrame
, si no se le proporciona este parámetro por defecto genera índices numéricos.columns
: Se utiliza cuando queremos especificar los nombres de las columnas del DataFrame
, si no se le proporciona este parámentro por defecto genera índices numéricos.dtype
: Se utiliza para especificar el tipo de datos de las columnas DataFrame
, por ejemplo, int
, float
, object
, etc. Si no se le proporciona este parámetro, por defecto infiere el tipo de dato a partir de los datos suministrados.Veamos un ejemplo donde hace uso de los parámetros antes mencionados:
1import pandas as pd 2 3data_countries = {'country': ['Spain', 'Germany', 'United Kingdom', 'Japan'], 4'date': ['2022', '2022', '2020', '2021'], 5'density': [94,234,275,332], 6'population': [47615034, 83794000,67081000,125507000]} 7 8indexes = ['a', 'b', 'c','d'] 9columns = ['country', 'date', 'density', 'population'] 10 11df_data_countries = pd.DataFrame(data=countries, index=indexes, columns=columns, dtype=str) 12 13print(df_data_countries) 14
(output) de la variable
df_data_countries
country | date | density | population | |
---|---|---|---|---|
a | Spain | 2022 | 94 | 47615034 |
b | Germany | 2022 | 234 | 83794000 |
c | United Kingdom | 2020 | 275 | 67081000 |
d | Japan | 2021 | 332 | 125507000 |
En este ejemplo se crea un DataFrame
utilizando el diccionario data_countries
, adicionalmente se especifican los índices y nombres de las columnas con las listas indexes
y columns
respectivamente.
Existen distintas maneras de crear un DataFrame
en Python, a continuación explicaremos algunas de ellas.
1import pandas as pd 2 3# Creacion de un dataframe vacio 4df= pd.DataFrame() 5 6print(df)
(output) de la variable
df
Empty DataFrame Columns: [] Index: []
1import pandas as pd 2 3list_products = [ 4 ['iPhone 12', 100, 500], 5 ['Samsung Galaxy S21', 200, 1000], 6 ['Sony PlayStation 5', 150, 750], 7 ['Nintendo Switch', 50, 250] 8] 9 10df_list_products = pd.DataFrame(list_products, columns=['Product', 'Quantity', 'Price']) 11 12print(df_list_products)
(output) de la variable
df_list_products
Product | Quantity | Price | |
---|---|---|---|
0 | iPhone 12 | 100 | 500 |
1 | Samsung Galaxy S21 | 200 | 1000 |
2 | Sony PlayStation 5 | 150 | 750 |
3 | Nintendo Switch | 50 | 25 |
1import pandas as pd 2 3billionaires = { 4 'name': ['Jeff Bezos', 'Elon Musk', 'Bernard Arnault', 'Bill Gates'], 5 'age': [59, 51, 74, 67], 6 'fortune': [177000000000, 151000000000, 150000000000, 124000000000] 7} 8 9df_billionaires = pd.DataFrame(billionaires) 10 11print(df_billionaires)
(output) de la variable
df_billionaires
name | age | fortune | |
---|---|---|---|
0 | Jeff Bezos | 59 | 177000000000 |
1 | Elon Musk | 51 | 151000000000 |
2 | Bernard Arnault | 74 | 150000000000 |
3 | Bill Gates | 67 | 124000000000 |
1import pandas as pd 2 3 4players = [ 5 {'Name': 'Lionel Messi', 'Team': 'Inter Miami CF', 'Salary': 67000000}, 6 {'Name': 'Cristiano Ronaldo', 'Team': 'Al-Nassr', 'Salary': 62000000}, 7 {'Name': 'Neymar Jr.', 'Team': 'Paris Saint-Germain', 'Salary': 56000000}, 8 {'Name': 'Kylian Mbappé', 'Team': 'Paris Saint-Germain', 'Salary': 42000000}, 9 {'Name': 'Mohamed Salah', 'Team': 'Liverpool', 'Salary': 40000000} 10] 11 12df_players = pd.DataFrame(players, index=['first', 'second', 'third', 'fourth', 'fifth']) 13 14 15print(df_players) 16
(output) de la variable
df_players
Name | Team | Salary | |
---|---|---|---|
first | Lionel Messi | Inter Miami CF | 67000000 |
second | Cristiano Ronaldo | Al-Nassr | 62000000 |
third | Neymar Jr. | Paris Saint-Germain | 56000000 |
fourth | Kylian Mbappé | Paris Saint-Germain | 42000000 |
fifth | Mohamed Salah | Liverpool | 40000000 |
La clase pandas.DataFrame
ofrece una amplia gama de métodos que pueden ser útiles a la hora de analizar datos, a continuación explicaremos los más importantes:
head(n)
: Este método retorna las primeras n
filas del DataFrame
.1import pandas as pd 2 3 4players = [ 5 {'Name': 'Lionel Messi', 'Team': 'Inter Miami CF', 'Salary': 67000000}, 6 {'Name': 'Cristiano Ronaldo', 'Team': 'Al-Nassr', 'Salary': 62000000}, 7 {'Name': 'Neymar Jr.', 'Team': 'Paris Saint-Germain', 'Salary': 56000000}, 8 {'Name': 'Kylian Mbappé', 'Team': 'Paris Saint-Germain', 'Salary': 42000000}, 9 {'Name': 'Mohamed Salah', 'Team': 'Liverpool', 'Salary': 40000000} 10] 11 12 13df_players = pd.DataFrame(players) 14 15 16print(df_players.head(2))
(output) de la variable
df_players
aplicando el métodohead()
Name | Team | Salary | |
---|---|---|---|
0 | Lionel Messi | Inter Miami CF | 67000000 |
1 | Cristiano Ronaldo | Al-Nassr | 62000000 |
tail(n)
: Este método retorna las últimas n
filas del DataFrame
.1import pandas as pd 2 3 4players = [ 5 {'Name': 'Lionel Messi', 'Team': 'Inter Miami CF', 'Salary': 67000000}, 6 {'Name': 'Cristiano Ronaldo', 'Team': 'Al-Nassr', 'Salary': 62000000}, 7 {'Name': 'Neymar Jr.', 'Team': 'Paris Saint-Germain', 'Salary': 56000000}, 8 {'Name': 'Kylian Mbappé', 'Team': 'Paris Saint-Germain', 'Salary': 42000000}, 9 {'Name': 'Mohamed Salah', 'Team': 'Liverpool', 'Salary': 40000000} 10] 11 12 13df_players = pd.DataFrame(players) 14 15print(df_players.tail(2))
(output) de la variable
df_players
aplicando el métodotail()
Name | Team | Salary | |
---|---|---|---|
3 | Kylian Mbappé | Paris Saint-Germain | 42000000 |
4 | Mohamed Salah | Liverpool | 40000000 |
info()
:Este método muestra información detallada sobre el DataFrame
, por ejemplo, el número de filas y columnas, el tipo de datos de cada columna, entre otros datos.1import pandas as pd 2 3billionaires = { 4 'name': ['Jeff Bezos', 'Elon Musk', 'Bernard Arnault', 'Bill Gates'], 5 'age': [59, 51, 74, 67], 6 'fortune': [177000000000, 151000000000, 150000000000, 124000000000] 7} 8 9df_billionaires = pd.DataFrame(billionaires) 10 11print(df_billionaires.info())
(output) de la variable
df_billionaires
aplicando el métodoinfo()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 name 4 non-null object
1 age 4 non-null int64
2 fortune 4 non-null int64
dtypes: int64(2), object(1)
memory usage: 152.0+ bytes
None
describe()
: Genera estadísticas descriptivas del DataFrame
, como el recuento, la media, la desviación estándar, etc.1import pandas as pd 2 3billionaires = { 4 'name': ['Jeff Bezos', 'Elon Musk', 'Bernard Arnault', 'Bill Gates'], 5 'age': [59, 51, 74, 67], 6 'fortune': [177000000000, 151000000000, 150000000000, 124000000000] 7} 8 9df_billionaires = pd.DataFrame(billionaires) 10 11print(df_billionaires.describe()) 12
(output) de la variable
df_billionaires
aplicando el métododescribe()
age | fortune | |
---|---|---|
count | 4.000000 | 4.000000e+00 |
mean | 62.750000 | 1.505000e+11 |
std | 9.945686 | 2.164101e+10 |
min | 51.000000 | 1.240000e+11 |
25% | 57.000000 | 1.435000e+11 |
50% | 63.000000 | 1.505000e+11 |
75% | 68.750000 | 1.575000e+11 |
max | 74.000000 | 1.770000e+11 |
loc[row_indexer, col_indexer]
: Accede a un subconjunto de filas y columnas basándose en las etiquetas del índice.1import pandas as pd 2 3 4players = [ 5 {'Name': 'Lionel Messi', 'Team': 'Inter Miami CF', 'Salary': 67000000}, 6 {'Name': 'Cristiano Ronaldo', 'Team': 'Al-Nassr', 'Salary': 62000000}, 7 {'Name': 'Neymar Jr.', 'Team': 'Paris Saint-Germain', 'Salary': 56000000}, 8 {'Name': 'Kylian Mbappé', 'Team': 'Paris Saint-Germain', 'Salary': 42000000}, 9 {'Name': 'Mohamed Salah', 'Team': 'Liverpool', 'Salary': 40000000} 10] 11 12df_players = pd.DataFrame(players, index=['first', 'second', 'third', 'fourth', 'fifth']) 13 14 15print(df_players.loc["first":"third", "Name":"Team"]) 16
(output) de la variable
df_players
aplicando el métodoloc[row_indexer, col_indexer]
Name | Team | |
---|---|---|
first | Lionel Messi | Inter Miami CF |
second | Cristiano Ronaldo | Al-Nassr |
third | Neymar Jr. | Paris Saint-Germain |
iloc[row_indexer, col_indexer]
: Accede a un subconjunto de filas y columnas basándose en la posición de índice.1import pandas as pd 2 3billionaires = { 4 'name': ['Jeff Bezos', 'Elon Musk', 'Bernard Arnault', 'Bill Gates'], 5 'age': [59, 51, 74, 67], 6 'fortune': [177000000000, 151000000000, 150000000000, 124000000000] 7} 8 9df_billionaires = pd.DataFrame(billionaires) 10 11print(df_billionaires.iloc[0:3, 0:2])
(output) de la variable
df_billionaires
aplicando el métodoiloc[row_indexer, col_indexer]
name | age | |
---|---|---|
0 | Jeff Bezos | 59 |
1 | Elon Musk | 51 |
2 | Bernard Arnault | 74 |
sort_values(by)
: Este método permite ordenar el DataFrame por los valores de una columna o una lista de columnas.1import pandas as pd 2 3 4players = [ 5 {'Name': 'Lionel Messi', 'Team': 'Inter Miami CF', 'Salary': 67000000}, 6 {'Name': 'Cristiano Ronaldo', 'Team': 'Al-Nassr', 'Salary': 62000000}, 7 {'Name': 'Neymar Jr.', 'Team': 'Paris Saint-Germain', 'Salary': 56000000}, 8 {'Name': 'Kylian Mbappé', 'Team': 'Paris Saint-Germain', 'Salary': 42000000}, 9 {'Name': 'Mohamed Salah', 'Team': 'Liverpool', 'Salary': 40000000} 10] 11 12df_players = pd.DataFrame(players) 13 14print(df_players.sort_values(by='Name', ascending=True)) 15
(output) de la variable
df_players
aplicando el métodosort_values()
Name | Team | Salary | |
---|---|---|---|
1 | Cristiano Ronaldo | Al-Nassr | 62000000 |
3 | Kylian Mbappé | Paris Saint-Germain | 42000000 |
0 | Lionel Messi | Inter Miami CF | 67000000 |
4 | Mohamed Salah | Liverpool | 40000000 |
2 | Neymar Jr. | Paris Saint-Germain | 56000000 |
Podemos concluir que los DataFrames
son una herramienta muy poderosa para trabajar con datos tabulares, ya que nos permite analizar y manipular gran cantidad de datos que en ocasiones son muy complejos, por lo que son ampliamente utilizados en áreas de desarrollo como son Machine learning, Data Science, Data Analysis, entre otras.
🔗 Si te interesa conocer más a fondo cómo puedes utilizar la biblioteca de Pandas en Machine Learning te recomiendo que visites el artículo sobre pandas para machine learning, donde encontraras recursos muy utiles y explicaciones con ejemplos de código y videotutoriales que te ayudarán a enterder mejor esta librería y aprenderas a utilizar todas las caracteristicas mas importantes que ofrese.