Логотип

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

 

Читать  Команда EGREP в Linux с примерами

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 (подсчёт слов) полезен не только для подсчёта слов, но и для быстрой обработки статистических данных.

Читать  Как отформатировать SD-карту в Linux

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

 

Читать  Как использовать команду scp в Linux

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

  • Удалите заголовок.
  • Выделите столбцы с названием товара и ценой.
  • Найдите 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.

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

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

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала