Course
Tutorial de unión de DataFrames en pandas
¿Has intentado alguna vez resolver un reto de Kaggle? En caso afirmativo, es posible que se haya dado cuenta de que, en la mayoría de los desafíos, los datos que se le proporcionan están presentes en varios archivos, y algunas de las columnas están presentes en más de uno de los archivos. ¿Qué es lo primero que le viene a la mente? Únase a ellos, por supuesto.
En este tutorial, practicarás algunas técnicas estándar de unión de pandas. Más concretamente, aprenderás a:
- Concatenar DataFrames a lo largo de fila y columna.
- Fusione DataFrames en claves específicas mediante diferentes lógicas de unión como left-join, inner-join, etc.
- Unir DataFrames por índice.
- Fusión de series temporales en pandas
Por el camino, también aprenderás algunos trucos que necesitarás antes y después de unirte.
Pandas que se unen
Unir y fusionar DataFrames es el proceso central para comenzar con el análisis de datos y las tareas de aprendizaje automático. Es uno de los conjuntos de herramientas que todo analista o científico de datos debe dominar porque, en casi todos los casos, los datos proceden de múltiples fuentes y archivos. Es posible que tenga que reunir todos los datos en un solo lugar mediante algún tipo de lógica de unión y, a continuación, iniciar el análisis. Quienes trabajen con lenguajes de consulta tipo SQL quizá conozcan la importancia de esta tarea. Incluso si desea construir algunos modelos de aprendizaje automático en algunos datos, puede que tenga que combinar varios archivos csv juntos en un único DataFrame.
pandas proporciona varias facilidades para combinar fácilmente objetos Series, DataFrames y Panel con varios tipos de lógica de conjuntos para los índices y funcionalidad de álgebra relacional en el caso de operaciones de tipo join / merge.
Ejecute y edite el código de este tutorial en línea
Ejecutar códigopandas Concatenar
Comienza importando la biblioteca que utilizarás a lo largo del tutorial: pandas
import pandas as pd
Realizará todas las operaciones de este tutorial en los DataFrames ficticios que creará. Para crear un DataFrame, puede utilizar un diccionario Python como:
dummy_data1 = {
'id': ['1', '2', '3', '4', '5'],
'Feature1': ['A', 'C', 'E', 'G', 'I'],
'Feature2': ['B', 'D', 'F', 'H', 'J']}
Aquí, las claves del diccionario dummy_data1 son los nombres de las columnas, y los valores de la lista son los datos correspondientes a cada observación o fila. Para transformar esto en un DataFrame de pandas, utilizarás la función DataFrame() de pandas, junto con su argumento columns para nombrar tus columnas:
df1 = pd.DataFrame(dummy_data1, columns = ['id', 'Feature1', 'Feature2'])
df1
id | Artículo1 | Artículo2 | |
---|---|---|---|
0 | 1 | A | B |
1 | 2 | C | D |
2 | 3 | E | F |
3 | 4 | G | H |
4 | 5 | I | J |
Como puede observar, ahora tiene un DataFrame con tres columnas id, Feature1 y Feature2. Hay una columna adicional sin nombre que pandas crea intrínsecamente como etiquetas de las filas. De forma similar al DataFrame anterior df1, creará otros dos DataFrames df2 y df3 :
dummy_data2 = {
'id': ['1', '2', '6', '7', '8'],
'Feature1': ['K', 'M', 'O', 'Q', 'S'],
'Feature2': ['L', 'N', 'P', 'R', 'T']}
df2 = pd.DataFrame(dummy_data2, columns = ['id', 'Feature1', 'Feature2'])
df2
id | Artículo1 | Artículo2 | |
---|---|---|---|
0 | 1 | K | L |
1 | 2 | M | N |
2 | 6 | O | P |
3 | 7 | Q | R |
4 | 8 | S | T |
dummy_data3 = {
'id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'],
'Feature3': [12, 13, 14, 15, 16, 17, 15, 12, 13, 23]}
df3 = pd.DataFrame(dummy_data3, columns = ['id', 'Feature3'])
df3
id | Feature3 | |
---|---|---|
0 | 1 | 12 |
1 | 2 | 13 |
2 | 3 | 14 |
3 | 4 | 15 |
4 | 5 | 16 |
5 | 7 | 17 |
6 | 8 | 15 |
7 | 9 | 12 |
8 | 10 | 13 |
9 | 11 | 23 |
concat()
Para concatenar simplemente los DataFrames a lo largo de la fila se puede utilizar la función concat() en pandas. Tendrás que pasar los nombres de los DataFrames en una lista como argumento a la función concat():
df_row = pd.concat([df1, df2])
df_row
id | Artículo1 | Artículo2 | |
---|---|---|---|
0 | 1 | A | B |
1 | 2 | C | D |
2 | 3 | E | F |
3 | 4 | G | H |
4 | 5 | I | J |
0 | 1 | K | L |
1 | 2 | M | N |
2 | 6 | O | P |
3 | 7 | Q | R |
4 | 8 | S | T |
Puede observar que los dos DataFrames df1 y df2 están ahora concatenados en un único DataFrame df_row a lo largo de la fila. Sin embargo, las etiquetas de las filas parecen estar mal. Si desea que las etiquetas de las filas se ajusten automáticamente en función de la unión, deberá establecer el argumento ignore_index como True al llamar a la función concat():
df_row_reindex = pd.concat([df1, df2], ignore_index=True)
df_row_reindex
id | Artículo1 | Artículo2 | |
---|---|---|---|
0 | 1 | A | B |
1 | 2 | C | D |
2 | 3 | E | F |
3 | 4 | G | H |
4 | 5 | I | J |
5 | 1 | K | L |
6 | 2 | M | N |
7 | 6 | O | P |
8 | 7 | Q | R |
9 | 8 | S | T |
Ahora las etiquetas de las filas son correctas.
pandas también le proporciona una opción para etiquetar los DataFrames, después de la concatenación, con una clave para que pueda saber qué datos proceden de qué DataFrame. Puede conseguir lo mismo pasando claves de argumentos adicionales que especifiquen los nombres de las etiquetas de los DataFrames en una lista. Aquí se realizará la misma concatenación con claves como x e y para los DataFrames df1 y df2 respectivamente.
frames = [df1,df2]
df_keys = pd.concat(frames, keys=['x', 'y'])
df_keys
id | Artículo1 | Artículo2 | ||
---|---|---|---|---|
x | 0 | 1 | A | B |
1 | 2 | C | D | |
2 | 3 | E | F | |
3 | 4 | G | H | |
4 | 5 | I | J | |
y | 0 | 1 | K | L |
1 | 2 | M | N | |
2 | 6 | O | P | |
3 | 7 | Q | R | |
4 | 8 | S | T |
La mención de las claves también facilita la recuperación de los datos correspondientes a un DataFrame concreto. Puedes recuperar los datos del DataFrame df2 que tenía la etiqueta y utilizando el método loc:
df_keys.loc['y']
id | Artículo1 | Artículo2 | |
---|---|---|---|
0 | 1 | K | L |
1 | 2 | M | N |
2 | 6 | O | P |
3 | 7 | Q | R |
4 | 8 | S | T |
También puede pasar un diccionario a concat(), en cuyo caso las claves del diccionario se utilizarán para el argumento claves (a menos que se especifiquen otras claves):
pieces = {'x': df1, 'y': df2}
df_piece = pd.concat(pieces)
df_piece
id | Artículo1 | Artículo2 | ||
---|---|---|---|---|
x | 0 | 1 | A | B |
1 | 2 | C | D | |
2 | 3 | E | F | |
3 | 4 | G | H | |
4 | 5 | I | J | |
y | 0 | 1 | K | L |
1 | 2 | M | N | |
2 | 6 | O | P | |
3 | 7 | Q | R | |
4 | 8 | S | T |
Hay que tener en cuenta que concat() hace una copia completa de los datos, por lo que la reutilización continua de esta función puede afectar significativamente al rendimiento. Si necesita utilizar la operación en varios conjuntos de datos, utilice una comprensión de lista.
frames = [ process_your_file(f) for f in files ]
result = pd.concat(frames)
Para concatenar DataFrames a lo largo de una columna, puede especificar el parámetro de eje como 1 :
df_col = pd.concat([df1,df2], axis=1)
df_col
id | Artículo1 | Artículo2 | id | Artículo1 | Artículo2 | |
---|---|---|---|---|---|---|
0 | 1 | A | B | 1 | K | L |
1 | 2 | C | D | 2 | M | N |
2 | 3 | E | F | 6 | O | P |
3 | 4 | G | H | 7 | Q | R |
4 | 5 | I | J | 8 | S | T |
pandas Combinar marcos de datos
Otra operación omnipresente relacionada con los DataFrames es la operación de fusión. Dos DataFrames pueden contener diferentes tipos de información sobre la misma entidad y estar vinculados por alguna característica/columna común. Para unir estos DataFrames, pandas proporciona múltiples funciones como concat(), merge() , join(), etc. En esta sección, practicarás el uso de la función merge() de pandas.
Puede unir DataFrames df_row (que creó concatenando df1 y df2 a lo largo de la fila) y df3 en la columna común (o clave) id. Para ello, pase los nombres de los DataFrames y un argumento adicional como el nombre de la columna común, aquí id, a la función merge():
df_merge_col = pd.merge(df_row, df3, on='id')
df_merge_col
id | Artículo1 | Artículo2 | Feature3 | |
---|---|---|---|---|
0 | 1 | A | B | 12 |
1 | 1 | K | L | 12 |
2 | 2 | C | D | 13 |
3 | 2 | M | N | 13 |
4 | 3 | E | F | 14 |
5 | 4 | G | H | 15 |
6 | 5 | I | J | 16 |
7 | 7 | Q | R | 17 |
8 | 8 | S | T | 15 |
Puede observar que los DataFrames se han fusionado en un único DataFrame basado en los valores comunes presentes en la columna id de ambos DataFrames. Por ejemplo, aquí el valor de id 1 estaba presente tanto con A, B como con K, L en el DataFrame df_row, por lo que este id se repitió dos veces en el DataFrame final df_merge_col con el valor repetido 12 de Feature3 que procedía del DataFrame df3.
Puede ocurrir que la columna en la que desea combinar los DataFrames tenga nombres diferentes (a diferencia de este caso). Para estas fusiones, tendrá que especificar los argumentos left_on como nombre del DataFrame izquierdo y right_on como nombre del DataFrame derecho, como :
df_merge_difkey = pd.merge(df_row, df3, left_on='id', right_on='id')
df_merge_difkey
id | Artículo1 | Artículo2 | Feature3 | |
---|---|---|---|---|
0 | 1 | A | B | 12 |
1 | 1 | K | L | 12 |
2 | 2 | C | D | 13 |
3 | 2 | M | N | 13 |
4 | 3 | E | F | 14 |
5 | 4 | G | H | 15 |
6 | 5 | I | J | 16 |
7 | 7 | Q | R | 17 |
8 | 8 | S | T | 15 |
También puede añadir filas a un DataFrame pasando una Serie o dict a la función append() que devuelve un nuevo DataFrame:
add_row = pd.Series(['10', 'X1', 'X2', 'X3'],
index=['id','Feature1', 'Feature2', 'Feature3'])
df_add_row = df_merge_col.append(add_row, ignore_index=True)
df_add_row
id | Artículo1 | Artículo2 | Feature3 | |
---|---|---|---|---|
0 | 1 | A | B | 12 |
1 | 1 | K | L | 12 |
2 | 2 | C | D | 13 |
3 | 2 | M | N | 13 |
4 | 3 | E | F | 14 |
5 | 4 | G | H | 15 |
6 | 5 | I | J | 16 |
7 | 7 | Q | R | 17 |
8 | 8 | S | T | 15 |
9 | 10 | X1 | X2 | X3 |
Tipos de pandas Unirse
En esta sección, practicará las distintas lógicas de unión disponibles para fusionar DataFrames de pandas basándose en alguna columna/clave común. La lógica que subyace a estas uniones es muy parecida a la que existe en SQL cuando se unen tablas.
Unión exterior completa
El FULL OUTER JOIN combina los resultados de los outer joins izquierdo y derecho. El DataFrame unido contendrá todos los registros de ambos DataFrames y rellenará con NaNs las coincidencias que falten en cada lado. Puede realizar una unión externa completa especificando el argumento how como outer en la función merge():
df_outer = pd.merge(df1, df2, on='id', how='outer')
df_outer
id | Feature1_x | Feature2_x | Feature1_y | Feature2_y | |
---|---|---|---|---|---|
0 | 1 | A | B | K | L |
1 | 2 | C | D | M | N |
2 | 3 | E | F | NaN | NaN |
3 | 4 | G | H | NaN | NaN |
4 | 5 | I | J | NaN | NaN |
5 | 6 | NaN | NaN | O | P |
6 | 7 | NaN | NaN | Q | R |
7 | 8 | NaN | NaN | S | T |
Puede observar que el DataFrame resultante tenía todas las entradas de ambas tablas con valores NaN para las coincidencias que faltaban a cada lado. Sin embargo, otra cosa que hay que tener en cuenta es el sufijo que se añade a los nombres de las columnas para indicar qué columna procede de qué DataFrame. Los sufijos por defecto son x e y, sin embargo, puede modificarlos especificando el argumento suffixes en la función merge():
df_suffix = pd.merge(df1, df2, left_on='id',right_on='id',how='outer',suffixes=('_left','_right'))
df_suffix
id | Feature1_left | Feature2_left | Feature1_right | Feature2_right | |
---|---|---|---|---|---|
0 | 1 | A | B | K | L |
1 | 2 | C | D | M | N |
2 | 3 | E | F | NaN | NaN |
3 | 4 | G | H | NaN | NaN |
4 | 5 | I | J | NaN | NaN |
5 | 6 | NaN | NaN | O | P |
6 | 7 | NaN | NaN | Q | R |
7 | 8 | NaN | NaN | S | T |
Unión interna
El INNER JOIN produce sólo el conjunto de registros que coinciden tanto en el DataFrame A como en el DataFrame B. Tiene que pasar inner en el argumento how de la función merge() para hacer inner join:
df_inner = pd.merge(df1, df2, on='id', how='inner')
df_inner
id | Feature1_x | Feature2_x | Feature1_y | Feature2_y | |
---|---|---|---|---|---|
0 | 1 | A | B | K | L |
1 | 2 | C | D | M | N |
Derecha Únete
El RIGHT JOIN produce un conjunto completo de registros del DataFrame B (DataFrame derecho), con los registros coincidentes (si están disponibles) en el DataFrame A (DataFrame izquierdo). Si no hay ninguna coincidencia, el lado derecho contendrá null. Tienes que pasar el argumento how en la función merge() para hacer la unión correcta:
df_right = pd.merge(df1, df2, on='id', how='right')
df_right
id | Feature1_x | Feature2_x | Feature1_y | Feature2_y | |
---|---|---|---|---|---|
0 | 1 | A | B | K | L |
1 | 2 | C | D | M | N |
2 | 6 | NaN | NaN | O | P |
3 | 7 | NaN | NaN | Q | R |
4 | 8 | NaN | NaN | S | T |
Unión izquierda
El LEFT JOIN produce un conjunto completo de registros del DataFrame A (DataFrame izquierdo), con los registros coincidentes (si están disponibles) en el DataFrame B (DataFrame derecho). Si no hay ninguna coincidencia, el lado izquierdo contendrá null. Tienes que pasar left en el argumento how de la función merge() para hacer left join:
df_left = pd.merge(df1, df2, on='id', how='left')
df_left
id | Feature1_x | Feature2_x | Feature1_y | Feature2_y | |
---|---|---|---|---|---|
0 | 1 | A | B | K | L |
1 | 2 | C | D | M | N |
2 | 3 | E | F | NaN | NaN |
3 | 4 | G | H | NaN | NaN |
4 | 5 | I | J | NaN | NaN |
Unir en índice
A veces puede que tenga que realizar la unión en los índices o en las etiquetas de las filas. Para ello, debe especificar right_index (para los índices del DataFrame derecho) e left_index (para los índices del DataFrame izquierdo) como True :
df_index = pd.merge(df1, df2, right_index=True, left_index=True)
df_index
id_x | Feature1_x | Feature2_x | id_y | Feature1_y | Feature2_y | |
---|---|---|---|---|---|---|
0 | 1 | A | B | 1 | K | L |
1 | 2 | C | D | 2 | M | N |
2 | 3 | E | F | 6 | O | P |
3 | 4 | G | H | 7 | Q | R |
4 | 5 | I | J | 8 | S | T |
pandas Únete
La función DataFrame.join de Pandas se utiliza para unir marcos de datos en índices únicos. Puede utilizar el argumento opcional `on` para unir nombres de columna(s) en el índice y como argumentos manejar la operación de los dos objetos. Por defecto, utilizará la unión interna.
pandas Une Dos Dataframes
Unamos dos marcos de datos utilizando .join. Hemos proporcionado `lsuffix` y `rsuffix` para evitar que se produzca el error de solapamiento de columnas. Se une basándose en el índice, no en la columna, así que tenemos que cambiar la columna 'id' o proporcionar un sufijo.
df2.join(df3, lsuffix='_left', rsuffix='_right')
id_left | Artículo1 | Artículo2 | id_right | Feature3 | |
---|---|---|---|---|---|
0 | 1 | K | L | 1 | 12 |
1 | 2 | M | N | 2 | 13 |
2 | 6 | O | P | 3 | 14 |
3 | 7 | Q | R | 4 | 15 |
4 | 8 | S | T | 5 | 16 |
También podemos unir columnas en el índice utilizando el argumento `on`. Para aplicar la unión con éxito, tenemos que df3 columna 'id' al índice y proporcionar el argumento `on` con la columna 'id'. Por defecto, utilizará la unión izquierda.
df2.join(df3.set_index('id'), on='id')
id | Artículo1 | Artículo2 | Feature3 | |
---|---|---|---|---|
0 | 1 | K | L | 12.0 |
1 | 2 | M | N | 13.0 |
2 | 6 | O | P | NaN |
3 | 7 | Q | R | 17.0 |
4 | 8 | S | T | 15.0 |
Al igual que la función merge, podemos cambiar el funcionamiento de join proporcionando un argumento `how`. En nuestro caso, utilizaremos una unión interna.
df2.join(df3.set_index('id'), on='id', how = "inner")
id_left | Artículo1 | Artículo2 | Feature3 | |
---|---|---|---|---|
0 | 1 | K | L | 12 |
1 | 2 | M | N | 13 |
3 | 7 | Q | R | 17 |
4 | 8 | S | T | 15 |
Fusión de series temporales
Pandas proporciona funciones especiales para fusionar DataFrames de series temporales. Quizá la más útil y popular sea la función merge_asof(). La función merge_asof() es similar a una unión ordenada a la izquierda, salvo que la coincidencia se realiza por la clave más cercana en lugar de por claves iguales. Para cada fila del DataFrame de la izquierda, se selecciona la última fila del DataFrame de la derecha cuya clave on sea menor que la clave de la izquierda. Ambos DataFrames deben estar ordenados por la clave.
Opcionalmente, una fusión asof puede realizar una fusión por grupos. Esto coincide igualmente con la tecla by, además de la coincidencia más cercana de la tecla on.
Por ejemplo, puede que tenga operaciones y cotizaciones y quiera fusionarlas. Aquí el DataFrame izquierdo se elige como operaciones y el DataFrame derecho como cotizaciones. A partir de ese momento, se fusionan en tiempo clave y se agrupan por su símbolo de cotización.
trades = pd.DataFrame({
'time': pd.to_datetime(['20160525 13:30:00.023',
'20160525 13:30:00.038',
'20160525 13:30:00.048',
'20160525 13:30:00.048',
'20160525 13:30:00.048']),
'ticker': ['MSFT', 'MSFT','GOOG', 'GOOG', 'AAPL'],
'price': [51.95, 51.95,720.77, 720.92, 98.00],
'quantity': [75, 155,100, 100, 100]},
columns=['time', 'ticker', 'price', 'quantity'])
quotes = pd.DataFrame({
'time': pd.to_datetime(['20160525 13:30:00.023',
'20160525 13:30:00.023',
'20160525 13:30:00.030',
'20160525 13:30:00.041',
'20160525 13:30:00.048',
'20160525 13:30:00.049',
'20160525 13:30:00.072',
'20160525 13:30:00.075']),
'ticker': ['GOOG', 'MSFT', 'MSFT','MSFT', 'GOOG', 'AAPL', 'GOOG','MSFT'],
'bid': [720.50, 51.95, 51.97, 51.99,720.50, 97.99, 720.50, 52.01],
'ask': [720.93, 51.96, 51.98, 52.00,720.93, 98.01, 720.88, 52.03]},
columns=['time', 'ticker', 'bid', 'ask'])
trades
tiempo | ticker | precio | cantidad | |
---|---|---|---|---|
0 | 2016-05-25 13:30:00.023 | MSFT | 51.95 | 75 |
1 | 2016-05-25 13:30:00.038 | MSFT | 51.95 | 155 |
2 | 2016-05-25 13:30:00.048 | GOOG | 720.77 | 100 |
3 | 2016-05-25 13:30:00.048 | GOOG | 720.92 | 100 |
4 | 2016-05-25 13:30:00.048 | AAPL | 98.00 | 100 |
quotes
tiempo | ticker | oferta | pregunte a | |
---|---|---|---|---|
0 | 2016-05-25 13:30:00.023 | GOOG | 720.50 | 720.93 |
1 | 2016-05-25 13:30:00.023 | MSFT | 51.95 | 51.96 |
2 | 2016-05-25 13:30:00.030 | MSFT | 51.97 | 51.98 |
3 | 2016-05-25 13:30:00.041 | MSFT | 51.99 | 52.00 |
4 | 2016-05-25 13:30:00.048 | GOOG | 720.50 | 720.93 |
5 | 2016-05-25 13:30:00.049 | AAPL | 97.99 | 98.01 |
6 | 2016-05-25 13:30:00.072 | GOOG | 720.50 | 720.88 |
7 | 2016-05-25 13:30:00.075 | MSFT | 52.01 | 52.03 |
df_merge_asof = pd.merge_asof(trades, quotes,
on='time',
by='ticker')
df_merge_asof
tiempo | ticker | precio | cantidad | oferta | pregunte a | |
---|---|---|---|---|---|---|
0 | 2016-05-25 13:30:00.023 | MSFT | 51.95 | 75 | 51.95 | 51.96 |
1 | 2016-05-25 13:30:00.038 | MSFT | 51.95 | 155 | 51.97 | 51.98 |
2 | 2016-05-25 13:30:00.048 | GOOG | 720.77 | 100 | 720.50 | 720.93 |
3 | 2016-05-25 13:30:00.048 | GOOG | 720.92 | 100 | 720.50 | 720.93 |
4 | 2016-05-25 13:30:00.048 | AAPL | 98.00 | 100 | NaN | NaN |
Si observa atentamente, podrá darse cuenta de la razón por la que aparece NaN en la fila del teletipo AAPL. Como las cotizaciones del DataFrame derecho no tenían ningún valor de hora inferior a 13:30:00.048 (la hora de la tabla izquierda) para el ticker AAPL, se introdujeron NaNs en las columnas bid y ask.
También puede establecer un nivel de tolerancia predefinido para la columna de tiempo. Supongamos que sólo desea una fusión asof dentro de los 2 ms entre la hora de cotización y la hora de negociación, entonces tendrá que especificar el argumento de tolerancia:
df_merge_asof_tolerance = pd.merge_asof(trades, quotes,
on='time',
by='ticker',
tolerance=pd.Timedelta('2ms'))
df_merge_asof_tolerance
tiempo | ticker | precio | cantidad | oferta | pregunte a | |
---|---|---|---|---|---|---|
0 | 2016-05-25 13:30:00.023 | MSFT | 51.95 | 75 | 51.95 | 51.96 |
1 | 2016-05-25 13:30:00.038 | MSFT | 51.95 | 155 | NaN | NaN |
2 | 2016-05-25 13:30:00.048 | GOOG | 720.77 | 100 | 720.50 | 720.93 |
3 | 2016-05-25 13:30:00.048 | GOOG | 720.92 | 100 | 720.50 | 720.93 |
4 | 2016-05-25 13:30:00.048 | AAPL | 98.00 | 100 | NaN | NaN |
Observa la diferencia entre el resultado anterior y el anterior. Las filas no se fusionan si la tolerancia de tiempo no coincide con 2ms.
Conclusión
En este tutorial, ha aprendido a concatenar y fusionar DataFrames basados en varias lógicas utilizando las funciones concat() y merge() de la librería pandas. Hacia el final, también practicó la función especial merge_asof() para fusionar DataFrames de series temporales. Por el camino, también aprendiste a jugar con los índices de los DataFrames. Hay varias otras opciones que puedes explorar para unir DataFrames en pandas, y te animo a que eches un vistazo a su fantástica documentación. ¡Feliz exploración!
Este tutorial utilizó esta documentación de pandas para ayudar a escribirlo.
Si quieres aprender más sobre pandas, sigue el curso de Fundamentos de pandas de DataCamp y echa un vistazo a nuestro Tutorial de Pandas sobre DataFrames en Python.
DataCamp también tiene otros tutoriales útiles sobre pandas, entre los que se incluyen:
- Importar datos CSV en pandas
- Añadir columnas en pandas
- Ordenación de valores en pandas
- Eliminación de duplicados en pandas con
drop_duplicates
¡Feliz aprendizaje!
Más información sobre Python y pandas
Course
Data Manipulation with pandas
Course
Joining Data with pandas
tutorial
Tutorial de Pandas: DataFrames en Python
tutorial
Tutorial seleccionar columnas con Python
DataCamp Team
7 min
tutorial
Tutorial de pandas en Python: la guía definitiva para principiantes
tutorial
Tutorial de bucles For en Python
tutorial
Tutorial de visualización de datos con Python y Tableau
tutorial