Шорты Python

Совет Python Pro: хотите использовать R / Java / C или любой язык в Python?

Python предоставляет базовый и простой способ справиться с такими требованиями, когда нам нужно переключаться между несколькими языками.

Python - это здорово. Действительно здорово.

Но со временем эта область становится / станет языковой агностикой. И большая работа ведется на многих других языках.

Хотя я по-прежнему считаю Python основным языком, я без колебаний перехожу на другой язык, если он выполняет свою работу.

Дело в том, что каждый язык эволюционировал таким образом, что в определенных областях он построил свой оплот. Например, Некоторым людям может быть проще использовать R для регрессии или построить график в R с помощью ggplot (хотя я искренне считаю, что Python прошел долгий путь в области визуализации.)

Иногда это происходит потому, что конкретная библиотека написана на Java / C, и кто-то еще не перенес ее на Python.

Но есть ли лучший способ справиться с этой постоянной неприятностью?

Мне нравится Python, потому что теперь я хорошо его понимаю. Мне легче делать так много вещей на Python, чем делать это на R, Java или Scala.

Зачем мне кодировать этапы подготовки данных в R, если я просто хочу использовать пакет линейной регрессии в R?

Или зачем мне учиться создавать диаграммы на Java, если я хочу использовать только пакет Stacknet?

Теперь у Python и R много оберток. Как я могу использовать R в Python или как я могу использовать Python в R? rpy2 и reticulate

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

В этой серии публикаций под названием Python Shorts я объясню некоторые простые конструкции, предоставляемые Python, некоторые важные советы и некоторые варианты использования, которые я регулярно придумываю в своей работе по науке о данных.

Этот пост посвящен использованию определенного пакета / библиотеки с другого языка, не оставляя при этом комфортного кодирования на нашем основном языке.

Постановка проблемы

Я начну с постановки задачи, чтобы объяснить это. Допустим, мне нужно было создать график с помощью R, но я хотел подготовить данные на Python.

Это общая проблема, с которой потенциально может столкнуться любой специалист по данным. Сделайте что-нибудь на одном языке, а затем перейдите на другой язык, чтобы заняться чем-нибудь другим.

Могу ли я сделать это, не выходя из записной книжки Jupyter? Или мой скрипт Python?

Решение

Вот как я мог этого добиться. Некоторым это может показаться хакерским, но я люблю хаки.

import pandas as pd
data=pd.read_csv("data.csv")
data = preprocess(data)
data.to_csv("data.csv",index=None)
os.system("Rscript create_visualization.R")

Команда os.system позволяет мне получить доступ к моей оболочке с помощью Python. А оболочка - это мощный инструмент в вашем распоряжении. В оболочке можно запускать практически любой язык.

Соответствующий Rscript, который будет работать в python, будет выглядеть примерно так:

data<-read.table("data.csv")
ggplot(...)
ggsave("plot.png")

Затем я могу загрузить файл png и показать его в своем блокноте Jupyter, используя что-то вроде уценки.

![alt text](plot.png "Title")

Для пользователей R, которые не хотят отказываться от комфорта R, в R также есть system команда, аналогичная os.system, которую можно использовать для запуска кода Python в R.

Заключение

os.system в Python дает нам возможность делать все без исключения в Python, позволяя нам вызывать команды оболочки из Python.

Я использовал его во многих своих проектах, где я использовал эту концепцию для отправки электронной почты с помощью Mutt. Или запустить какую-нибудь программу на Java, или повозиться.

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

Если вы хотите узнать больше о Python 3, я хотел бы назвать отличный курс Learn Intermediate level Python от Мичиганского университета. Проверьте это.

В будущем я также буду писать больше постов для начинающих. Сообщите мне, что вы думаете о сериале. Подпишитесь на меня в Medium или подпишитесь на мой блог, чтобы быть в курсе о них. Как всегда, я приветствую отзывы и конструктивную критику, и с ними можно связаться в Twitter @mlwhiz.