Site icon ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Суббота, 29 ноября, 2025

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,2014-03-05,AndreyEx Ex,telefon,Destroyes,1,12345.67,Moscow,completed
...
EOF

 

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

 

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

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

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

grep "AndreyEx Ex" sales_data.csv

 

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

grep -c "telefon" sales_data.csv

 

Пример 3: Найдите все незавершенные заказы.

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

 

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

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

 

2. awk – Универсальный инструмент для обработки текста

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

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

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

 

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

awk -F',' 'NR>1 {sum+=$7} END {print "Общий доход: $" 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: $%.2f\n", cat, category[cat]/count[cat]
}' sales_data.csv

 

3. sed — потоковый редактор для быстрого внесения изменений

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

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

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

 

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

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

 

Пример 3: замените «завершено» на «сделано».

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

 

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

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

 

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

 

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().

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

Пример 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

 

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

 

8. Заголовок и подвал — предварительный просмотр данных

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

 

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 "Сводный отчет" > 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

 

10. jq — выдающийся процессор JSON

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

Такие инструменты, как grepawk, и 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": "AndreyEx Ex",
      "product": "telefon",
      "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": "telefon",
      "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

 

Бонус: сочетание инструментов с трубами

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

Пример 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-файл с данными о продажах и вы хотите:

 

Вот вам однострочник:

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

 

Здесь:

 

Заключение

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

Начните с основ: headtailwc, и grep. Когда вы освоите их, добавьте в свой арсенал cutsort, и uniq. Наконец, переходите на новый уровень с помощью awksed, и jq.

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

Exit mobile version