Tutoriales

Diez herramientas esenciales de línea de comandos de Linux para científicos de datos

Si recién está comenzando su viaje en ciencia de datos, podría pensar que esto es Pitón biblioteca, Júpiter Las computadoras portátiles y los sofisticados algoritmos de aprendizaje automático, si bien son absolutamente importantes, existe un poderoso conjunto de herramientas que a menudo se pasa por alto: la humilde línea de comandos.

He trabajado en sistemas Linux durante más de una década y puedo decirle que dominar estas herramientas de línea de comandos le hará la vida mucho más fácil. Son rápidos, eficientes y, a menudo, la forma más rápida de ver datos, limpiar archivos o automatizar tareas repetitivas.

Para que este tutorial sea práctico y fácil de seguir, utilizaremos un conjunto de datos de ventas de comercio electrónico de muestra en este artículo. Primero déjame mostrarte cómo crearlo y luego lo exploraremos usando las 10 herramientas.

Crear archivo de muestra:

cat > sales_data.csv << 'EOF'
order_id,date,customer_name,product,category,quantity,price,region,status
1001,2024-01-15,John Smith,Laptop,Electronics,1,899.99,North,completed
1002,2024-01-16,Sarah Johnson,Mouse,Electronics,2,24.99,South,completed
1003,2024-01-16,Mike Brown,Desk Chair,Furniture,1,199.99,East,completed
1004,2024-01-17,John Smith,Keyboard,Electronics,1,79.99,North,completed
1005,2024-01-18,Emily Davis,Notebook,Stationery,5,12.99,West,completed
1006,2024-01-18,Sarah Johnson,Laptop,Electronics,1,899.99,South,pending
1007,2024-01-19,Chris Wilson,Monitor,Electronics,2,299.99,North,completed
1008,2024-01-20,John Smith,USB Cable,Electronics,3,9.99,North,completed
1009,2024-01-20,Anna Martinez,Desk,Furniture,1,399.99,East,completed
1010,2024-01-21,Mike Brown,Laptop,Electronics,1,899.99,East,cancelled
1011,2024-01-22,Emily Davis,Pen Set,Stationery,10,5.99,West,completed
1012,2024-01-22,Sarah Johnson,Monitor,Electronics,1,299.99,South,completed
1013,2024-01-23,Chris Wilson,Desk Chair,Furniture,2,199.99,North,completed
1014,2024-01-24,Anna Martinez,Laptop,Electronics,1,899.99,East,completed
1015,2024-01-25,John Smith,Mouse Pad,Electronics,1,14.99,North,completed
1016,2024-01-26,Mike Brown,Bookshelf,Furniture,1,149.99,East,completed
1017,2024-01-27,Emily Davis,Highlighter,Stationery,8,3.99,West,completed
1018,2024-01-28,NULL,Laptop,Electronics,1,899.99,South,pending
1019,2024-01-29,Chris Wilson,Webcam,Electronics,1,89.99,North,completed
1020,2024-01-30,Sarah Johnson,Desk Lamp,Furniture,2,49.99,South,completed
EOF

¡Ahora exploremos este archivo usando 10 herramientas esenciales!

1. grep: tu herramienta de coincidencia de patrones

Piense en el comando grep como su detective de datos porque busca archivos y encuentra líneas que coinciden con un patrón que usted especifica, lo cual es útil cuando trabaja con archivos de registro grandes o conjuntos de datos de texto.

Ejemplo 1: Encuentra todos los pedidos de Juan Smith.

grep "John Smith" sales_data.csv

Ejemplo 2: Cuente cuántos pedidos de portátiles tenemos.

grep -c "Laptop" sales_data.csv

Ejemplo 3: Encuentra todos los pedidos pendientes.

grep -v "completed" sales_data.csv | grep -v "order_id"

Ejemplo 4: busque pedidos con números de línea.

grep -n "Electronics" sales_data.csv | head -5
grep: la forma más sencilla de buscar archivos de texto

2. awk: la navaja suiza del procesamiento de textos

awk es como un mini lenguaje de programación diseñado para el procesamiento de texto y es excelente para extraer columnas específicas, realizar cálculos y transformar datos sobre la marcha.

Ejemplo 1: Extraiga solo el nombre y el precio del producto.

awk -F',' '{print $4, $7}' sales_data.csv | head -6

Ejemplo 2: Calcule los ingresos totales de todos los pedidos.

awk -F',' 'NR>1 {sum+=$7} END {print "Total Revenue: $" sum}' sales_data.csv

Ejemplo 3: Muestra pedidos con un precio superior a $100.

awk -F',' 'NR>1 && $7>100 {print $1, $4, $7}' sales_data.csv

Ejemplo 4: Calcula el precio medio por categoría.

awk -F',' 'NR>1 {
    category[$5]+=$7
    count[$5]++
} 
END {
    for (cat in category) 
        printf "%s: $%.2f\n", cat, category[cat]/count[cat]
}' sales_data.csv
Utilice awk en la línea de comando para procesar datos
Utilice awk en la línea de comando para procesar datos

3. sed: editor de secuencias para una edición rápida

sed es la herramienta preferida para operaciones de búsqueda y reemplazo y conversión de texto. Es como hacer "buscar y reemplazar”en un editor de texto, pero desde la línea de comandos es más rápido.

Ejemplo 1: reemplazar Inválido El valor es el mismo que "desconocido".

sed 's/NULL/Unknown/g' sales_data.csv | grep "Unknown"

Ejemplo 2: elimina la fila del encabezado.

sed '1d' sales_data.csv | head -3

Ejemplo 3: Cambiar"completamente" llegar"completo".

sed 's/completed/DONE/g' sales_data.csv | tail -5

Ejemplo 4: Agregue el signo de dólar antes de todos los precios.

sed 's/,\([0-9]*\.[0-9]*\),/,$,/g' sales_data.csv | head -4
sed: la forma más rápida de buscar y reemplazar texto
sed: la forma más rápida de buscar y reemplazar texto

4. corte – extracción de columna simple

a pesar de awk Potente, a veces solo necesitas algo simple y rápido, ahí es donde entra el comando cortar, está diseñado específicamente para extraer columnas de archivos delimitados.

Ejemplo 1: Extraiga el nombre del cliente y el producto.

cut -d',' -f3,4 sales_data.csv | head -6

Ejemplo 2: Extrae solo la columna de área.

cut -d',' -f8 sales_data.csv | head -8

Ejemplo 3: Obtenga ID del pedido, producto y estado.

cut -d',' -f1,4,9 sales_data.csv | head -6
cortar: extraer columnas de un archivo
cortar: extraer columnas de un archivo

5. Ordenar: organice sus datos

Ordenar datos es fundamental para el análisis y el comando ordenar puede hacerlo de manera muy eficiente incluso si el archivo es demasiado grande para caber en la memoria.

Ejemplo 1: Ordenar alfabéticamente por nombre del cliente.

sort -t',' -k3 sales_data.csv | head -6

Ejemplo 2: Ordenar por precio (de mayor a menor).

sort -t',' -k7 -rn sales_data.csv | head -6

Ejemplo 3: Ordenar por región, luego precio.

sort -t',' -k8,8 -k7,7rn sales_data.csv | grep -v "order_id" | head -8
ordenar: ordenar archivos de big data
ordenar: ordenar archivos de big data

6. uniq: busque y cuente valores únicos

El comando uniq te ayuda a identificar valores únicos, contar apariciones y encontrar duplicados, es como una versión ligera de pandas. value_counts().

uniq Sólo funciona con datos ordenados, por lo que normalmente pipe esta relacionado con sort.

Ejemplo 1: Estadísticas de pedidos por región.

cut -d',' -f8 sales_data.csv | tail -n +2 | sort | uniq -c

Ejemplo 2: Cuente los pedidos por categoría de producto.

cut -d',' -f5 sales_data.csv | tail -n +2 | sort | uniq -c | sort -rn

Ejemplo 3: encuentre qué clientes realizaron varias compras.

cut -d',' -f3 sales_data.csv | tail -n +2 | sort | uniq -c | sort -rn

Ejemplo 4: Muestra productos únicos pedidos.

cut -d',' -f4 sales_data.csv | tail -n +2 | sort | uniq
uniq: busque, cuente y filtre datos únicos
uniq: busque, cuente y filtre datos únicos

7. wc – recuento de palabras (y más)

No dejes que el nombre te engañe, wc (Word Count) hace mucho más que contar palabras, es tu herramienta de conteo rápido.

Ejemplo 1: Cuente el número total de pedidos (menos los títulos).

wc -l sales_data.csv

Ejemplo 2: Calcula cuántos pedidos de productos electrónicos hay.

grep "Electronics" sales_data.csv | wc -l

Ejemplo 3: Cuente el número total de caracteres del archivo.

wc -c sales_data.csv

Ejemplo 4: realice múltiples estadísticas a la vez.

wc sales_data.csv
wc: Calcula el número de palabras, líneas, etc.
wc: Calcula el número de palabras, líneas, etc.

8. cabeza y cola: obtenga una vista previa de sus datos

En lugar de abrir un archivo grande, use el comando head para ver las primeras líneas o tail Mira las últimas fotos.

Ejemplo 1: Ver los primeros 5 pedidos.

head -6 sales_data.csv

Ejemplo 2: Ver sólo los encabezados de las columnas.

head -1 sales_data.csv

Ejemplo 3: Ver los últimos 5 pedidos.

tail -5 sales_data.csv

Ejemplo 4: Saltar el título y ver los datos

tail -n +2 sales_data.csv | head -3
Utilice los comandos Head y Tail para obtener una vista previa rápida de los archivos
Utilice los comandos Head y Tail para obtener una vista previa rápida de los archivos

9. buscar: localizar archivos en directorios

Cuando trabaja en proyectos, a menudo necesita buscar archivos dispersos en un directorio, y el comando de búsqueda es muy poderoso para esto.

Primero, creemos una estructura de directorio real:

mkdir -p data_project/{raw,processed,reports}
cp sales_data.csv data_project/raw/
cp sales_data.csv data_project/processed/sales_cleaned.csv
echo "Summary report" > data_project/reports/summary.txt

Ejemplo 1: Encuentra todos los archivos CSV.

find data_project -name "*.csv"

Ejemplo 2: Encuentra archivos modificados en el último minuto.

find data_project -name "*.csv" -mmin -1

Ejemplo 3: busque y cuente el número de filas en todos los archivos CSV.

find data_project -name "*.csv" -exec wc -l {} \;

Ejemplo 4: busque archivos de más de 1 KB.

find data_project -type f -size +1k
Utilice el comando de búsqueda para buscar rápidamente archivos en directorios
Utilice el comando de búsqueda para buscar rápidamente archivos en directorios

10. jq – El extraordinario procesador JSON

En la ciencia de datos moderna, mucha información proviene de las API, que normalmente envían datos a JSON Formato, una forma estructurada de organizar la información.

Aunque herramientas como esta grep, awky sed Excelente para buscar y manipular texto sin formato, jq Creado específicamente para procesar datos JSON.

sudo apt install jq    # Ubuntu/Debian
sudo yum install jq    # CentOS/RHEL

Primero convertimos algunos datos al formato JSON:

cat > sales_sample.json << 'EOF'
{
  "orders": [
    {
      "order_id": 1001,
      "customer": "John Smith",
      "product": "Laptop",
      "price": 899.99,
      "region": "North",
      "status": "completed"
    },
    {
      "order_id": 1002,
      "customer": "Sarah Johnson",
      "product": "Mouse",
      "price": 24.99,
      "region": "South",
      "status": "completed"
    },
    {
      "order_id": 1006,
      "customer": "Sarah Johnson",
      "product": "Laptop",
      "price": 899.99,
      "region": "South",
      "status": "pending"
    }
  ]
}
EOF

Ejemplo 1: JSON bastante impreso.

jq '.' sales_sample.json

Ejemplo 2: Extraiga todos los nombres de los clientes.

jq '.orders[].customer' sales_sample.json

Ejemplo 3: Filtrar pedidos superiores a $100.

jq '.orders[] | select(.price > 100)' sales_sample.json

Ejemplo 4: Convertir a formato CSV.

jq -r '.orders[] | [.order_id, .customer, .product, .price] | @csv' sales_sample.json
Convertir datos a formato JSON
Convertir datos a formato JSON

Bonificación: combine herramientas con tuberías

Aquí es donde realmente ocurre la magia: puedes vincular estas herramientas mediante tuberías (|) Cree potentes canales de procesamiento de datos.

Ejemplo 1: Encuentra las 10 palabras más comunes en un archivo de texto:

cat article.txt | tr '[:upper:]' '[:lower:]' | tr -s ' ' '\n' | sort | uniq -c | sort -rn | head -10

Ejemplo 2:Analizar registros del servidor web:

cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20

Ejemplo 3:Exploración rápida de datos:

cut -d',' -f3 sales.csv | tail -n +2 | sort -n | uniq -c

Ejemplo de flujo de trabajo real

Déjame mostrarte cómo estas herramientas funcionan juntas en un escenario del mundo real. Supongamos que tiene un archivo CSV grande que contiene datos de ventas y desea:

  • Quitar título.
  • Extraiga las columnas de nombre y precio del producto.
  • Encuentra los 10 productos más caros.

Esta es la línea:

tail -n +2 sales.csv | cut -d',' -f2,5 | sort -t',' -k2 -rn | head -10

Desglosarlo:

  • tail -n +2: omita la fila del encabezado.
  • cut -d',' -f2,5: Extraiga las columnas 2.ª y 5.ª.
  • sort -t',' -k2 -rn: Ordenar numéricamente por el segundo campo, en orden inverso.
  • head -10: muestra los primeros 10 resultados.
en conclusión

Estas 10 herramientas de línea de comandos son como tener una navaja suiza para el procesamiento de datos. Son rápidos, eficientes y una vez que se familiarice con ellos, volverá a ellos constantemente, incluso cuando esté trabajando en proyectos de Python.

Comience con lo básico: head, tail, wcy grep. Una vez que se sienta natural, agregue cut, sorty uniq a tu arsenal. Finalmente, actualice a awk, sedy jq.

Recuerde, no es necesario que lo recuerde todo. Marque esta guía como favorita y consúltela nuevamente cuando necesite una herramienta específica. Con el tiempo, estos comandos se convertirán en una segunda naturaleza.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba