Preprocesamiento de datos de Python: limpieza de datos, integración de datos, transformación de datos, reducción de datos

Al realizar el análisis de datos, es necesario realizar un preprocesamiento de datos en los datos que ingresan al algoritmo del modelo por adelantado. Por lo general, muchos de los datos que recibimos son "datos sucios", que pueden contener valores faltantes, valores atípicos, valores repetidos, etc. Al mismo tiempo, las etiquetas o características válidas deben revisarse más para obtener datos válidos y, finalmente, el original. los datos se procesan para cumplir con los estándares de entrada de algoritmos del modelo relevante para el análisis y pronóstico de datos. Los cuatro pasos básicos de procesamiento en el preprocesamiento de datos se describen a continuación: 

Tabla de contenido

 1. Limpieza de datos

1. Valores faltantes

1.1 Visualización de valores perdidos

1.2 Procesamiento de valores perdidos

2. Valores atípicos

2.1 Visualización de valores atípicos

2.2 Identificación de valores atípicos

2.3 Procesamiento de valores atípicos

3. Valores duplicados

3.1 Procesamiento de valor duplicado

2. Integración de datos

1. Use la función de combinación para combinar datos

2. Utilice la función concat para la conexión de datos

3. Use la función combine_first para combinar datos

3. Transformación de datos

1. Normalización de características

1.1 Normalización de la suma

1.2 Normalización de la desviación estándar

1.3 Normalización del valor máximo

1.4 Estandarización de rango (método de escala de intervalo, estandarización 0-1, normalización de valor máximo)

2. Binarización de características

3. Transformación continua de características

4. Codificación tonta de características cualitativas: codificación One-hot

4. Reducción de datos (selección de funciones)


1. Limpieza de datos

La limpieza de datos se ocupa principalmente de los valores faltantes, los valores atípicos y los valores repetidos en los datos originales, para que los datos comiencen a "limpiarse".

1. Valores faltantes

1.1 Visualización de valores perdidos

Usando la biblioteca faltante en python, esta biblioteca debe descargarse e importarse

#提前进行这一步:pip install missingno
#导入相关库
import missingno as msno
import pandas as pd
import numpy as np

Método de visualización 1: Visualización intensiva de datos de matrices no válidas

#读取文件
df=pd.read_csv('C:/Users/27812/Desktop/1-Advertising.csv')

#缺失值的无效矩阵的数据密集显示
fig1=msno.matrix(df,labels=True)
b=fig1.get_figure() 
b.savefig('C:/Users/27812/Desktop/a.png',pdi=500)#保存图片

Nota: La barra horizontal blanca representa el valor faltante y la parte negra representa la parte valorada

 Método de visualización 2: use la visualización simple no válida de columnas

#缺失值的条形图显示
fig2=msno.bar(df)
b=fig2.get_figure() 
b.savefig('C:/Users/27812/Desktop/b.png',pdi=500)#保存图片

 1.2 Procesamiento de valores perdidos

Método 1: cuando la tasa de faltantes es baja y la importancia es alta, use la función fillna en pandas para completar.

Método 2: cuando la tasa de faltantes es alta y la importancia es baja, puede usar la función dropna en pandas para eliminar directamente.

Método 3: cuando la tasa de faltantes es alta y la importancia es alta, use la imputación o el modelado. Los métodos de interpolación incluyen: método de interpolación aleatoria, método de interpolación múltiple, método de interpolación de plataforma térmica, método de interpolación lagrangiana, método de interpolación de Newton, etc.; método de modelado: use regresión, bayesiano, árbol de decisión y otros modelos para corregir los datos faltantes para predecir.

2. Valores atípicos

Las fuentes de valores atípicos se dividen principalmente en errores humanos y errores naturales, tales como: errores de entrada de datos, errores de medición, valores atípicos intencionales, errores de muestreo, valores atípicos naturales, errores de procesamiento de datos, etc.

2.1 Visualización de valores atípicos

Utilice principalmente la biblioteca seaborn en python para dibujar diagramas de caja y ver valores atípicos. Consulte

2.2 Identificación de valores atípicos

Método 1: método de puntuación Z

# 通过Z-Score方法判断异常值,阙值设置为正负2
# 复制一个用来存储Z-score得分的数据框,常用于原始对象和复制对象同时进行操作的场景
df_zscore = df.copy()    
for col in all_colums: 
    df_col = df[col]  
    z_score = (df_col - df_col.mean()) / df_col.std()  # 计算每列的Z-score得分
    df_zscore[col] = z_score.abs() > 2  # 判断Z-score得分绝对值是否大于2,大于2即为异常值
print(df_zscore)#显示为True的表示为异常值
# 剔除异常值所在的行
print(df[df_zscore['列名一'] == False])
print(df[df_zscore['列名二'] == False])
print(df[df_zscore['列名三'] == False])

Método 2: Detección de valores atípicos basada en la distribución normal (3 \parcialprincipios)

#查看是否服从正态分布
# pvalue大于0.05则认为数据呈正态分布
from scipy import stats
mean = df['列名一'].mean()
std = df['列名一'].std()
print(stats.kstest(df['列名一'],'norm',(mean,std)))
# 选取小于3个标准差的数据
df = df[np.abs(df['列名一']- mean) <= 3*std]
#若不成正态分布,用远离平均值的多少倍标准差来筛选异常值
# 定义远离平均值4倍标准差为异常值
a = mean + std*4
b = mean - std*4
df = df[(df['Age'] <= a) & (df['Age'] >= b)]

Método 3: análisis de diagrama de caja (método de cuartiles)

# 算出上界和下届
q1 = df["列名一"].quantile(0.25)
q3 = df["列名一"].quantile(0.75)
iqr = q3 - q1
bottom = q1 - 1.5*iqr
upper = q3 + 1.5*iqr

# 去除异常值
df[(df['列名一'] >= bottom) & (df['列名一'] <= upper)]

Método 4: análisis estadístico simple

Utilice principalmente la función de descripción en pandas para ver

#读取文件
df=pd.read_csv('C:/Users/27812/Desktop/1-Advertising.csv')
print(df.describe())

2.3 Procesamiento de valores atípicos

Método 1: cuando hay pocos valores atípicos, se pueden eliminar

Método 2: Sin procesamiento (ver si el algoritmo es sensible a los valores atípicos)

Método 3: use el valor promedio en su lugar

Método 4: Trátelo como un valor faltante y procéselo de la misma manera que el valor faltante

3. Valores duplicados

3.1 Procesamiento de valor duplicado

Use la función duplicada en pandas para deduplicar

#查看是否有重复值
print(df[columns].nunique())
#检测重复值
print(df.duplicated())#出现为TRUE的则是重复值
#提取重复值
print(df[df.duplicated()])
#如果有重复值,则用df.drop_duplicated()方法去重

2. Integración de datos

La integración de datos es la concentración lógica o física de datos de diferentes fuentes, formatos y características, a fin de proporcionar un intercambio de datos completo para las empresas.

Use pandas para fusionar datos:

1. Use la función de combinación para combinar datos

import pandas as pd
symble=pd.DataFrame({'cat':['a','b','c','d'],'color':['red','yellow','blue','black']})
age=pd.DataFrame({'cat':['a','b','c','d'],'age':[2,4,6,8]})
print(pd.merge(symble, age))
'''结果如下
  cat   color  age
0   a     red    2
1   b  yellow    4
2   c    blue    6
3   d   black    8
'''

2. Utilice la función concat para la conexión de datos

import pandas as pd
symble=pd.DataFrame({'cat':['a','b','c','d'],'color':['red','yellow','blue','black']})
age=pd.DataFrame({'cat':['a','b','c','d'],'age':[2,4,6,8]})
print(pd.concat([symble,age],axis=0))
'''结果如下
  cat   color  age
0   a     red  NaN
1   b  yellow  NaN
2   c    blue  NaN
3   d   black  NaN
0   a     NaN  2.0
1   b     NaN  4.0
2   c     NaN  6.0
3   d     NaN  8.0
'''

3. Use la función combine_first para combinar datos

Esta función requiere que los dos DataFrames combinados tengan índices duplicados

import pandas as pd
symble=pd.DataFrame({'cat':['a','b','c','d'],'color':['red','yellow','blue','black']})
age=pd.DataFrame({'cat':['a','b','c','d'],'age':[2,4,6,8]})
print(symble.combine_first(age))
'''结果如下
   age cat   color
0    2   a     red
1    4   b  yellow
2    6   c    blue
3    8   d   black
'''

3. Transformación de datos

La transformación de datos consiste en estandarizar los datos para la posterior extracción de información. Las transformaciones de datos comunes incluyen: normalización de características, binarización de características, transformación continua de características, codificación ficticia de características cualitativas, etc.

El módulo Preprocessing (preprocesamiento) en la biblioteca sklearn de python contiene casi todo el contenido del preprocesamiento de datos.

1. Normalización de características

La normalización de características también se denomina datos adimensionales e incluye principalmente: estandarización de suma, estandarización de desviación estándar, estandarización de valor máximo y estandarización de rango. Nota: Los métodos basados ​​en árboles no requieren la normalización de funciones, como GBDT, bagging, boosting, etc., mientras que los modelos basados ​​en parámetros o modelos basados ​​en la distancia requieren la normalización de funciones.

1.1 Normalización de la suma

La suma de datos normalizados está entre (0,1) y su suma es 1. Los pasos y la fórmula de la estandarización de la suma también son muy simples: calcular la suma de los datos definidos por cada elemento de agrupación por separado y dividir los datos de cada elemento por la suma de los datos de este elemento.

1.2 Normalización de la desviación estándar

La desviación estándar son los nuevos datos obtenidos después del procesamiento estandarizado, el valor promedio de cada elemento (indicador) es 0 y la desviación estándar o varianza es 1.

from sklearn import preprocessing
x_scale=preprocessing.scale(df)

1.3 Normalización del valor máximo

Maximice los nuevos datos después de la normalización, el valor máximo de cada elemento es 1 y los otros elementos son menores que 1. (diseñado para datos de matriz dispersos)

1.4 Estandarización de rango (método de escala de intervalo, estandarización 0-1, normalización de valor máximo)

Para los nuevos datos después de la estandarización del rango, el valor máximo de cada elemento es 1, el valor mínimo es 0 y el resto de los valores están entre 0 y 1. Si hay valores atípicos en los datos, el efecto de estandarización de la media y la varianza de los datos no es bueno. En este momento, se pueden usar robust_scale y RobustScaler en su lugar. Tienen parámetros que son más sólidos para el centrado y el escalado de datos.

from sklearn import preprocessing
min_max_scaler=preprocessing.MinMaxScaler()
x_minmax=min_max_scaler.fit_transform(df)#极差标准化
#对后面测试数据进行训练
x_test_minmax=min_max_scaler.transform(df_test)

2. Binarización de características

El núcleo de la binarización de funciones es establecer un umbral, comparar la función con el umbral y convertirlo en 0 o 1. Su propósito es convertir métricas numéricas detalladas continuas en métricas detalladas.

from sklearn.preprocessing import Binarizer
Binarizer=Binarizer(threshold=20).fit_transform(df)#阈值设置视情况而定

3. Transformación continua de características

Hay tres métodos comunes de transformación continua de características: transformación de datos basada en polinomios, transformación de datos basada en funciones exponenciales y transformación de datos basada en funciones logarítmicas. La transformación continua de características puede aumentar las características no lineales de los datos para capturar la relación entre características y aumentar efectivamente la complejidad del modelo.

4. Codificación tonta de características cualitativas: codificación One-hot

La codificación one-hot también se denomina codificación one-hot, es decir, un bit representa un estado, y en su información, para características discretas, hay tantos bits como estados, y solo el bit del estado es 1, y los otros bits son todos 0.

from sklearn.preprocessing import OneHotEncoder
enc=OneHotEncoder().fit_transform(df['列名'])

4. Reducción de datos (selección de funciones)

La reducción de datos se refiere a reducir la cantidad de datos tanto como sea posible mientras se mantiene la apariencia original de los datos tanto como sea posible. Hay dos enfoques principales para la reducción de datos: selección de atributos y muestreo de datos, respectivamente para atributos y registros en el conjunto de datos original.

Estrategias para la reducción de datos:

1. Agregación de cubos de datos: las operaciones de agregación se aplican a los datos del conjunto de datos.

2. Reducción de dimensiones: Puede detectar y eliminar atributos o dimensiones irrelevantes, poco relevantes o redundantes.

3. Compresión de datos: los conjuntos de datos se comprimen mediante mecanismos de codificación.

4. Reducción numérica: reemplace o estime datos con representaciones alternativas de datos más pequeños, como modelos paramétricos (solo es necesario almacenar parámetros de calibración, no datos reales) o métodos no paramétricos, como agrupación, muestreo y uso de imágenes de histogramas.

5. Discretización y producción jerárquica de conceptos: el valor original del atributo se reemplaza con un valor de intervalo o un concepto de nivel superior, y la jerarquía de conceptos permite extraer datos en múltiples capas de abstracción, lo que es una herramienta poderosa para la minería de datos.

Supongo que te gusta

Origin blog.csdn.net/weixin_57501965/article/details/126834269
Recomendado
Clasificación