Función Pandas pd.ead_csv()
read_csv()Es la función de lectura de datos más utilizada en la biblioteca pandas; se usa para leer datos de archivos CSV (valores separados por comas) y crear un DataFrame.
El archivo CSV es un formato de intercambio de datos simple y ampliamente utilizado; almacena datos tabulares en texto plano, cada fila representa un registro y los campos están separados por comas.read_csv()Puede analizar inteligentemente archivos CSV, identificar automáticamente nombres de columnas y tipos de datos, y manejar varios delimitadores y problemas de codificación.
Sintaxis básica y parámetros
Formato de sintaxis
pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer',
names=None, index_col=None, usecols=None, dtype=None,
skiprows=None, nrows=None, na_values=None, ...)
Descripción de parámetros
| Parámetro | Tipo | Descripción | Valor predeterminado |
|---|---|---|---|
| filepath_or_buffer | str, objeto de ruta o objeto tipo archivo | Ruta del archivo CSV, URL u objeto de archivo | Obligatorio |
| sep | str | Delimitador de campos; por defecto es la coma en CSV | ',' |
| header | int, list of int, 'infer' | Número de fila que se usa como nombres de columnas; 0 indica la primera fila | 'infer' |
| names | list-like | Lista personalizada de nombres de columnas | None |
| index_col | int, str, list of int, list of str, False | Columna utilizada como índice de filas | None |
| usecols | list-like, callable | Leer solo las columnas especificadas | None |
| dtype | dict | Especificar el tipo de datos de las columnas, por ejemplo {'a': np.float64} | None |
| skiprows | list-like, int | Saltar las filas especificadas | None |
| nrows | int | Leer solo las primeras n filas | None |
| na_values | scalar, str, list-like, dict | Valores reconocidos como NA/NaN | None |
| encoding | str | Codificación del archivo, como 'utf-8' | None |
Valor de retorno
- Tipo de retorno:
pd.DataFrame - Devuelve una estructura de datos bidimensional etiquetada, es decir, un DataFrame de pandas, sobre el cual se pueden realizar diversas operaciones de análisis y procesamiento de datos.
Ejemplos
A través de los siguientes ejemplos, domina completamenteread_csv()de sus diversos usos.
Ejemplo 1: Leer un archivo CSV local
Primero crea un archivo CSV simple y luego usaread_csv()léelo.
Ejemplo
# Crear un archivo CSV de ejemplo
# Primero escribir algunos datos de prueba
data = """name,age,city,salary
Tom,28,Beijing,8000
Jerry,35,Shanghai,12000
Mike,42,Guangzhou,15000
Lucy,26,Shenzhen,7000
"""
# Escribir los datos en un archivo (en el uso real se puede leer directamente un archivo existente)
with open('employees.csv', 'w', encoding='utf-8') as f:
f.write(data)
# Usar read_csv para leer el archivo CSV
# filepath_or_buffer: ruta del archivo (obligatorio)
df = pd.read_csv('employees.csv')
# Ver el resultado de la lectura
print("DataFrame leído:")
print(df)
print("nTipo de datos:")
print(df.dtypes)
print("nNombres de columnas:", df.columns.tolist())
Resultado esperado:
读取的 DataFrame:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
2 Mike 42 Guangzhou 15000
3 Lucy 26 Shenzhen 7000
数据类型:
name object
age int64
city object
salary int64
列名: ['name', 'age', 'city', 'salary']
Análisis del código:
pd.read_csv('employees.csv')Es el uso más básico; basta con pasar la ruta del archivo.- Por defecto, la primera fila se identifica automáticamente como nombres de columnas (header='infer').
- pandas infiere automáticamente el tipo de datos de cada columna: las cadenas se convierten en object, los enteros en int64.
- El DataFrame devuelto se puede usar directamente para
print()verlo, y también se puede realizar análisis de datos posteriores.
Ejemplo 2: Personalizar nombres de columnas y seleccionar columnas específicas
En el trabajo real, es posible que necesitemos personalizar los nombres de las columnas, o leer solo algunas columnas para mejorar el rendimiento.
Ejemplo
# Crear datos de prueba
data = """name,age,city,salary,department
Tom,28,Beijing,8000,IT
Jerry,35,Shanghai,12000,HR
Mike,42,Guangzhou,15000,Sales
Lucy,26,Shenzhen,7000,IT
"""
with open('employees2.csv', 'w', encoding='utf-8') as f:
f.write(data)
# Ejemplo 2a: Personalizar nombres de columnas
# El parámetro names se usa para especificar nuevos nombres de columnas; reemplaza los nombres originales del archivo
df_custom = pd.read_csv('employees2.csv', names=['Nombre', 'Edad', 'Ciudad', 'Salario', 'Departamento'], header=0)
print("DataFrame con nombres de columnas personalizados:")
print(df_custom)
print()
# Ejemplo 2b: Leer solo las columnas especificadas
# El parámetro usecols puede especificar qué columnas leer, mejorando el rendimiento
df_partial = pd.read_csv('employees2.csv', usecols=['name', 'salary'])
print("Leyendo solo algunas columnas:")
print(df_partial)
print()
# Ejemplo 2c: Usar index_col para especificar la columna de índice
df_indexed = pd.read_csv('employees2.csv', index_col='name')
print("Establecer name como índice:")
print(df_indexed)
Resultado esperado:
自定义列名后的 DataFrame:
姓名 年龄 城市 薪资 部门
0 Tom 28 Beijing 8000 IT
1 Jerry 35 Shanghai 12000 HR
2 Mike 42 Guangzhou 15000 Sales
3 Lucy 26 Shenzhen 7000 IT
只读取部分列:
name salary
0 Tom 8000
1 Jerry 12000
2 Mike 15000
3 Lucy 7000
设置 name 为索引:
age city salary department
name
Tom 28 Beijing 8000 IT
Jerry 35 Shanghai 12000 HR
Mike 42 Guangzhou 15000 Sales
Lucy 26 Shenzhen 7000 IT
Análisis del código:
namesEl parámetro debe ser consistente con el número de columnas de los datos; si el archivo tiene una fila de encabezado, se puede configurarheader=0para usar el encabezado original.usecolsSe puede pasar una lista de nombres de columnas (recomendado) o una lista de índices de columnas; el orden de las columnas devueltas coincide con el orden especificado.index_colEstablecer una columna como índice de filas facilita consultas rápidas por índice posteriormente.
Ejemplo 3: Manejar datos especiales y completar el manejo de valores faltantes
En los archivos CSV pueden existir valores faltantes, delimitadores especiales o la necesidad de omitir ciertas filas.
Ejemplo
# Crear un archivo CSV con datos especiales
# Usar punto y coma como delimitador, incluye valores faltantes y valores NA
data = """name;age;city;salary
Tom;28;Beijing;8000
Jerry;;Shanghai;12000
Mike;42;Guangzhou;
Lucy;26;NA;7000
"""
with open('employees3.csv', 'w', encoding='utf-8') as f:
f.write(data)
# Ejemplo 3a: Leer archivos separados por punto y coma
df_semicolon = pd.read_csv('employees3.csv', sep=';')
print("Usando punto y coma como delimitador:")
print(df_semicolon)
print("Estadísticas de valores faltantes:")
print(df_semicolon.isnull())
print()
# Ejemplo 3b: Especificar qué valores se consideran valores faltantes
df_na = pd.read_csv('employees3.csv', sep=';', na_values=['NA', 'missing'])
print("Después de personalizar los valores NA:")
print(df_na)
print()
# Ejemplo 3c: Saltar filas y limitar el número de filas leídas
# Supongamos que las primeras líneas del archivo son comentarios; se pueden omitir
data_with_comment = """# Este es un archivo de datos de empleados
# Fecha de creación: 2024-01-01
name;age;city;salary
Tom;28;Beijing;8000
Jerry;35;Shanghai;12000
Mike;42;Guangzhou;15000
Lucy;26;Shenzhen;7000
"""
with open('employees4.csv', 'w', encoding='utf-8') as f:
f.write(data_with_comment)
# skiprows omite las dos primeras líneas (líneas de comentario)
df_skip = pd.read_csv('employees4.csv', sep=';', skiprows=2)
print("Después de omitir las líneas de comentario:")
print(df_skip)
print()
# nrows lee solo las primeras 3 filas
df_nrows = pd.read_csv('employees4.csv', sep=';', skiprows=2, nrows=3)
print("Leyendo solo las primeras 3 filas:")
print(df_nrows)
Resultado esperado:
使用分号分隔符:
name age city salary
0 Tom 28.0 Beijing 8000.0
1 Jerry NaN Shanghai 12000.0
2 NaN 42.0 Guangzhou NaN
3 Lucy 26.0 NA 7000.0
缺失值统计:
name age city salary
0 False False False False
1 False True False False
2 True False False True
3 False False False False
自定义 NA 值后:
name age city salary
0 Tom 28.0 Beijing 8000.0
1 Jerry NaN Shanghai 12000.0
2 NaN 42.0 Guangzhou NaN
3 Lucy 26.0 NaN 7000.0
跳过注释行后:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
42 Guangzhou 15000
2 Mike
3 Lucy 26 Shenzhen 7000
只读取前3行:
name age city salary
0 Tom 28 Beijing 800本地
1 Jerry 35 Shanghai 12000
2 Mike 42 Guangzhou 15000
Análisis del código:
sepEl parámetro puede especificar cualquier delimitador, como punto y coma, tabulador, etc.- Por defecto, cadenas vacías, espacios, etc. se reconocen como valores faltantes. Se puede
na_valuespersonalizar los valores considerados NA mediante el parámetro. skiprowsSe puede omitir un número específico de líneas al inicio del archivo, lo que facilita el manejo de archivos con comentarios.nrowsLimitar el número de filas leídas es adecuado para la lectura por partes de archivos grandes.
Notas
- Al leer archivos grandes, se puede considerar usar
chunksizeel parámetro de lectura por partes para evitar memoria insuficiente. - Al manejar archivos en chino, es necesario especificar correctamente
encodingel parámetro; las codificaciones comunes son 'utf-8', 'gbk', 'gb2312', etc. - Si el archivo CSV no tiene fila de encabezado, debe configurarse
header=None, y luego mediantenamesel parámetro para especificar los nombres de las columnas. - Para archivos CSV con formato no estándar, puede ser necesario ajustar
sep、quotechary otros parámetros para analizarlos correctamente.
Resumen
read_csv()Es la función de lectura de datos más básica e importante en pandas. Es potente y admite múltiples delimitadores, nombres de columnas personalizados, configuración de índices, manejo de valores faltantes y otras funciones avanzadas.
En el trabajo real de análisis de datos, dominarread_csv()el uso de sus diversos parámetros permite manejar eficientemente archivos CSV de varios formatos, sentando una base sólida para la limpieza y análisis de datos posterior. Se recomienda al lector practicar más y dominar estos parámetros comunes.
Funciones comunes de Pandas