Funciones comunes de Pandas

A continuación se enumeran algunas funciones comunes de Pandas y ejemplos de uso:

Leer datos

FunciónDescripción
pd.read_csv(filename)Leer archivo CSV;
pd.read_excel(filename)Leer archivo Excel;
pd.read_sql(query, connection_object)Leer datos desde una base de datos SQL;
pd.read_json(json_string)Leer datos desde una cadena JSON;
pd.read_html(url)Leer datos desde una página HTML.

Ejemplo

import pandas as pd

# Leer datos del archivo CSV
df = pd.read_csv('data.csv')

# Leer datos del archivo Excel
df = pd.read_excel('data.xlsx')

# Leer datos de la base de datos SQL
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql('SELECT * FROM table_name', conn)

# Leer datos de una cadena JSON
json_string = '{"name": "John", "age": 30, "city": "New York"}'
df = pd.read_json(json_string)

# Leer datos de una página HTML
url = 'https://www.example.com'
dfs = pd.read_html(url)
df = dfs[0] # Seleccionar el primer DataFrame

Ver datos

FunciónDescripción
df.head(n)Muestra las primeras n filas de datos;
df.tail(n)Muestra las últimas n filas de datos;
df.info()Muestra información de los datos, incluyendo nombres de columnas, tipos de datos, valores faltantes, etc.;
df.describe()Muestra estadísticas básicas de los datos, incluyendo media, varianza, máximo, mínimo, etc.;
df.shapeMuestra el número de filas y columnas de los datos.

Ejemplo

# Mostrar las primeras cinco filas de datos
df.head()

# Mostrar las últimas cinco filas de datos
df.tail()

# Mostrar información de los datos
df.info()

# Mostrar estadísticas básicas
df.describe()

# Mostrar el número de filas y columnas de los datos
df.shape

Ejemplo

import pandas as pd

data = [
    {"name": "Google", "likes": 25, "url": "https://www.google.com"},
    {"name": "Ejemplo", "likes": 30, "url": "https://www.example.com"},
    {"name": "Taobao", "likes": 35, "url": "https://www.taobao.com"}
]

df = pd.DataFrame(data)
# Mostrar las primeras dos filas de datos
print(df.head(2))
# Mostrar la última fila de datos
print(df.tail(1))

El resultado de salida de los ejemplos anteriores es:

     name  likes                     url
0  Google     25  https://www.google.com
1  Ejemplo     30  https://www.example.com
     name  likes                     url
2  Taobao     35  https://www.taobao.com

Limpieza de datos

FunciónDescripción
df.dropna()Elimina filas o columnas que contengan valores faltantes;
df.fillna(value)Reemplaza los valores faltantes por un valor especificado;
df.replace(old_value, new_value)Reemplaza un valor especificado por un nuevo valor;
df.duplicated()Comprueba si hay datos duplicados;
df.drop_duplicates()Elimina datos duplicados.

Ejemplo

# Eliminar filas o columnas con valores faltantes
df.dropna()

# Reemplazar los valores faltantes por un valor especificado
df.fillna(0)

# Reemplazar un valor especificado por un nuevo valor
df.replace('old_value', 'new_value')

# Comprobar si hay datos duplicados
df.duplicated()

# Eliminar datos duplicados
df.drop_duplicates()

Selección y corte de datos

FunciónDescripción
df[column_name]Selecciona columnas especificadas;
df.loc[row_index, column_name]Selecciona datos por etiqueta;
df.iloc[row_index, column_index]Selecciona datos por posición;
df.ix[row_index, column_name]Selecciona datos por etiqueta o posición;
df.filter(items=[column_name1, column_name2])Selecciona columnas especificadas;
df.filter(regex='regex')Selecciona columnas cuyos nombres coincidan con una expresión regular;
df.sample(n)Selecciona aleatoriamente n filas de datos.

Ejemplo

# Seleccionar las columnas especificadas
df['column_name']

# Seleccionar datos por etiqueta
df.loc[row_index, column_name]

# Seleccionar datos por posición
df.iloc[row_index, column_index]

# Seleccionar datos por etiqueta o posición
df.ix[row_index, column_name]

# Seleccionar las columnas especificadas
df.filter(items=['column_name1', 'column_name2'])

# Seleccionar columnas cuyos nombres coincidan con una expresión regular
df.filter(regex='regex')

# Seleccionar aleatoriamente n filas de datos
df.sample(n=5)

Ordenación de datos

FunciónDescripción
df.sort_values(column_name)Ordena por los valores de una columna especificada;
df.sort_values([column_name1, column_name2], ascending=[True, False])Ordena por los valores de varias columnas;
df.sort_index()Ordena por índice.

Ejemplo

# Ordenar por los valores de una columna especificada
df.sort_values('column_name')

# Ordenar por los valores de varias columnas
df.sort_values(['column_name1', 'column_name2'], ascending=[True, False])

# Ordenar por índice
df.sort_index()

Agrupación y agregación de datos

FunciónDescripción
df.groupby(column_name)Agrupa según una columna especificada;
df.aggregate(function_name)Realiza operaciones de agregación sobre los datos agrupados;
df.pivot_table(values, index, columns, aggfunc)Genera una tabla dinámica.

Ejemplo

# Agrupar según una columna especificada
df.groupby('column_name')

# Realizar operaciones de agregación sobre los datos agrupados
df.aggregate('function_name')

# Generar una tabla dinámica
df.pivot_table(values='value', index='index_column', columns='column_name', aggfunc='function_name')

Combinación de datos

FunciónDescripción
pd.concat([df1, df2])Combina varios DataFrames por filas o columnas;
pd.merge(df1, df2, on=column_name)Combina dos DataFrames según una columna especificada.

Ejemplo

# Combinar varios DataFrames por filas o columnas
df = pd.concat([df1, df2])

# Combinar dos DataFrames según una columna especificada
df = pd.merge(df1, df2, on='column_name')

Selección y filtrado de datos

FunciónDescripción
df.loc[row_indexer, column_indexer]Selecciona filas y columnas por etiqueta.
df.iloc[row_indexer, column_indexer]Selecciona filas y columnas por posición.
df[df['column_name'] > value]Selecciona filas que cumplen una condición en una columna.
df.query('column_name > value')Selecciona filas que cumplen una condición en una columna usando una expresión de cadena.

Estadísticas y descripción de datos

FunciónDescripción
df.describe()Calcula estadísticas básicas, como media, desviación estándar, mínimo, máximo, etc.
df.mean()Calcula la media de cada columna.
df.median()Calcula la mediana de cada columna.
df.mode()Calcula la moda de cada columna.
df.count()Calcula el número de valores no faltantes en cada columna.

Ejemplo

Supongamos que tenemos los siguientes datos JSON, guardados en eldata.jsonarchivo:

Archivo data.json

[
  {
    "name": "Alice",
    "age": 25,
    "gender": "female",
    "score": 80
  },
  {
    "name": "Bob",
    "age": null,
    "gender": "male",
    "score": 90
  },
  {
    "name": "Charlie",
    "age": 30,
    "gender": "male",
    "score": null
  },
  {
    "name": "David",
    "age": 35,
    "gender": "male",
    "score": 70
  }
]

Podemos usar Pandas para leer los datos JSON y realizar operaciones como limpieza y procesamiento de datos, selección y filtrado de datos, estadísticas y descripción de datos, de la siguiente manera:

Ejemplo

import pandas as pd

# Leer datos JSON
df = pd.read_json('data.json')

# Eliminar valores faltantes
df = df.dropna()

# Rellenar los valores faltantes con un valor especificado
df = df.fillna({'age': 0, 'score': 0})

# Renombrar nombres de columnas
df = df.rename(columns={'name': 'Nombre', 'age': 'Edad', 'gender': 'Sexo', 'score': 'Calificación'})

# Ordenar por calificación
df = df.sort_values(by='Calificación', ascending=False)

# Agrupar por sexo y calcular la edad promedio y la calificación promedio
grouped = df.groupby('Sexo').agg({'Edad': 'mean', 'Calificación': 'mean'})

# Seleccionar las filas con calificación mayor o igual a 90, y conservar solo las columnas de nombre y calificación
df = df.loc[df['Calificación'] >= 90, ['Nombre', 'Calificación']]

# Calcular estadísticas básicas de cada columna
stats = df.describe()

# Calcular la media de cada columna
mean = df.mean()

# Calcular la mediana de cada columna
median = df.median()

# Calcular la moda de cada columna
mode = df.mode()

# Calcular el número de valores no faltantes en cada columna
count = df.count()

El resultado de salida es el siguiente:

# df
   姓名  年龄 性别  成绩
1  Bob   0  male  90

# grouped
             年龄  成绩
性别                
female  25.000000  80
male    27.500000  80

# stats
         成绩
count   1.0
mean   90.0
std     NaN
min    90.0
25%    90.0
50%    90.0
75%    90.0
max    90.0

# mean
成绩    90.0
dtype: float64

# median
成绩    90.0
dtype: float64

# mode
    姓名    成绩
0  Bob  90.0

# count
姓名    1
成绩    1
dtype: int64
Otras extensiones