Pandas: manipulación de datos en Python
Guía de referencia básica de la librería Pandas de Python
Tip: Puedes ver este post en GitHub o ejecutarlo en Binder o Google Colab, pulsa el icono.
Fuentes:
Cursos Machine Learning - Kaggle
import pandas as pd
Dataframe: Es una tabla. Index = lista de nombres de filas
tabla=pd.DataFrame({'España': [100, 150,80],
'Portugal': [120, 130,75],
'Francia': [90, 105,46],
'color': ['rojo', 'verde','rojo'],
'id': ['a23', 'b34','a12']},
index=['Producto A', 'Producto B', 'Producto C'])
tabla
datos = pd.read_csv("../tabla.csv")
Series: Es un Dataframe de una columna
pd.Series([1, 2, 3, 4, 5]) # el indice de fila empieza por 0
columna= pd.Series([100, 150,80], index=['Producto A', 'Producto B', 'Producto C'], name='España')
columna
tabla.shape,columna.shape
tabla.head()
tabla.España # = tabla['España']
tabla['España'][0]
tabla.iloc[0,:]
tabla.iloc[[0, 1], [1, 2]] # 0:10 = 0..9
tabla.loc[:,'Portugal'] # 0:10 = 0..10
tabla.set_index('id') # cambia la columna indice de la tabla
tabla.color == 'rojo'
tabla.loc[(tabla.color == 'rojo') & (tabla.Portugal < 120)]
tabla.loc[tabla.color.isin(['rojo'])]
tabla.loc[tabla.Francia.notnull()]
tabla['Francia'][1]=20
tabla
tabla['id']= range(len(tabla),0,-1)
tabla
tabla.describe()
print(tabla.España.mean())
print(tabla.color.unique())
tabla.color.value_counts()
tabla.Portugal.map(lambda p:p - tabla.Portugal.mean())
tabla.Portugal - tabla.Portugal.mean()
def remean_Portugal(row):
row.Portugal = row.Portugal - tabla.Portugal.mean()
return row
tabla.apply(remean_Portugal, axis='columns')
tabla.groupby('color').Portugal.min()
tabla.groupby('color').apply(lambda df: df.Portugal.iloc[0])
tabla.groupby(['color']).Portugal.agg([len, min, max])
tabla_revisada = tabla.groupby(['color', 'id']).España.agg([max])
tabla_revisada
tabla_revisada.reset_index()
tabla_revisada.sort_values(by='max', ascending=False)
tabla.sort_index()
tabla.sort_values(by=['España', 'id'])
tabla.España.dtype, tabla.color.dtype
tabla.dtypes
tabla.Francia.astype('float64') # cambiar el tipo de dato
tabla[pd.isnull(tabla.Francia)]
tabla.España.fillna("Unknown")
tabla.color.replace("rojo", "amarillo")
tabla.rename(columns={'Francia': 'Alemania'})
tabla.rename(index={'Producto A': 'Producto D'})
tabla.rename_axis("Productos", axis='rows').rename_axis("Paises", axis='columns')
canadian_youtube = pd.read_csv("../input/youtube-new/CAvideos.csv")
british_youtube = pd.read_csv("../input/youtube-new/GBvideos.csv")
pd.concat([canadian_youtube, british_youtube])
left = canadian_youtube.set_index(['title', 'trending_date'])
right = british_youtube.set_index(['title', 'trending_date'])
left.join(right, lsuffix='_CAN', rsuffix='_UK')