Funciones comunes de Pandas
A continuación se enumeran algunas funciones comunes de Pandas y ejemplos de uso:
Leer datos
| Función | Descripció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
# 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ón | Descripció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.shape | Muestra 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
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))
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ón | Descripció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()
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ón | Descripció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)
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ón | Descripció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()
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ón | Descripció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')
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ón | Descripció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')
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ón | Descripció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ón | Descripció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
}
]
{
"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()
# 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