Шорты 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.