Leer un CSV y agrupar los datos para evaluar el volumen de información y ver cuántos registros hay por categoría.
Read a CSV and group the data to evaluate information volume and see how many records exist by category.
Este ejercicio es solo para aprendizaje y pruebas. No ejecutes scripts contra datos reales, ambientes de producción, carpetas compartidas, sistemas críticos o repositorios empresariales sin autorización, respaldos, pruebas previas, permisos mínimos, control de cambios y cumplimiento de los protocolos de ciberseguridad de tu organización.
This exercise is for learning and testing only. Do not run scripts against real data, production environments, shared folders, critical systems, or enterprise repositories without authorization, backups, prior testing, least-privilege permissions, change control, and compliance with your organization's cybersecurity protocols.
Crear un diagnóstico inicial de un archivo CSV para entender rápidamente cómo se distribuyen los registros por una columna clave, como Departamento, Estado, Ciudad, Categoría o cualquier otro campo de clasificación.
Create an initial diagnosis of a CSV file to quickly understand how records are distributed by a key column such as Department, Status, City, Category, or any other classification field.
| EmployeeID | Nombre | Departamento | Status |
|---|---|---|---|
| 1001 | Ana Perez | Finance | Active |
| 1002 | John Smith | IT | Active |
| 1003 | Maria Lopez | HR | Inactive |
| 1004 | Robert Diaz | Finance | Active |
| 1005 | Linda Torres | IT | Active |
Import-Csv "C:\Data\Maestro.csv" | Group-Object Departamento -NoElement | Sort-Object Count -Descending
| Departamento | Count |
|---|---|
| Finance | 2 |
| IT | 2 |
| HR | 1 |
# ==========================================================
# PowerShell Advanced Topic 16
# Generate a Quick Data Profiling Report
# ==========================================================
$inputFile = "C:\Data\Maestro.csv"
$outputFile = "C:\Data\Data_Profiling_Report.csv"
# Column to analyze
$profileColumn = "Departamento"
# Import data
$datos = Import-Csv $inputFile
# Validate that the selected column exists
$columns = $datos[0].PSObject.Properties.Name
if ($columns -notcontains $profileColumn) {
Write-Host "Column not found: $profileColumn"
Write-Host "Available columns:"
$columns
exit
}
# Generate profiling summary
$profile = $datos |
Group-Object $profileColumn -NoElement |
Sort-Object Count -Descending |
Select-Object `
@{Name="CampoAnalizado"; Expression={$profileColumn}},
@{Name="Valor"; Expression={$_.Name}},
@{Name="CantidadRegistros"; Expression={$_.Count}},
@{Name="Porcentaje"; Expression={
"{0:N2}%" -f (($_.Count / $datos.Count) * 100)
}}
# Export profiling report
$profile | Export-Csv $outputFile -NoTypeInformation -Encoding UTF8
# Show result in console
$profile | Format-Table -AutoSize
Write-Host "Data profiling completed."
Write-Host "Output file: $outputFile"Esta versión permite crear un reporte de perfilamiento para varias columnas categóricas en una sola ejecución.
This version creates a profiling report for multiple categorical columns in one execution.
# ==========================================================
# Multi-column Data Profiling Report
# ==========================================================
$inputFile = "C:\Data\Maestro.csv"
$outputFile = "C:\Data\Data_Profiling_MultiColumn_Report.csv"
$columnsToProfile = @("Departamento", "Status")
$datos = Import-Csv $inputFile
$resultado = foreach ($col in $columnsToProfile) {
if ($datos[0].PSObject.Properties.Name -contains $col) {
$datos |
Group-Object $col -NoElement |
Sort-Object Count -Descending |
Select-Object `
@{Name="CampoAnalizado"; Expression={$col}},
@{Name="Valor"; Expression={$_.Name}},
@{Name="CantidadRegistros"; Expression={$_.Count}},
@{Name="Porcentaje"; Expression={
"{0:N2}%" -f (($_.Count / $datos.Count) * 100)
}}
}
else {
Write-Host "Column not found: $col"
}
}
$resultado | Export-Csv $outputFile -NoTypeInformation -Encoding UTF8
$resultado | Format-Table -AutoSize
Write-Host "Multi-column profiling completed."
Write-Host "Output file: $outputFile"Este patrón permite entender rápidamente la estructura básica de un archivo. Antes de limpiar, transformar o automatizar datos, un reporte de profiling ayuda a detectar concentraciones, categorías raras, valores inconsistentes y posibles problemas de calidad.
This pattern helps quickly understand the basic structure of a file. Before cleaning, transforming, or automating data, a profiling report helps detect concentrations, rare categories, inconsistent values, and potential quality issues.