Función Pandas pd.ead_csv()

Python math 模块Funciones comunes de Pandas


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ámetroTipoDescripciónValor predeterminado
filepath_or_bufferstr, objeto de ruta o objeto tipo archivoRuta del archivo CSV, URL u objeto de archivoObligatorio
sepstrDelimitador de campos; por defecto es la coma en CSV','
headerint, list of int, 'infer'Número de fila que se usa como nombres de columnas; 0 indica la primera fila'infer'
nameslist-likeLista personalizada de nombres de columnasNone
index_colint, str, list of int, list of str, FalseColumna utilizada como índice de filasNone
usecolslist-like, callableLeer solo las columnas especificadasNone
dtypedictEspecificar el tipo de datos de las columnas, por ejemplo {'a': np.float64}None
skiprowslist-like, intSaltar las filas especificadasNone
nrowsintLeer solo las primeras n filasNone
na_valuesscalar, str, list-like, dictValores reconocidos como NA/NaNNone
encodingstrCodificació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

import pandas as pd

# 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 paraprint()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

import pandas as pd

# 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

import pandas as pd

# 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 puedena_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 usarchunksizeel parámetro de lectura por partes para evitar memoria insuficiente.
  • Al manejar archivos en chino, es necesario especificar correctamenteencodingel parámetro; las codificaciones comunes son 'utf-8', 'gbk', 'gb2312', etc.
  • Si el archivo CSV no tiene fila de encabezado, debe configurarseheader=None, y luego mediantenamesel parámetro para especificar los nombres de las columnas.
  • Para archivos CSV con formato no estándar, puede ser necesario ajustarsep、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.

Python math 模块Funciones comunes de Pandas

Otras extensiones