10 необходимых командных инструментов Linux для специалистов по данным

10 необходимых командных инструментов Linux для специалистов по данным


Если вы только начинаете свой путь в науке о данных, вы можете думать, что это всё о Python библиотеках, Jupyter ноутбуках и сложных алгоритмах машинного обучения, и хотя всё это определённо важно, есть мощный набор инструментов, который часто недооценивают: скромная командная строка.

Я провел более десяти лет, работая с системами Linux, и могу сказать вам, что освоение этих инструментов командной строки значительно упростит вашу жизнь. Они быстрые, эффективные и часто являются самым быстрым способом просмотреть ваши данные, очистить файлы или автоматизировать повторяющиеся задачи.

Чтобы сделать этот учебник практическим и интерактивным, мы будем использовать пример набора данных о продажах в электронной коммерции на протяжении всей статьи. Позвольте сначала показать вам, как его создать, а затем мы исследуем его с помощью всех 10 инструментов.

Создать пример файла:

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 

А теперь давайте исследуем этот файл с помощью наших 10 основных инструментов!

1. grep – Ваш инструмент для поиска по шаблону

Думайте о команде grep как о вашем детективе по данным: она ищет в файлах и находит строки, соответствующие указанным вами шаблонам, что чрезвычайно полезно при работе с большими журналами или текстовыми наборами данных.

Пример 1: Найдите все заказы от Джона Смита.

grep "John Smith" sales_data.csv 

Пример 2: Посчитайте, сколько у нас заказов на ноутбуки.

grep -c "Laptop" sales_data.csv 

Пример 3: Найдите все заказы, которые НЕ выполнены.

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

Пример 4: Найдите заказы с номерами строк.

grep -n "Electronics" sales_data.csv | head -5 

grep: Самый простой способ поиска по текстовым файлам

2. awk – Швейцарский нож для обработки текста

awk похож на мини-язык программирования, предназначенный для обработки текста, который идеально подходит для извлечения определённых столбцов, выполнения вычислений и преобразования данных на лету.

Пример 1: Извлеките только названия продуктов и их цены.

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

Пример 2: Рассчитайте общий доход от всех заказов.

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

Пример 3: Показать заказы, где цена больше 100 долларов.

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

Пример 4: Рассчитайте среднюю цену по категориям.

awk -F',' 'NR>1 {     category[$5]+=$7     count[$5]++ }  END {     for (cat in category)          printf "%s: $%.2fn", cat, category[cat]/count[cat] }' sales_data.csv 

Использование awk для обработки данных в командной строке

3. sed – Потоковый редактор для быстрых правок

sed — это ваш основной инструмент для операций поиска и замены, а также для преобразования текста. Это похоже на выполнение «найти и заменить» в текстовом редакторе, но с командной строки и гораздо быстрее.

Пример 1: Замените значения NULL на «Неизвестно».

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

Пример 2: Удалите строку заголовка.

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

Пример 3: Измените “completed” на “Готово“.

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

Пример 4: Добавьте знак доллара перед всеми ценами.

sed 's/,([0-9]*.[0-9]*),/,$,/g' sales_data.csv | head -4 

sed: самый быстрый способ найти и заменить текст

4. cut – Простое извлечение столбца

Хотя awk является мощным инструментом, иногда нужен что-то простое и быстрое, и тут на помощь приходит команда cut, которая специально предназначена для извлечения столбцов из файлов с разделителями.

Пример 1: Извлеките имена клиентов и продукты.

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

Пример 2: Извлеките только столбец с регионом.

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

Пример 3: Получите идентификатор заказа, товар и статус.

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

cut: Извлечь столбцы из файлов

5. сортировать – Организуйте свои данные

Сортировка данных является основой анализа, и команда sort выполняет это чрезвычайно эффективно, даже с файлами, которые слишком велики, чтобы поместиться в оперативной памяти.

Пример 1: Сортировать по имени клиента в алфавитном порядке.

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

Пример 2: Сортировать по цене (от высокой к низкой).

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

Пример 3: Сортировать по региону, затем по цене.

sort -t',' -k8,8 -k7,7rn sales_data.csv | grep -v "order_id" | head -8 

сортировка: Сортировка больших файлов данных

6. uniq – Найти и посчитать уникальные значения

Команда uniq помогает определить уникальные значения, посчитать количество вхождений и найти дубликаты, что похоже на облегчённую версию value_counts() в pandas.

uniq работает только с отсортированными данными, поэтому обычно его используют вместе с sort через pipe.

Пример 1: Подсчитайте заказы по регионам.

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

Пример 2: Подсчитайте заказы по категориям продуктов.

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

Пример 3: Определите, какие клиенты совершили несколько покупок.

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

Пример 4: Показать уникальные заказанные продукты.

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

uniq: Найти, Посчитать и Отфильтровать Уникальные Данные

7. wc – Подсчет слов (и не только)

Не позволяйте названию вас обмануть: wc (подсчет слов) полезен не только для подсчета слов, это ваш инструмент для быстрой статистики.

Пример 1: Посчитайте общее количество заказов (за вычетом заголовка).

wc -l sales_data.csv 

Пример 2: Посчитайте, сколько заказов на электронику.

grep "Electronics" sales_data.csv | wc -l 

Пример 3: Подсчитайте общее количество символов в файле.

wc -c sales_data.csv 

Пример 4: Несколько статистик одновременно.

wc sales_data.csv 

wc: Подсчет слов, строк и не только

8. head и tail – Просмотр ваших данных

Вместо того чтобы открывать огромный файл, используйте команду head, чтобы увидеть первые несколько строк, или tail, чтобы увидеть последние несколько.

Пример 1: Просмотрите первые 5 заказов.

head -6 sales_data.csv 

Пример 2: Просматривайте только заголовки столбцов.

head -1 sales_data.csv 

Пример 3: Просмотреть последние 5 заказов.

tail -5 sales_data.csv 

Пример 4: Пропустите заголовок и просмотрите данные

tail -n +2 sales_data.csv | head -3 

Быстрый просмотр файлов с помощью команд Head и Tail

9. find – Поиск файлов по различным каталогам

При работе над проектами часто требуется находить файлы, разбросанные по различным каталогам, и команда find для этого невероятно эффективна.

Сначала давайте создадим реалистичную структуру каталогов:

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 

Пример 1: Найдите все CSV файлы.

find data_project -name "*.csv" 

Пример 2: Найдите файлы, изменённые за последнюю минуту.

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

Пример 3: Найдите и посчитайте строки во всех CSV-файлах.

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

Пример 4: Найдите файлы размером больше 1 КБ.

find data_project -type f -size +1k 

Быстро находите файлы в разных каталогах с помощью команды find

10. jq – выдающийся обработчик JSON

В современной науке о данных большое количество информации поступает через API, которые обычно отправляют данные в формате JSON — структурированном способе организации информации.

Хотя такие инструменты, как grep, awk и sed, отлично подходят для поиска и обработки обычного текста, jq создан специально для работы с данными JSON.

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

Давайте сначала преобразуем некоторые наши данные в формат 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 

Пример 1: Красиво форматировать JSON.

jq '.' sales_sample.json 

Пример 2: Извлеките все имена клиентов.

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

Пример 3: Отфильтруйте заказы на сумму более 100 долларов.

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

Пример 4: Преобразовать в формат CSV.

jq -r '.orders[] | [.order_id, .customer, .product, .price] | @csv' sales_sample.json 

Преобразовать данные в формат JSON

Бонус: Сочетание инструментов с пайпами

Вот где настоящая магия происходит: вы можете объединять эти инструменты с помощью конвейеров (|), чтобы создавать мощные конвейеры обработки данных.

Пример 1: Найдите 10 самых распространённых слов в текстовом файле:

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

Пример 2: Анализировать журналы веб-сервера:

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

Пример 3: Быстрое исследование данных:

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

Практический пример рабочего процесса

Позвольте показать вам, как эти инструменты работают вместе на реальном примере. Представьте, что у вас есть большой CSV-файл с данными о продажах, и вы хотите:

  • Удалите заголовок.
  • Извлеките столбцы с названием продукта и ценой.
  • Найдите 10 самых дорогих товаров.

Вот однострочник:

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

Разбирая это по частям:

  • tail -n +2: Пропустить строку заголовка.
  • cut -d',' -f2,5: Извлечь столбцы 2 и 5.
  • sort -t',' -k2 -rn: Сортировать по второму полю, численно, в обратном порядке.
  • head -10: Показать первые 10 результатов.
Заключение

Эти 10 инструментов командной строки подобны швейцарскому ножу для работы с данными. Они быстрые, эффективные, и как только вы привыкнете к ним, вы будете постоянно использовать их, даже когда работаете над проектами на Python.

Начните с основ: head, tail, wc и grep. Как только эти команды станут для вас естественными, добавьте к своему арсеналу cut, sort и uniq. В конце освоите более сложные инструменты: awk, sed и jq.

Помните, вам не нужно запоминать всё. Сохраните этот гид в закладках и обращайтесь к нему, когда вам понадобится конкретный инструмент. Со временем эти команды станут вашей второй натурой.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *