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
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
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
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() в 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
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 – Просмотр ваших данных
Вместо того чтобы открывать огромный файл, используйте команду 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 "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
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
Бонус: Сочетание инструментов с пайпами
Вот где настоящая магия происходит: вы можете объединять эти инструменты с помощью конвейеров (|), чтобы создавать мощные конвейеры обработки данных.
Пример 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.
Помните, вам не нужно запоминать всё. Сохраните этот гид в закладках и обращайтесь к нему, когда вам понадобится конкретный инструмент. Со временем эти команды станут вашей второй натурой.











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