<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Data Science. Data Analytics - Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</title>
	<atom:link href="https://python.ivan-shamaev.ru/category/data-science-data-analytics/feed/" rel="self" type="application/rss+xml" />
	<link>https://python.ivan-shamaev.ru/category/data-science-data-analytics/</link>
	<description>Библиотеки обработки данных. Примеры. Строки, списки, файлы, числа, массивы. Язык программирования Python 3 - скачать</description>
	<lastBuildDate>Thu, 21 Apr 2022 21:03:58 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.5</generator>

<image>
	<url>https://python.ivan-shamaev.ru/wp-content/uploads/2019/04/cropped-data_science_python3_logo-32x32.png</url>
	<title>Data Science. Data Analytics - Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</title>
	<link>https://python.ivan-shamaev.ru/category/data-science-data-analytics/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Основы работы в Jupyter/Jupiter Notebook и JupyterLab &#8212; Python Tutorial</title>
		<link>https://python.ivan-shamaev.ru/jupiterlab-jupyter-notebook-install-python-tutorial/</link>
					<comments>https://python.ivan-shamaev.ru/jupiterlab-jupyter-notebook-install-python-tutorial/#comments</comments>
		
		<dc:creator><![CDATA[Шамаев Иван]]></dc:creator>
		<pubDate>Sun, 09 Jan 2022 08:24:40 +0000</pubDate>
				<category><![CDATA[Data Science. Data Analytics]]></category>
		<category><![CDATA[Jupyter Notebook]]></category>
		<category><![CDATA[Jupyter Python]]></category>
		<category><![CDATA[JupyterHub]]></category>
		<category><![CDATA[JupyterLab]]></category>
		<guid isPermaLink="false">https://python.ivan-shamaev.ru/?p=1414</guid>

					<description><![CDATA[<p>Что такое Jupyter Notebook (JupyterLab)? Jupyter Notebook — это среда разработки для написания и выполнения кода Python. Некоммерческая организация Project Jupyter с открытым исходным кодом поддерживает программное обеспечение. Он состоит из последовательности ячеек, каждая из которых содержит небольшой пример кода или документацию в формате Markdown. Разработчики могут выполнить ячейку и увидеть ее вывод сразу под [&#8230;]</p>
<p>Сообщение <a href="https://python.ivan-shamaev.ru/jupiterlab-jupyter-notebook-install-python-tutorial/">Основы работы в Jupyter/Jupiter Notebook и JupyterLab &#8212; Python Tutorial</a> появились сначала на <a href="https://python.ivan-shamaev.ru">Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&#038;title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" data-a2a-url="https://python.ivan-shamaev.ru/jupiterlab-jupyter-notebook-install-python-tutorial/" data-a2a-title="Основы работы в Jupyter/Jupiter Notebook и JupyterLab — Python Tutorial"></a></p><h1>Что такое Jupyter Notebook (JupyterLab)?</h1>
<p><strong>Jupyter Notebook</strong> — это среда разработки для написания и выполнения кода Python. Некоммерческая организация Project Jupyter с открытым исходным кодом поддерживает программное обеспечение. Он состоит из последовательности ячеек, каждая из которых содержит небольшой пример кода или документацию в формате Markdown. Разработчики могут выполнить ячейку и увидеть ее вывод сразу под кодом. Гениальный дизайн создает мгновенную петлю обратной связи, позволяя программисту запускать свой код и вносить в него соответствующие изменения.</p>
<p>Ячейки Jupyter Notebook также поддерживают аннотации, аудиофайлы, видео, изображения, интерактивные диаграммы и многое другое. Это еще одно важное преимущество программного обеспечения; вы можете рассказать историю с вашим кодом. Читатели могут видеть шаги, которые вы выполнили, чтобы получить результат.</p>
<p>Вы можете импортировать пакеты Python, такие как pandas, NumPy или TensorFlow, прямо в Блокнот.</p>
<blockquote><p><span style="color: #e37b36;">Jupyter Notebook</span> – это веб-оболочка для Ipython (ранее называлась IPython Notebook). Это веб-приложение с открытым исходным кодом, которое позволяет создавать и обмениваться документами, содержащими живой код, уравнения, визуализацию и разметку.<br />
Первоначально IPython Notebook ограничивался лишь Python в качестве единственного языка. Jupyter Notebook позволил использовать многие языки программирования, включая Python, R, Julia, Scala и F#.</p></blockquote>
<h1>Установка/инсталляция Jupyter Notebook &#8212; pip3 install jupyter</h1>
<h2>Install Jupyter Notebook на Ubuntu 20.14</h2>
<p>Установка классического блокнота Jupyter без виртуальной среды осуществляется очень просто. Для этого необходимо запустить 2 команды:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">pip install notebook</pre>
<p>После этого на вашей рабочей машине установится jupyter notebook. Теперь его необходимо запустить командой:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">jupyter notebook</pre>
<p>Откроется окно по адресу <a href="http://localhost:8888/tree">localhost:8888/</a></p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_python.png"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-1528" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_python.png" alt="" width="1282" height="304" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_python.png 1282w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_python-300x71.png 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_python-1024x243.png 1024w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_python-768x182.png 768w" sizes="(max-width: 1282px) 100vw, 1282px" /></a></p>
<h2>Install Jupyter Notebook на Windows</h2>
<p>Аналогично без виртуальной среды блокнот Jupyter можно установить и на винду. Запускаем команду:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">pip install notebook</pre>
<p>и после завершения установки запускаем команду:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">jupyter-notebook</pre>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_on_windows.jpeg"><img decoding="async" class="aligncenter size-full wp-image-1531" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_on_windows.jpeg" alt="" width="1070" height="226" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_on_windows.jpeg 1070w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_on_windows-300x63.jpeg 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_on_windows-1024x216.jpeg 1024w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_on_windows-768x162.jpeg 768w" sizes="(max-width: 1070px) 100vw, 1070px" /></a></p>
<h2>Установка Jupyter Notebook в Docker через Docker-Compose</h2>
<p>todo</p>
<h2>Установка Jupyter Notebook через virtual env на Windows</h2>
<p>Создаем директорию проекта, например:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">D:\#python#\#env\jupyter\</pre>
<p>Далее в этой директории создаем виртуальную среду с помощью команды:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">python3 -m venv venv</pre>
<p>или</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">python -m venv venv</pre>
<p>Далее переходим в директорию D:\#python#\#env\jupyter\venv\Scripts и запускаем activate. Должна активироваться среда venv:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">D:\#python#\#env\jupyter\venv\Scripts&gt;activate 
(venv) D:\#python#\#env\jupyter\venv\Scripts&gt;</pre>
<p>Далее запустите в активированной виртуальной среде venv установку jupyter notebook:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">(venv) D:\#python#\#env\jupyter\venv\Scripts&gt;pip install notebook
Collecting notebook
  Using cached notebook-6.4.10-py3-none-any.whl (9.9 MB)
Collecting jupyter-client&gt;=5.3.4
  Downloading jupyter_client-7.2.2-py3-none-any.whl (130 kB)
     |████████████████████████████████| 130 kB 128 kB/s
Collecting nbconvert&gt;=5
  Using cached nbconvert-6.4.5-py3-none-any.whl (561 kB)
.....
.....
.....
Installing collected packages: .....
Successfully installed .....</pre>
<p>После завершения установки внутри venv нужно подняться в корень директории jupyter и запустить jupyter-notebook:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">(venv) D:\#python#\#env\jupyter\venv\Scripts&gt;cd ..

(venv) D:\#python#\#env\jupyter\venv&gt;cd ..

(venv) D:\#python#\#env\jupyter&gt;jupyter-notebook

[I 06:14:46.674 NotebookApp] Serving notebooks from local directory: D:\#python#\#env\jupyter
[I 06:14:46.674 NotebookApp] Jupyter Notebook 6.4.10 is running at:
[I 06:14:46.678 NotebookApp] http://localhost:8888/?token=443ed7feca651de8172b6f043ea0cf42645ddbc406a784d1
[I 06:14:46.681 NotebookApp]  or http://127.0.0.1:8888/?token=443ed7feca651de8172b6f043ea0cf42645ddbc406a784d1
[I 06:14:46.682 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 06:14:46.835 NotebookApp]
    To access the notebook, open this file in a browser:
        file:///C:/Users/Ivan/AppData/Roaming/jupyter/runtime/nbserver-1952-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/?token=443ed7feca651de8172b6f043ea0cf42645ddbc406a784d1
     or http://127.0.0.1:8888/?token=443ed7feca651de8172b6f043ea0cf42645ddbc406a784d1</pre>
<p>Выглядит это так:</p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/cmd_console_venv_python_jupyter_notebook_windows.jpg"><img decoding="async" class="aligncenter size-full wp-image-1568" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/cmd_console_venv_python_jupyter_notebook_windows.jpg" alt="" width="958" height="288" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/cmd_console_venv_python_jupyter_notebook_windows.jpg 958w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/cmd_console_venv_python_jupyter_notebook_windows-300x90.jpg 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/cmd_console_venv_python_jupyter_notebook_windows-768x231.jpg 768w" sizes="(max-width: 958px) 100vw, 958px" /></a></p>
<p>Откроется окно в браузере:</p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_install_windows_virtual_environment.jpg"><img decoding="async" class="aligncenter size-full wp-image-1569" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_install_windows_virtual_environment.jpg" alt="" width="1426" height="265" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_install_windows_virtual_environment.jpg 1426w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_install_windows_virtual_environment-300x56.jpg 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_install_windows_virtual_environment-1024x190.jpg 1024w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_install_windows_virtual_environment-768x143.jpg 768w" sizes="(max-width: 1426px) 100vw, 1426px" /></a>Повторный запуск среды осуществляется из виртуальной среды (сначала ее нужно активировать).</p>
<h2>Установка Jupyter Notebook через virtual env на Ubuntu 20.14</h2>
<pre class="EnlighterJSRAW" data-enlighter-language="generic"># Создаем директорию проекта с виртуальной средой
mkdir jupyter-env

# Переходим внутрь проекта
cd jupyter-env

# Создаем среду myenv
python3 -m venv myenv

# Активируем среду
source myenv/bin/activate

# Запускаем установку jupyter 
pip install notebook

# Запускаем jupyter notebook внутри venv
jupyter notebook</pre>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_virtual_env_ubuntu_20_14.png"><img decoding="async" class="aligncenter size-full wp-image-1572" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_virtual_env_ubuntu_20_14.png" alt="" width="1079" height="235" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_virtual_env_ubuntu_20_14.png 1079w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_virtual_env_ubuntu_20_14-300x65.png 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_virtual_env_ubuntu_20_14-1024x223.png 1024w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_virtual_env_ubuntu_20_14-768x167.png 768w" sizes="(max-width: 1079px) 100vw, 1079px" /></a></p>
<h1>Как устроен Jupyter Notebook. Как работает Jupyter Notebook</h1>
<p><strong>Общий вид Jupyter Notebook</strong></p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_architecture.jpg"><img decoding="async" class="aligncenter size-full wp-image-1534" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_architecture.jpg" alt="" width="689" height="290" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_architecture.jpg 689w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_notebook_architecture-300x126.jpg 300w" sizes="(max-width: 689px) 100vw, 689px" /></a>Сначала пользователь взаимодействует с браузером, после чего на сервер Notebook отправляется запрос. Это может быть запрос <strong>HTTP</strong> или <strong>WebSocket</strong>.</p>
<p>Если код пользователя должен быть выполнен, сервер ноутбука отправляет его ядру (kernel) в сообщениях <strong>ZeroMQ</strong>. Ядро возвращает результаты выполнения.</p>
<p>Затем <strong>сервер Notebook</strong> возвращает пользователю HTML-страницу. Когда пользователь сохраняет документ, он отправляется из браузера на сервер Notebook. Сервер сохраняет его на диске в виде файла JSON с <strong>.ipynb</strong> расширением. Этот файл блокнота содержит код, выходные данные и примечания в формате markdown.</p>
<p><strong>Ядро (Kernel)</strong> ничего не знает о документе блокнота: оно просто получает отправленные ячейки кода для выполнения, когда пользователь запускает их.</p>
<p><strong>Блокноты Jupyter</strong> — это структурированные данные, которые представляют ваш код, метаданные, контент и выходные данные.</p>
<h2>IPython Kernel (Ядро IPython)</h2>
<p>Когда мы обсуждаем IPython, мы говорим о двух основных ролях:</p>
<ul>
<li>Terminal IPython как знакомый REPL.</li>
<li>Ядро IPython, которое обеспечивает вычисления и связь с внешними интерфейсами, такими как ноутбук.</li>
</ul>
<blockquote><p><strong>REPL</strong> – это форма организации простой интерактивной среды программирования в рамках средств интерфейса командной строки (REPL, от англ. Read-Eval-Print-Loop &#8212; цикл «чтение &#8212; вычисление &#8212; вывод»), которая поставляется вместе с Python. Чтобы запустить IPython, просто выполните команду ipython из командной строки/терминала.</p></blockquote>
<h3>Terminal IPython</h3>
<p>Когда вы набираете ipython, вы получаете исходный интерфейс IPython, работающий в терминале. Он делает что-то вроде этого (упрощенная модель):</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">while True:
    code = input("&gt;&gt;&gt; ")
    exec(code)</pre>
<p>Эту модель часто называют REPL или Read-Eval-Print-Loop.</p>
<h3>IPython Kernel</h3>
<p>Все остальные интерфейсы — notebook, консоль Qt, ipython console в терминале и сторонние интерфейсы — используют <strong>Python Kernel</strong>.</p>
<p><strong>Python Kernel</strong> — это отдельный процесс, который отвечает за выполнение пользовательского кода и такие вещи, как вычисление possible completions (возможных завершений). Внешние интерфейсы, такие как блокнот или консоль Qt, взаимодействуют с ядром IPython, используя сообщения JSON, отправляемые через сокеты ZeroMQ (протокол, используемый между интерфейсами и ядром IPython).</p>
<p>Основной механизм выполнения ядра используется совместно с терминалом IPython:</p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/IPython_Kernel.png"><img decoding="async" class="aligncenter size-full wp-image-1547" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/IPython_Kernel.png" alt="" width="421" height="371" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/IPython_Kernel.png 421w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/IPython_Kernel-300x264.png 300w" sizes="(max-width: 421px) 100vw, 421px" /></a></p>
<h1>Jupyter Lab</h1>
<p>Проект Jupyter приобрел большую популярность не только среди специалистов по данным, но и среди инженеров-программистов. На тот момент Jupyter Notebook был предназначен не только для работы с ноутбуком, поскольку он также поставлялся с веб-терминалом, текстовым редактором и файловым браузером. Все эти компоненты не были объединены вместе, и сообщество пользователей начало выражать потребность в более интегрированном опыте.</p>
<p>На конференции SciPy 2016 был анонсирован проект JupyterLab. Он был описан как естественная эволюция интерфейса Jupyter Notebook.</p>
<p>Кодовая база Notebook устарела, и ее становилось все труднее расширять. Стоимость поддержки старой кодовой базы и реализации новых функций поверх нее постоянно росла.</p>
<p>Разработчики учли весь опыт работы с Notebook в JupyterLab, чтобы создать надежную и чистую основу для гибкого интерактивного взаимодействия с компьютером и улучшенного пользовательского интерфейса.</p>
<h2>Ценность Jupyter Notebook/JupyterLab для аналитиков данных</h2>
<p>Разница между профессией data analyst/data scientist от разработки ПО заключается в отсутствии чёткого ТЗ на старте. Правильная постановка задачи в сфере анализа данных &#8212; это уже половина решения.</p>
<p>Первым этапом производится детальный анализ <strong>Initial Data</strong> (исходных данных) или <strong>Exploratory Data Analysis</strong> (Разведочный анализ данных), затем выдвигается одна или несколько гипотез. Эти шаги требуют значительных временных ресурсов.</p>
<p>Поэтому, понимание, как организовать процесс разработки (что нужно делать в первую очередь и чем можно будет пренебречь или исключить), начинает приходить во время разработки.</p>
<p>Исходя из этих соображений тратить силы на скурпулёзное и чистый код, git и т.д. бессмысленно &#8212; в первую очередь становится важным быстро создавать прототипы решений, ставить эксперименты над данными. Помимо этого, достигнутые результаты и обнаруженные инсайты или необычные наблюдения над данными приходится итерационно презентовать коллегам и заказчикам (внешним или внутренним). Jupyter Notebook или JupyterLab позволяет выполнять описанные задачи с помощью доступного функционала без дополнительных интеграций:</p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyterlab_example.jpg"><img decoding="async" class="aligncenter size-full wp-image-1584" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyterlab_example.jpg" alt="" width="1440" height="899" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyterlab_example.jpg 1440w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyterlab_example-300x187.jpg 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyterlab_example-1024x639.jpg 1024w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyterlab_example-768x479.jpg 768w" sizes="(max-width: 1440px) 100vw, 1440px" /></a></p>
<p>По факту, <strong>JupyterLab</strong> &#8212; это лабораторный журнал 21 века с элементами интерактивности, в котором вы можете оформить результаты работы с данными в формате markdown с использованием формул из latex. Также в JupyterLab можно писать и запускать код, вставлять в отчет картинки, отрисовывать графики, таблицы, дашборды.</p>
<h2>Установка JupyterLab на Ubuntu 20.14</h2>
<p>Установка производится одной командой</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">pip install jupyterlab</pre>
<p>После инсталляции запустите команду</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">jupyter-lab</pre>
<p>И откроется интерфейс:</p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyterlab_python.png"><img decoding="async" class="aligncenter size-full wp-image-1542" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyterlab_python.png" alt="" width="1063" height="724" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyterlab_python.png 1063w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyterlab_python-300x204.png 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyterlab_python-1024x697.png 1024w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyterlab_python-768x523.png 768w" sizes="(max-width: 1063px) 100vw, 1063px" /></a></p>
<h3>Установка JupyterLab на Windows</h3>
<p>Инсталляция и запуск на винде производится аналогично, как и на Ubuntu, командой <code class="EnlighterJSRAW" data-enlighter-language="generic">pip instal jupyterlab</code>.</p>
<h2>В чем разница между Jupyter Notebook и JupyterLab?</h2>
<p><strong>Jupyter Notebook</strong> &#8212; это интерактивная вычислительная среда с веб-интерфейсом для создания документов Jupyter Notebook. Он поддерживает несколько языков, таких как Python (IPython), Julia, R и т.д., и в основном используется для анализа данных, визуализации данных и дальнейших интерактивных исследовательских вычислений.</p>
<p><strong>JupyterLab</strong> &#8212; это пользовательский интерфейс нового поколения, включая ноутбуки. Он имеет модульную структуру, в которой вы можете открыть несколько записных книжек или файлов (например, HTML, Text, Markdowns и т.д.) в виде вкладок в одном окне. Он предлагает больше возможностей, подобных IDE.</p>
<p>Новичку я бы посоветовал начать с Jupyter Notebook, так как он состоит только из файлового браузера и представления редактора (Notebook). Это проще в использовании. Если вам нужны дополнительные функции, переключитесь на JupyterLab. JupyterLab предлагает гораздо больше функций и улучшенный интерфейс, который можно расширить с помощью расширений: <strong>JupyterLab Extensions</strong>.</p>
<p>Начиная с версии 3.0, JupyterLab также поставляется с визуальным отладчиком, который позволяет интерактивно устанавливать точки останова, переходить к функциям и проверять переменные.</p>
<p><strong>JupyterLab</strong> &#8212; это совершенно фантастический инструмент как для создания plotly фигур, так и для запуска полных приложений Dash как встроенных, в виде вкладок, так и внешних в браузере.</p>
<h1>Основы работы и обзор функциональности Jupyter Notebook</h1>
<h2>Из чего состоит Jupiter Notebook</h2>
<p>Если щелкнуть по файлу с расширением .ipynb, откроется страница с Jupiter Notebook.</p>
<p>Отображаемый Notebook представляет собой HTML-документ, который был создан Jupyter и IPython. Он состоит из нескольких ячеек, которые могут быть одного из трех типов:</p>
<ul>
<li><strong>Сode</strong> (активный программный код),</li>
<li><strong>Markdown</strong> (текст, поясняющий код, более развернутый, чем комментарий),</li>
<li><strong>Raw NBConvert</strong> (пассивный программный код).</li>
</ul>
<p><strong>Jupyter запускает ядро IPython для каждого Notebook.</strong></p>
<p>Ячейки, содержащие код Python, выполняются внутри этого ядра и результаты добавляются в тетрадку в формате HTML.</p>
<p>Двойной щелчок по любой из этой ячеек позволит отредактировать ее. По завершении редактирования содержимого ячейки, нажмите <strong>Shift + Enter</strong>, после чего <strong><span style="color: #e37b36;">Jupyter/IPython</span></strong> проанализирует содержимое и отобразит результаты.</p>
<p>Если выполняемая ячейка является ячейкой кода, это приведет к выполнению кода в ячейке и отображению любого вывода непосредственно под ним. На это указывают слова &#171;In&#187; и &#171;Out&#187;, расположенные слева от ячеек.</p>
<h2>Магические функции Jupiter Notebook</h2>
<p>Все <span style="color: #e37b36;"><strong>magic-функции</strong></span> (их еще называют <span style="color: #e37b36;"><strong>magic-командами</strong></span>) начинаются</p>
<ul>
<li>со <strong>знака %</strong>, если функция применяется <strong>к одной строке</strong>,</li>
<li>и <strong>%%</strong>, если применяется <strong>ко всей ячейке Jupyter</strong>.</li>
</ul>
<p>Чтобы получить представление о времени, которое потребуется для выполнения функции, приведенной выше, мы воспользуемся функцией <span style="color: #4161bf;"><strong>%timeit</strong></span>.</p>
<h3>%timeit</h3>
<p><strong><span style="color: #4161bf;">%timeit</span></strong> – это magic-функция, созданная специально для работы с тетрадками Jupyter. Она является полезным инструментом, позволяющим сравнить время выполнения различных функций в одной и той же системе для одного и того же набора данных.</p>
<h3>%matplotlib inline</h3>
<p><span style="color: #4161bf;"><strong>%matplotlib inline</strong></span> позволяет выводит графики непосредственно в тетрадке.</p>
<p>На экранах с высоким разрешением типа Retina графики в тетрадках Jupiter по умолчанию выглядят размытыми, поэтому для улучшения резкости используйте</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">%config InlineBackend.figure_format = 'retina'</pre>
<p>после <span style="color: #4161bf;"><strong>%matplotlib inline</strong></span>.</p>
<h2>jupyter markdown</h2>
<p>туду</p>
<h2>jupyter server</h2>
<p>туду</p>
<h2>jupyter config</h2>
<p>туду</p>
<h2>jupyter hub</h2>
<p><strong>JupyterHub</strong>: позволяет предоставлять нескольким пользователям (группам сотрудников) доступ к Notebook и другим ресурсам. Это может быть полезно для студентов и компаний, которые хотят, чтобы группа (группы) имела доступ к вычислительной среде и ресурсам и использовала их без необходимости установки и настройки. Управление которыми могут осуществлять системные администраторы. Доступ к отдельным блокнотам и JupyterLab можно получить через Hub. Hub может работать в облаке или на собственном оборудовании группы.</p>
<h2>jupyter команды</h2>
<p>туду</p>
<h2>pycharm jupyter</h2>
<p>туду</p>
<h2>Виджеты Jupyter</h2>
<p>Виджеты можно использовать для интерактивных элементов в блокнотах (например, ползунок).</p>
<p><strong>Jupyter Widgets</strong> — это событийные объекты Python, которые имеют представление в браузере, часто в виде элемента управления, такого как ползунок, текстовое поле и т. д.</p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_widgets.jpg"><img decoding="async" class="aligncenter size-full wp-image-1591" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_widgets.jpg" alt="" width="740" height="377" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_widgets.jpg 740w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_widgets-300x153.jpg 300w" sizes="(max-width: 740px) 100vw, 740px" /></a></p>
<div class="line">Вы можете использовать виджеты для создания интерактивных графических интерфейсов для своих ноутбуков.</div>
<div></div>
<div class="line">Вы также можете использовать виджеты для синхронизации информации с сохранением состояния и без сохранения состояния между <strong>Python</strong> и <strong>JavaScript</strong>.</div>
<div></div>
<div><span>Чтобы использовать структуру виджетов, вам необходимо импортировать файлы </span><code class="docutils literal notranslate"><span class="pre">ipywidgets</span></code><span>.</span></div>
<div></div>
<h3>Почему отображение одного и того же виджета дважды работает?</h3>
<p>Виджеты представлены в бэкенде одним объектом. Каждый раз, когда отображается виджет, во внешнем интерфейсе создается новое представление того же объекта. Эти представления называются представлениями.</p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_widget_kernel_frontend.jpg"><img decoding="async" class="aligncenter size-full wp-image-1594" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_widget_kernel_frontend.jpg" alt="" width="691" height="436" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_widget_kernel_frontend.jpg 691w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/jupyter_widget_kernel_frontend-300x189.jpg 300w" sizes="(max-width: 691px) 100vw, 691px" /></a></p>
<p>Несколько самых популярных виджетов:</p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/Jupyter_widget_examples.gif"><img decoding="async" class="aligncenter size-full wp-image-1597" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/Jupyter_widget_examples.gif" alt="" width="1098" height="442" /></a></p>
<p><span>Чтобы начать использовать библиотеку, нам нужно установить расширение </span><strong class="mp jv"><span>ipywidgets</span></strong><span>. Для pip это будет двухэтапный процесс: </span></p>
<ol>
<li><span>установить и </span></li>
<li><span>включить</span></li>
</ol>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension</pre>
<h1>Tips &amp; Tricks / Советы, рекомендации и фишки при работе с Jupyter Notebook</h1>
<p>todo</p>
<h1>Подборка видео по Jupyter</h1>
<h2>Как использовать Jupyter (ipython-notebook) на 100%</h2>
<p><iframe title="Как использовать Jupyter (ipython-notebook) на 100% | Технострим" width="1170" height="658" src="https://www.youtube.com/embed/q4d-hKCpTEc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<h2>Jupyter Notebook Tutorial (Eng)</h2>
<ul>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=0s">00:00</a><span class="style-scope yt-formatted-string" dir="auto"> Introduction </span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=95s">01:35</a><span class="style-scope yt-formatted-string" dir="auto"> Jupyter notebook example</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=251s">04:11</a><span class="style-scope yt-formatted-string" dir="auto"> Installing Python and Jupyter notebooks</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=563s">09:23</a><span class="style-scope yt-formatted-string" dir="auto"> Launching Jupyter notebooks</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=668s">11:08</a><span class="style-scope yt-formatted-string" dir="auto"> Basic notebook functionality</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=1258s">20:58</a><span class="style-scope yt-formatted-string" dir="auto"> The kernel, and variables</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=1718s">28:38</a><span class="style-scope yt-formatted-string" dir="auto"> Other notebook functionality </span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=2085s">34:45</a><span class="style-scope yt-formatted-string" dir="auto"> The menu</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=2152s">35:52</a><span class="style-scope yt-formatted-string" dir="auto"> Jupyter notebook keyboard shortcuts</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=2217s">36:57</a><span class="style-scope yt-formatted-string" dir="auto"> Load and display data using pandas</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=2433s">40:33</a><span class="style-scope yt-formatted-string" dir="auto"> Using terminal commands inside a Jupyter notebook</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=2550s">42:30</a><span class="style-scope yt-formatted-string" dir="auto"> Jupyter notebook magic commands</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=2707s">45:07</a><span class="style-scope yt-formatted-string" dir="auto"> Other features outside of the notebooks</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=2801s">46:41</a><span class="style-scope yt-formatted-string" dir="auto"> Shutting down Jupyter notebooks</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=2882s">48:02</a><span class="style-scope yt-formatted-string" dir="auto"> Jupyter notebook extensions and other libraries</span></li>
<li><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://www.youtube.com/watch?v=DKiI6NfSIe8&amp;t=3167s">52:47</a><span class="style-scope yt-formatted-string" dir="auto"> Conclusion, and thank you</span></li>
</ul>
<p><iframe title="Jupyter Notebook Tutorial" width="1170" height="658" src="https://www.youtube.com/embed/DKiI6NfSIe8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<h2>Jupyterlab &#8212; STOP Using Jupyter Notebook! Here&#8217;s the Better Tool</h2>
<p><iframe title="&#x1f449; STOP Using Jupyter Notebook! Here&#039;s the Better Tool" width="1170" height="658" src="https://www.youtube.com/embed/zai2pLUD9FA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p>&#8230;</p>
<p><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&amp;linkname=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fjupiterlab-jupyter-notebook-install-python-tutorial%2F&#038;title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D0%B2%20Jupyter%2FJupiter%20Notebook%20%D0%B8%20JupyterLab%20%E2%80%94%20Python%20Tutorial" data-a2a-url="https://python.ivan-shamaev.ru/jupiterlab-jupyter-notebook-install-python-tutorial/" data-a2a-title="Основы работы в Jupyter/Jupiter Notebook и JupyterLab — Python Tutorial"></a></p><p>Сообщение <a href="https://python.ivan-shamaev.ru/jupiterlab-jupyter-notebook-install-python-tutorial/">Основы работы в Jupyter/Jupiter Notebook и JupyterLab &#8212; Python Tutorial</a> появились сначала на <a href="https://python.ivan-shamaev.ru">Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://python.ivan-shamaev.ru/jupiterlab-jupyter-notebook-install-python-tutorial/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Running setup.py install for setproctitle finished with status &#8216;error&#8217;</title>
		<link>https://python.ivan-shamaev.ru/running-setup-py-install-for-setproctitle-finished-with-status-error/</link>
					<comments>https://python.ivan-shamaev.ru/running-setup-py-install-for-setproctitle-finished-with-status-error/#respond</comments>
		
		<dc:creator><![CDATA[Шамаев Иван]]></dc:creator>
		<pubDate>Fri, 12 Jun 2020 23:05:34 +0000</pubDate>
				<category><![CDATA[Data Science. Data Analytics]]></category>
		<category><![CDATA[setproctitle]]></category>
		<category><![CDATA[setproctitle error]]></category>
		<guid isPermaLink="false">https://python.ivan-shamaev.ru/?p=1214</guid>

					<description><![CDATA[<p>При установке apache-airflow pip install apache-airflow &#62;&#62; log.log&#160; Возникла ошибка&#160; Running setup.py install for setproctitle: finished with status 'error' Которая приводила к крушению процесса инсталляции Как починилось: 1. Заходим на сайт Python extension packages for Windows 2. Ищем подстроку setproctitle‑1.1, находим файл с соответствующей версией python (у меня 3.7), т.е. setproctitle-1.1.10-cp37-cp37m-win32.whl 3. Запускаем команду pip [&#8230;]</p>
<p>Сообщение <a href="https://python.ivan-shamaev.ru/running-setup-py-install-for-setproctitle-finished-with-status-error/">Running setup.py install for setproctitle finished with status &#8216;error&#8217;</a> появились сначала на <a href="https://python.ivan-shamaev.ru">Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&#038;title=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" data-a2a-url="https://python.ivan-shamaev.ru/running-setup-py-install-for-setproctitle-finished-with-status-error/" data-a2a-title="Running setup.py install for setproctitle finished with status ‘error’"></a></p><p>При установке apache-airflow</p>
<pre class="EnlighterJSRAW" data-enlighter-language="shell">pip install apache-airflow &gt;&gt; log.log&nbsp;</pre>
<p>Возникла ошибка&nbsp;</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">Running setup.py install for setproctitle: finished with status 'error'</pre>
<p>Которая приводила к крушению процесса инсталляции</p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/Running_setup_py_install_for_setproctitle_finished_with_status_error.png"><img decoding="async" src="https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/Running_setup_py_install_for_setproctitle_finished_with_status_error.png" alt="" width="1331" height="526" class="aligncenter size-full wp-image-1217" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/Running_setup_py_install_for_setproctitle_finished_with_status_error.png 1331w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/Running_setup_py_install_for_setproctitle_finished_with_status_error-300x119.png 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/Running_setup_py_install_for_setproctitle_finished_with_status_error-1024x405.png 1024w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/Running_setup_py_install_for_setproctitle_finished_with_status_error-768x304.png 768w" sizes="(max-width: 1331px) 100vw, 1331px" /></a></p>
<p>Как починилось:</p>
<p>1. Заходим на сайт <a href="http://www.lfd.uci.edu/~gohlke/pythonlibs/#setproctitle" rel="noreferrer">Python extension packages for Windows</a></p>
<p>2. Ищем подстроку setproctitle‑1.1, находим файл с соответствующей версией python (у меня 3.7), т.е. <strong>setproctitle-1.1.10-cp37-cp37m-win32.whl</strong></p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/setproctitle_1_1_download_for_error.png"><img decoding="async" src="https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/setproctitle_1_1_download_for_error.png" alt="" width="1157" height="429" class="aligncenter size-full wp-image-1218" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/setproctitle_1_1_download_for_error.png 1157w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/setproctitle_1_1_download_for_error-300x111.png 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/setproctitle_1_1_download_for_error-1024x380.png 1024w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/setproctitle_1_1_download_for_error-768x285.png 768w" sizes="(max-width: 1157px) 100vw, 1157px" /></a></p>
<p>3. Запускаем команду</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">pip install "C:\Users\User\Downloads\setproctitle-1.1.10-cp37-cp37m-win32.whl"</pre>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/successfully_installed_setproctitle_1_1_10.png"><img decoding="async" src="https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/successfully_installed_setproctitle_1_1_10.png" alt="" width="780" height="88" class="aligncenter size-full wp-image-1219" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/successfully_installed_setproctitle_1_1_10.png 780w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/successfully_installed_setproctitle_1_1_10-300x34.png 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/06/successfully_installed_setproctitle_1_1_10-768x87.png 768w" sizes="(max-width: 780px) 100vw, 780px" /></a></p>
<p>4. Запускаем повторную инсталляцию apache-airflow</p>
<p>5. Profit <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">Successfully installed apache-airflow-1.10.10 pendulum-1.4.4 pytzdata-2019.3 typing-extensions-3.7.4.2</pre>


<p></p>
<p><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&amp;linkname=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpython.ivan-shamaev.ru%2Frunning-setup-py-install-for-setproctitle-finished-with-status-error%2F&#038;title=Running%20setup.py%20install%20for%20setproctitle%20finished%20with%20status%20%E2%80%98error%E2%80%99" data-a2a-url="https://python.ivan-shamaev.ru/running-setup-py-install-for-setproctitle-finished-with-status-error/" data-a2a-title="Running setup.py install for setproctitle finished with status ‘error’"></a></p><p>Сообщение <a href="https://python.ivan-shamaev.ru/running-setup-py-install-for-setproctitle-finished-with-status-error/">Running setup.py install for setproctitle finished with status &#8216;error&#8217;</a> появились сначала на <a href="https://python.ivan-shamaev.ru">Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://python.ivan-shamaev.ru/running-setup-py-install-for-setproctitle-finished-with-status-error/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>51 Python Interview вопрос/ответ на собеседовании для Data Scientist</title>
		<link>https://python.ivan-shamaev.ru/python-job-interview-question-and-answer-for-data-scientist/</link>
					<comments>https://python.ivan-shamaev.ru/python-job-interview-question-and-answer-for-data-scientist/#respond</comments>
		
		<dc:creator><![CDATA[Шамаев Иван]]></dc:creator>
		<pubDate>Mon, 20 Apr 2020 21:11:24 +0000</pubDate>
				<category><![CDATA[Data Science. Data Analytics]]></category>
		<category><![CDATA[Введение в Python 3]]></category>
		<category><![CDATA[data scientist]]></category>
		<category><![CDATA[data scientist python]]></category>
		<category><![CDATA[Data Scientist Python Interview]]></category>
		<category><![CDATA[Python Interview]]></category>
		<category><![CDATA[вопрос/ответ data scientics]]></category>
		<category><![CDATA[вопрос/ответ на собеседовании]]></category>
		<category><![CDATA[вопросы и ответы на собеседовании Python]]></category>
		<category><![CDATA[Какие вопросы на собеседовании по Python]]></category>
		<category><![CDATA[Собеседование Python]]></category>
		<guid isPermaLink="false">https://python.ivan-shamaev.ru/?p=994</guid>

					<description><![CDATA[<p>Вопросы по Python для исследователей данных и разработчиков программного обеспечения 1. В чем разница между списком и кортежем? Этот вопрос звучит очень часто на каждом интервью по Python / Data Science. Обязательно запомните правильный ответ. Списки изменчивы. Они могут быть изменены после создания. Кортежи неизменны. Как только кортеж создан, он не может быть изменен. Списки имеют [&#8230;]</p>
<p>Сообщение <a href="https://python.ivan-shamaev.ru/python-job-interview-question-and-answer-for-data-scientist/">51 Python Interview вопрос/ответ на собеседовании для Data Scientist</a> появились сначала на <a href="https://python.ivan-shamaev.ru">Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&#038;title=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" data-a2a-url="https://python.ivan-shamaev.ru/python-job-interview-question-and-answer-for-data-scientist/" data-a2a-title="51 Python Interview вопрос/ответ на собеседовании для Data Scientist"></a></p><blockquote>
<p class="aq cl em ex eo ey eq ez es fa eu fb av">Вопросы по Python для исследователей данных и разработчиков программного обеспечения</p>
</blockquote>
<h2 id="dc1e" class="jk jl dt ar aq jm jn jo jp jq jr js jt ju jv jw jx" data-selectable-paragraph=""><span>1. В чем разница между списком и кортежем?</span></h2>
<p id="3262" class="ip iq dt ar ir b em jy eo jz iu ka iw kb iy kc ja dl" data-selectable-paragraph=""><span>Этот вопрос звучит очень часто на каждом интервью по Python / Data Science. Обязательно запомните правильный ответ.</span></p>
<ul class="">
<li id="1933" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja kd ke kf" data-selectable-paragraph=""><span>Списки изменчивы. Они могут быть изменены после создания.</span></li>
<li id="38ea" class="ip iq dt ar ir b em kg eo kh iu ki iw kj iy kk ja kd ke kf" data-selectable-paragraph=""><span>Кортежи неизменны. Как только кортеж создан, он не может быть изменен.</span></li>
<li id="9a85" class="ip iq dt ar ir b em kg eo kh iu ki iw kj iy kk ja kd ke kf" data-selectable-paragraph=""><span>Списки имеют порядок. Они представляют собой упорядоченную последовательность объектов одного типа. Т.е.: все имена пользователей упорядочены по дате создания,</span><code class="ia kl km kn ko b">["Seth", "Ema", "Eli"]</code></li>
<li id="4f79" class="ip iq dt ar ir b em kg eo kh iu ki iw kj iy kk ja kd ke kf" data-selectable-paragraph=""><span>Кортежи имеют структуру. Различные типы данных могут существовать в каждом индексе. Т.е.: запись базы данных в памяти </span><code class="ia kl km kn ko b">(2, "Ema", "2020–04–16") # id, name, created_at</code></li>
</ul>
<h2 id="3fd6" class="jk jl dt ar aq jm jn jo jp jq jr js jt ju jv jw jx" data-selectable-paragraph=""><span>2. Как выполняется интерполяция строк (string interpolation)?</span></h2>
<p id="8a6f" class="ip iq dt ar ir b em jy eo jz iu ka iw kb iy kc ja dl" data-selectable-paragraph=""><span>Без импорта </span><code class="ia kl km kn ko b">Template</code> <span>класса есть 3 способа интерполировать строки.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">name = 'Chris'

# 1. f strings
print(f'Hello {name}')

# 2. % operator
print('Hey %s %s' % (name, name))

# 3. format
print(
 "My name is {}".format((name))
)</pre>
<h2>3. В чем разница между &#171;is&#187; и &#171;==&#187;?</h2>
<p id="2ab0" class="ip iq dt ar ir b em jy eo jz iu ka iw kb iy kc ja dl" data-selectable-paragraph=""><span>Запись </span><code class="ia kl km kn ko b">is</code> <span>проверяет идентичность, а запись </span><code class="ia kl km kn ko b">==</code> <span>проверяет равенство.</span></p>
<p id="4ae3" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><span>Рассмотрим пример. Создайте несколько списков и присвойте им имена. Обратите внимание, что </span><code class="ia kl km kn ko b">b</code> <span>указывает на тот же объект, что и </span><code class="ia kl km kn ko b">a</code> <span>ниже.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">a = [1,2,3] 
b = a 
c = [1,2,3]</pre>
<p>Проверьте равенство и отметьте, что все они равны.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">print (a == b) 
print (a == c) 
# =&gt; True 
# =&gt; True</pre>
<p>Но они имеют одинаковую идентичность? Нет.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">print (a is b) 
print (a is c) 
# =&gt; True 
# =&gt; False</pre>
<p><span>Мы можем проверить это, напечатав их идентификаторы объектов.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">print(id(a))
print(id(b))
print(id(c))
#=&gt; 4369567560
#=&gt; 4369567560
#=&gt; 4369567624</pre>
<p><code class="ia kl km kn ko b">c</code><span> has a different </span><code class="ia kl km kn ko b">id</code><span> than </span><code class="ia kl km kn ko b">a</code><span> and </span><code class="ia kl km kn ko b">b</code><span>.</span></p>
<h2 class="jk jl dt ar aq jm jn jo jp jq jr js jt ju jv jw jx" data-selectable-paragraph=""><span>4. Что такое декоратор (</span>decorator)<span>?</span></h2>
<p id="cf6c" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><span>Декоратор позволяет добавить функциональность к существующей функции, передав эту существующую функцию декоратору, который выполнит её и дополнительный код. Как бы это надстройка над существующей функцией.</span></p>
<p id="f6fb" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><span>Мы напишем декоратор, который будет писать лог при вызове другой функции.</span></p>
<p id="b774" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><strong class="ir kz"><span>Напишите функцию декоратора. </span></strong><span>Декоратор принимает функцию </span><code class="ia kl km kn ko b">func</code><span>, в качестве аргумента. Он также определяет функцию </span><code class="ia kl km kn ko b">log_function_called</code>, <span>которая вызывает </span><code class="ia kl km kn ko b">func()</code><span>и выполняет некоторый код </span><code class="ia kl km kn ko b">print(f'{func} called.')</code><span>. Затем он возвращает функцию, которую он определил.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">def logging(func):
  def log_function_called():
    print(f'{func} called.')
    func()
  return log_function_called</pre>
<p><span>Давайте напишем другие функции, к которым мы затем добавим декоратор:</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">def my_name():
  print('chris')
def friends_name():
  print('naruto')

my_name()
friends_name()

#=&gt; chris
#=&gt; naruto</pre>
<p><span>Теперь добавим декоратор к обоим функциям.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">@logging
def my_name():
 print('chris')
@logging
def friends_name():
 print('naruto')

my_name()
friends_name()

#=&gt; &lt;function my_name at 0x10fca5a60&gt; called.
#=&gt; chris
#=&gt; &lt;function friends_name at 0x10fca5f28&gt; called.
#=&gt; naruto</pre>
<p><span>Посмотрите, как мы можем теперь легко добавить логирование в любую функцию, которую мы пишем, просто добавив </span><code class="ia kl km kn ko b">@logging</code> <span>над ней.</span></p>
<h2>5. Объясните, как работает функция диапазона (range function)</h2>
<p id="7521" class="ip iq dt ar ir b em jy eo jz iu ka iw kb iy kc ja dl" data-selectable-paragraph=""><span>Range генерирует список целых чисел и его можно использовать тремя способами.</span></p>
<p id="7b65" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><span>Функция принимает от 1 до 3 аргументов. Рассмотрим три случая &#8212; запись с одним, двумя и тремя аргументами.</span></p>
<p id="129e" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><code class="ia kl km kn ko b"></code><strong class="ir kz">range(stop)</strong><strong class="ir kz"><span>:</span></strong><span> генерирует целые числа от 0 до целого числа «stop».</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">for i in range(10)
#=&gt; [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]</pre>
<p data-selectable-paragraph=""><code class="ia kl km kn ko b"></code><strong class="ir kz">range(start, stop)</strong><strong class="ir kz"><span>:</span></strong><span> генерирует целые числа от «start» до «stop».</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">for i in range(2,10)
#=&gt; [2, 3, 4, 5, 6, 7, 8, 9]</pre>
<p data-selectable-paragraph=""><code class="ia kl km kn ko b"></code><strong class="ir kz">range(start, stop, step)</strong><strong class="ir kz"><span>:</span></strong><span> генерирует целые числа от «start» до «stop» с интервалами «step».</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">for i in range(2,10,2)
#=&gt; [2, 4, 6, 8]</pre>
<p>Во всех случаях stop (верхняя граница) не включается в список.</p>
<h2>6. Определите класс с именем car и с 2 свойствами, &#171;color&#187; и &#171;speed&#187;. Затем создайте экземпляр и верните свойство speed</h2>
<pre class="EnlighterJSRAW" data-enlighter-language="python">class Car :
    def __init__(self, color, speed):
        self.color = color
        self.speed = speed

car = Car('red','100mph')
car.speed

#=&gt; '100mph'</pre>
<h2>7. В чем разница между методом класса, методом экземпляра и статическим методом в Python?</h2>
<p id="0069" class="ip iq dt ar ir b em jy eo jz iu ka iw kb iy kc ja dl" data-selectable-paragraph=""><strong class="ir kz"><span>Методы экземпляра:</span></strong><span> принимают параметр </span><code class="ia kl km kn ko b">self</code> <span>и относятся к конкретному экземпляру класса.</span></p>
<p id="e033" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><strong class="ir kz"><span>Статические методы:</span></strong><span> используйте декоратор </span><code class="ia kl km kn ko b">@staticmethod</code> для методов<span>, которые не связаны с конкретными экземплярами и являются автономными (не изменяют свойств класса или экземпляра).</span></p>
<p id="87bb" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><strong class="ir kz"><span>Методы класса:</span></strong><span> принимают параметр </span><code class="ia kl km kn ko b">cls</code> <span>и могут изменять сам класс.</span></p>
<p id="b789" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><span>Проиллюстрируем разницу вокруг вымышленного </span><code class="ia kl km kn ko b">CoffeeShop</code> <span>класса.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">class CoffeeShop:
    specialty = 'espresso'
    
    def __init__(self, coffee_price):
        self.coffee_price = coffee_price
    
    # instance method
    def make_coffee(self):
        print(f'Making {self.specialty} for ${self.coffee_price}')
    
    # static method    
    @staticmethod
    def check_weather():
        print('Its sunny')

    # class method
    @classmethod
    def change_specialty(cls, specialty):
        cls.specialty = specialty
        print(f'Specialty changed to {specialty}')</pre>
<p id="266f" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><code class="ia kl km kn ko b">CoffeeShop</code> <span>У класса есть свойство </span><code class="ia kl km kn ko b">specialty</code><span>, установленное значение по умолчанию </span><code class="ia kl km kn ko b">'espresso'</code><span>. Каждый экземпляр </span><code class="ia kl km kn ko b">CoffeeShop</code> <span>инициализируется со свойством </span><code class="ia kl km kn ko b">coffee_price</code><span>. Он также имеет 3 метода: метод экземпляра, статический метод и метод класса.</span></p>
<p id="2815" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><span>Давайте инициализируем экземпляр кофейни с </span><code class="ia kl km kn ko b">coffee_price</code> <span>= </span><code class="ia kl km kn ko b">5</code><span>. Затем вызовем метод экземпляра </span><code class="ia kl km kn ko b">make_coffee</code><span>.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">coffee_shop = CoffeeShop('5')
coffee_shop.make_coffee()
#=&gt; Making espresso for $5</pre>
<p><span>Теперь вызовем статический метод. Статические методы не могут изменять класс или состояние экземпляра, поэтому они обычно используются для служебных функций. Мы используем наш ститический метод, чтобы проверить погоду. </span><code class="ia kl km kn ko b">Its sunny</code><span>.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">coffee_shop.check_weather()
#=&gt; Its sunny</pre>
<p><span>Теперь давайте используем метод класса, чтобы изменить вид кофе, а затем вызовем метод </span><code class="ia kl km kn ko b">make_coffee</code><span>.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">coffee_shop.change_specialty('drip coffee')
#=&gt; Specialty changed to drip coffee

coffee_shop.make_coffee()
#=&gt; Making drip coffee for $5</pre>
<p><span>Обратите внимание, как метод </span><code class="ia kl km kn ko b">make_coffee</code> <span>раньше изготавливал </span><code class="ia kl km kn ko b">espresso</code>, <span>но теперь делает </span><code class="ia kl km kn ko b">drip coffee</code><span>!</span></p>
<h2><strong>8. В чем разница между &#171;func&#187; и &#171;func()&#187;?</strong></h2>
<p>Цель этого вопроса &#8212; понять, знаете ли вы, что все функции также являются объектами в Python.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">def func():
    print('Im a function')
    
func
#=&gt; function __main__.func&gt;

func()    
#=&gt; Im a function</pre>
<p><code class="ia kl km kn ko b">func</code> <span>это объект, представляющий функцию, которую можно присвоить переменной или передать другой функции. </span><code class="ia kl km kn ko b">func()</code> <span>с круглыми скобками вызывает функцию и возвращает то, что находится в return.</span></p>
<h2>9. Объясните, как работает функция map()</h2>
<p><code class="ia kl km kn ko b">map</code><span> возвращает список, составленный из возвращаемых значений, от применения функции к каждому элементу в последовательности.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">def add_three(x):
    return x + 3
li = [1,2,3]
list_data = [i for i in map(add_three, li)]
print(list_data)
# [4, 5, 6]</pre>
<h2>10. Объясните, как работает функция reduce()</h2>
<p id="4e69" class="ip iq dt ar ir b em jy eo jz iu ka iw kb iy kc ja dl" data-selectable-paragraph=""><span>Эту функцию довольно сложно сразу понять, пока вы не используете её несколько раз.</span></p>
<p id="7b73" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><code class="ia kl km kn ko b">reduce</code> <span>берет функцию и последовательность и перебирает эту последовательность. На каждой итерации текущий элемент и выходные данные предыдущего элемента передаются в функцию. В конце возвращается одно значение.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">from functools import reduce

def add_three(x,y):
    return x + y

li = [1,2,3,5]

reduce(add_three, li)
#=&gt; 11</pre>
<p>Возвращается значение <code class="ia kl km kn ko b">11</code><span>, которое является суммой </span><code class="ia kl km kn ko b">1+2+3+5</code><span>.</span></p>
<h2>11. Объясните, как работает функция фильтра filter()</h2>
<p id="2a66" class="ip iq dt ar ir b em jy eo jz iu ka iw kb iy kc ja dl" data-selectable-paragraph=""><span>Функция filter() буквально делает то, о чем говорится в её названии: Фильтрует элементы в последовательности/списке.</span></p>
<p id="b800" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><span>Каждый элемент передается функции, которая возвращается в выведенной последовательности, если функция возвращается, </span><code class="ia kl km kn ko b">True</code> <span>и отбрасывается, если функция возвращается </span><code class="ia kl km kn ko b">False</code><span>.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">def add_three(x):
    if x % 2 == 0:
        return True        
    else:
        return False

li = [1,2,3,4,5,6,7,8]
new_listdata = [i for i in filter(add_three, li)]
print(new_listdata)
#=&gt; [2, 4, 6, 8]</pre>
<p><span>Обратите внимание, что все элементы, не делимые на 2, были удалены.</span></p>
<h2 id="4475" class="jk jl dt ar aq jm jn jo jp jq jr js jt ju jv jw jx" data-selectable-paragraph=""><span>12. Питон вызывает по ссылке или по значению?</span></h2>
<p id="2a49" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><span>Неизменяемые объекты, такие как строки, числа и кортежи, вызываются по значению (т.е. в функцию передается именно значение, а не ссылка на объект). Обратите внимание, что значение </span><code class="ia kl km kn ko b">name</code> <span>не изменилось вне функции при изменении внутри. Значение </span><code class="ia kl km kn ko b">name</code> <span>было назначено новому блоку в памяти для переменной этой функции.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">name = 'chr'
def add_chars(s):
    s += 'is'
    print(s)
    
add_chars(name)    
print(name)
#=&gt; chris
#=&gt; chr</pre>
<p><span>Изменяемые объекты, такие как список, вызываются по ссылке. Обратите внимание, как список, определенный вне функции, был изменен внутри функции. Параметр в функции указывает на оригинальный блок в памяти, в котором сохранено значение </span><code class="ia kl km kn ko b">li</code><span>.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">li = [1,2]
def add_element(seq):
    seq.append(3)
    print(seq)
    
add_element(li)    
print(li)
#=&gt; [1, 2, 3]
#=&gt; [1, 2, 3]</pre>
<h2 id="5c35" class="jk jl dt ar aq jm jn jo jp jq jr js jt ju jv jw jx" data-selectable-paragraph=""><span>13. Как перевернуть список?</span></h2>
<p><span>Для того, чтобы перевернуть список, необходимо вызвать функцию </span><code class="ia kl km kn ko b">reverse()</code>, которая является методом списка. Функция изменяет сам список<span>.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">li = ['a','b','c']
print(li)
li.reverse()
print(li)
#=&gt; ['a', 'b', 'c']
#=&gt; ['c', 'b', 'a']</pre>
<h2 id="578f" class="jk jl dt ar aq jm jn jo jp jq jr js jt ju jv jw jx" data-selectable-paragraph=""><span>14. Как работает умножение строк?</span></h2>
<p><span>Давайте посмотрим результаты умножения строки </span><code class="ia kl km kn ko b">'cat'</code> <span>на 3.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">'cat' * 3
#=&gt; 'catcatcat'</pre>
<p><span>Строка соединяется сама с собой 3 раза.</span></p>
<h2 id="f94a" class="jk jl dt ar aq jm jn jo jp jq jr js jt ju jv jw jx" data-selectable-paragraph=""><span>15. Как работает умножение списков?</span></h2>
<p><span>Давайте посмотрим результат умножения списка </span><code class="ia kl km kn ko b">[1,2,3]</code> <span>на 2.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">[1,2,3] * 2 
# =&gt; [1, 2, 3, 1, 2, 3]</pre>
<p><span>Выводится список, содержащий задвоенное содержимое [1,2,3].</span></p>
<h2 id="3991" class="jk jl dt ar aq jm jn jo jp jq jr js jt ju jv jw jx" data-selectable-paragraph=""><span>16. Что означает «self» в классе?</span></h2>
<p id="1d10" class="ip iq dt ar ir b em jy eo jz iu ka iw kb iy kc ja dl" data-selectable-paragraph=""><span>Self относится к экземпляру самого класса. Это то, как мы предоставляем методам доступ и возможность обновлять объект, которому они принадлежат.</span></p>
<p id="4ca7" class="ip iq dt ar ir b em is eo it iu iv iw ix iy iz ja dl" data-selectable-paragraph=""><span>Ниже передача self для </span><code class="ia kl km kn ko b">__init__()</code> <span>дает возможность установить </span><code class="ia kl km kn ko b">color</code> для <span>экземпляра при инициализации.</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">class Shirt:
    def __init__(self, color):
        self.color = color
        
s = Shirt('yellow')
s.color
#=&gt; 'yellow'</pre>
<h2 id="88a6" class="jk jl dt ar aq jm jn jo jp jq jr js jt ju jv jw jx" data-selectable-paragraph=""><span>17. Как объединить списки в Python?</span></h2>
<p>Сумма 2х списков объединяет их:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">a = [1,2]
b = [3,4,5]
c = a + b
print(c)
print(a + b)
#=&gt; [1, 2, 3, 4, 5]
#=&gt; [1, 2, 3, 4, 5]</pre>
<h2><strong>18. В чем разница между мелкой и глубокой копией (shallow copy vs. deep copy)?</strong></h2>
<p>Мы обсудим это в контексте изменяемого объекта &#8212; списка. Для неизменных объектов, shallow copy против deep copy не столь актуально.</p>
<p>Мы пройдемся по 3-м сценариям.</p>
<p><strong>1) Ссылка на оригинальный объект.</strong> Она указывает на новое имя, li2 указывает на то же место в памяти, на которое указывает li1. Таким образом, любое изменение, которое мы делаем в li1 также происходит в li2.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">li1 = [['a'],['b'],['c']]
li2 = li1
li1.append(['d'])
print(li2)
#=&gt; [['a'], ['b'], ['c'], ['d']]</pre>
<p><strong>2) Создать shallow copy оригинала.</strong> Мы можем сделать это с помощью list() конструктора или более питонического mylist.copy().<br />shallow copy создает новый объект, но заполняет его ссылками на оригинал. Таким образом, добавление нового объекта в исходную коллекцию li3 не распространяется на li4, а изменение одного из объектов li3 будет распространяться на li4.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">li3 = [['a'],['b'],['c']]
li4 = list(li3)
li3.append([4])
print(li4)
#=&gt; [['a'], ['b'], ['c']]
li3[0][0] = ['X']
print(li4)
#=&gt; [[['X']], ['b'], ['c']]</pre>
<p><strong>3) Создать deep copy.</strong> Это сделано с copy.deepcopy(). 2 объекта теперь полностью независимы, и изменения одного из них не влияют на другой список.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import copy
li5 = [['a'],['b'],['c']]
li6 = copy.deepcopy(li5)
li5.append([4])
li5[0][0] = ['X']
print(li6)
#=&gt; [['a'], ['b'], ['c']]</pre>
<h2><strong>19. В чем разница между списками и массивами?</strong></h2>
<blockquote>
<p><strong>Примечание:</strong> стандартная библиотека Python имеет объект массива, но здесь я специально ссылаюсь на обычно используемый массив Numpy.</p>
</blockquote>
<ul>
<li>Списки существуют в стандартной библиотеке Python. Массивы определены Numpy.</li>
<li>Списки могут быть заполнены различными типами данных в каждом индексе. Массивы требуют однородных элементов.</li>
<li>Арифметика в списках добавляет или удаляет элементы из списка. Арифметика на массивах &#8212; это функция линейной алгебры.</li>
<li>Массивы также используют меньше памяти и обладают значительно большей функциональностью.</li>
</ul>
<h2><strong>20. Как объединить два массива Numpy?</strong></h2>
<p>Помните, массивы &#8212; это не списки. Массивы из Numpy нельзя сложить как списки, т.к. арифметические функции переходят в разряд линейной алгебры (сложение матриц).<br />Для объединения массивов нам нужно использовать функцию сцепления Numpy.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import numpy as np

a = np.array([1,2,3])
b = np.array([4,5,6])

np.concatenate((a,b))

#=&gt; array([1, 2, 3, 4, 5, 6])</pre>
<h2><strong>21. Назовите изменяемые и неизменяемые объекты в Python</strong></h2>
<p><strong>Неизменяемые объекты</strong> &#8212; означает, что состояние не может быть изменено после создания. Примеры: <strong>int, float, bool, string и tuple</strong>.<br /><strong></strong></p>
<p><strong>Изменяемый объект</strong> &#8212; означает, что состояние может быть изменено после создания. Примерами являются <strong>list, dict и set</strong>.</p>
<h2><strong>22. Как округлить число до 3 десятичных знаков в Python?</strong></h2>
<p>Используйте функцию <strong>round(value, decimal_places)</strong>.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">a = 5.12345
round(a,3)
#=&gt; 5.123</pre>
<h2><strong>23. Как вывести кусок списка &#8212; slice a list?</strong></h2>
<p>Синтаксис <strong>slice</strong> следующий, необходимо <strong>list</strong> передать 3 аргумента, <strong>list[start:stop:step]</strong>, где <strong>step</strong> (шаг) &#8212; это интервал, через который возвращаются элементы.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">a = [0,1,2,3,4,5,6,7,8,9]
print(a[:2])
#=&gt; [0, 1]

print(a[8:])
#=&gt; [8, 9]

print(a[2:8])
#=&gt; [2, 3, 4, 5, 6, 7]

print(a[2:8:2])
#=&gt; [2, 4, 6]</pre>
<h2><strong>24. Что такое pickling (маринование)?</strong></h2>
<p><strong>Pickling</strong> &#8212; это метод сериализации и десериализации объектов в Python.</p>
<p>В приведенном ниже примере мы сериализуем и десериализуем список словарей.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import pickle
obj = [
    {'id':1, 'name':'Stuffy'},
    {'id':2, 'name': 'Fluffy'}
]
with open('file.p', 'wb') as f:
    pickle.dump(obj, f)
with open('file.p', 'rb') as f:
    loaded_obj = pickle.load(f)
print(loaded_obj)
#=&gt; [{'id': 1, 'name': 'Stuffy'}, {'id': 2, 'name': 'Fluffy'}]</pre>
<h2><strong>25. В чем разница между словарями (dictionaries) и JSON?</strong></h2>
<p><strong>Dictionary</strong> &#8212; это тип данных Python, набор проиндексированных, но неупорядоченных ключей и значений.</p>
<p><strong>JSON</strong> &#8212; это просто строка, которая следует заданному формату и предназначена для передачи данных.</p>
<h2><strong>26. Какие ORM вы использовали в Python?</strong></h2>
<p><strong>ORM (объектно-реляционное отображение или object relational mapping)</strong> отображают модели данных (обычно в приложении) в таблицы базы данных и упрощают транзакции базы данных.</p>
<p><strong>SQLAlchemy</strong> обычно используется для фреймворка Flask, а Django имеет собственный ORM.</p>
<h2><strong>27. Как работает any() и all()?</strong></h2>
<p><strong>Any()</strong> принимает последовательность и возвращает true, если какой-либо элемент в последовательности равен true.<br /><strong>All()</strong> возвращает истину, только если все элементы в последовательности истинны.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">a = [False, False, False]
b = [True, False, False]
c = [True, True, True]

print( any(a) )
print( any(b) )
print( any(c) )
#=&gt; False
#=&gt; True
#=&gt; True

print( all(a) )
print( all(b) )
print( all(c) )
#=&gt; False
#=&gt; False
#=&gt; True</pre>
<h2><strong>28. Что быстрее для поиска элемента &#8212; словарь или список в Python?</strong></h2>
<p>Поиск значения в списке занимает <strong>O(n)</strong> времени, потому что весь список необходимо перебирать до тех пор, пока значение не будет найдено.</p>
<p>Поиск ключа в словаре занимает <strong>O(1)</strong> времени, потому что это хеш-таблица.</p>
<p>Это может иметь огромное значение во времени, если значений много, поэтому словари обычно рекомендуются для скорости. Но у них есть и другие ограничения, такие как необходимость в уникальных ключах.</p>
<h2><strong>29. В чем разница между модулем и пакетом?</strong></h2>
<p><strong>Модуль</strong> &#8212; это файл (или набор файлов), который можно импортировать вместе.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import sklearn</pre>
<p><strong>Пакет</strong> &#8212; это каталог модулей.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">from sklearn import cross_validation</pre>
<p>Таким образом, пакеты являются модулями, но не все модули являются пакетами.</p>
<h2><strong>30. Как увеличить и уменьшить целое число в Python?</strong></h2>
<p>Увеличение и уменьшение может быть сделано с<strong> +=</strong> и <strong>-=.</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">value = 5

value += 1
print(value)
#=&gt; 6

value -= 1
value -= 1
print(value)
#=&gt; 4</pre>
<h2><strong>31. Как преобразовать целое число в двоичное?</strong></h2>
<p>Используйте <strong>bin()</strong> функцию.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">bin(5)
#=&gt; '0b101'</pre>
<h2><strong>32. Как удалить дубликаты элементов из списка?</strong></h2>
<p>Удалить дубликаты элементов из списка можно сделать путем преобразования списка в набор, а затем обратно в список.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">a = [1,1,1,2,3]
a = list(set(a))
print(a)

#=&gt; [1, 2, 3]</pre>
<p>Обратите внимание, что наборы не обязательно будут сохранять порядок списка.</p>
<h2><strong>33. Как проверить, существует ли значение в списке?</strong></h2>
<p>Использование <strong>in</strong>.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">'a' in ['a','b','c']
#=&gt; True

'a' in [1,2,3]
#=&gt; False</pre>
<h2><strong>34. В чем разница между дополнением и расширением?</strong></h2>
<p><strong>append</strong> добавляет значение в список, а <strong>extend</strong> добавляет в список значения из другого списка.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">a = [1,2,3]
b = [1,2,3]
a.append(6)
print(a)
#=&gt; [1, 2, 3, 6]

b.extend([4,5])
print(b)
#=&gt; [1, 2, 3, 4, 5]</pre>
<h2><strong>35. Как получить абсолютное значение (модуль) целого числа?</strong></h2>
<p>Это можно сделать с помощью abs() функции.<span class="jm jn ds as kq b fu kt ku r kv" data-selectable-paragraph=""></span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">abs(2)
#=&gt; 2

abs(-2)
#=&gt; 2</pre>
<h2><strong>36. Как объединить два списка (2 lists) в список кортежей (list of tuples)?</strong></h2>
<p>Вы можете использовать zip() функцию для объединения списков в список кортежей. Функция zip() не ограничена для объединения только 2 списков. zip() также можно вызвать с 3 или большим числом списков.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">a = ['a','b','c']
b = [1,2,3]
[(k,v) for k,v in zip(a,b)]
#=&gt; [('a', 1), ('b', 2), ('c', 3)]</pre>
<h2><strong>37. Как отсортировать словарь по ключу в алфавитном порядке?</strong></h2>
<p>Вы не можете &#171;отсортировать&#187; словарь, потому что словари не имеют порядка, но вы можете вернуть отсортированный список кортежей, в котором есть ключи и значения, которые есть в словаре.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">d = {'c':3, 'd':4, 'b':2, 'a':1}
sorted(d.items())
#=&gt; [('a', 1), ('b', 2), ('c', 3), ('d', 4)]</pre>
<h2><strong>38. Как класс наследуется от другого класса в Python?</strong></h2>
<p>В приведенном ниже примере Audi наследуется от Car. И с этим наследованием приходят методы экземпляра родительского класса (т.е. из класса Car в класс Audi).</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">class Car():
    def drive(self):
        print('vroom')

class Audi(Car):
    pass

audi = Audi()
audi.drive()</pre>
<h2><strong>39. Как можно удалить все пробелы из строки?</strong></h2>
<p>Применяем функцию replace</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">s = 'A string with     white space'
s.replace(' ', '')
#=&gt; 'Astringwithwhitespace'</pre>
<h2><strong>40. Почему следует использовать enumerate() для выполнения итерации последовательности?</strong></h2>
<p>Функция enumerate() позволяет отслеживать индекс при итерации по последовательности. Это более pythonic, чем определение и увеличение целого числа, представляющего индекс.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">li = ['a','b','c','d','e']

for idx,val in enumerate(li):
    print(idx, val)

#=&gt; 0 a
#=&gt; 1 b
#=&gt; 2 c
#=&gt; 3 d
#=&gt; 4 e</pre>
<h2><strong>41. В чем разница между pass, continue и break?</strong></h2>
<p><span style="color: #ff6600;"><strong>pass</strong></span> &#8212; значит ничего не делать. Обычно его используют, потому что Python не позволяет создавать класс, функцию или оператор if без кода внутри.<br />В приведенном ниже примере будет выдана ошибка без кода внутри <strong>i &gt; 3</strong>, поэтому следует использовать <strong>pass</strong>.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">a = [1,2,3,4,5]
for i in a:
    if i &gt; 3:
        pass
    print(i)
#=&gt; 1
#=&gt; 2
#=&gt; 3
#=&gt; 4
#=&gt; 5</pre>
<p><span style="color: #ff6600;"><strong>continue</strong></span> &#8212; переводит цикл на следующий элемент и останавливает выполнение цикла для текущего элемента. Так <strong>print(i)</strong> никогда не выполнится для значений, где <strong>i &lt; 3</strong>.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">for i in a:
    if i &lt; 3:
        continue
    print(i)
#=&gt; 3
#=&gt; 4
#=&gt; 5</pre>
<p><span style="color: #ff6600;"><strong>break</strong> </span>&#8212; прекращает цикл и последовательность больше не повторяется. Таким образом, элементы <strong>i со значения 3</strong> не выводятся.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">for i in a:
    if i == 3:
        break
    print(i)    
#=&gt; 1
#=&gt; 2</pre>
<h2><strong>42. Как перевести цикл (loop) в запись одной строки для списка (list)?</strong></h2>
<p>Рассмотрим цикл <strong>for (for loop)</strong> &#8212; Как было до</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">a = [1,2,3,4,5]
 
a2 = []
for i in a:
     a2.append(i + 1)
print(a2)
#=&gt; [2, 3, 4, 5, 6]</pre>
<p>Как можно преобразовать &#8212; Как стало после</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">a3 = [i+1 for i in a]
print(a3)
#=&gt; [2, 3, 4, 5, 6]</pre>
<p>Понимание списка обычно считается более pythonic, когда оно все еще читаемо.</p>
<h2><strong>43. Приведите пример троичного оператора (ternary operator)</strong></h2>
<p>Тернарный оператор (ternary operator) &#8212; это однострочный оператор if / else.<br />Синтаксис выглядит так <span style="color: #ff6600;"><strong>&#8216;a if condition else b&#8217;</strong></span>.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">x = 5
y = 10

'greater' if x &gt; 6 else 'less'
#=&gt; 'less'

'greater' if y &gt; 6 else 'less'
#=&gt; 'greater'</pre>
<pre class="hk hl hm hn ho kr ks ca"><span id="a45b" class="jm jn ds as kq b fu kt ku r kv" data-selectable-paragraph=""></span></pre>
<h2><strong>44. ​​Как проверить, что строка содержит только цифры?</strong></h2>
<p>Для этих целей Вы можете использовать функцию isnumeric()</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">'123a'.isnumeric()
#=&gt; False

'123'.isnumeric()
#=&gt; True</pre>
<h2><strong>45. Как проверить, что строка содержит только буквы</strong></h2>
<p>Для этих целей Вы можете использовать функцию isalpha().</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">'123a'.isalpha()
#=&gt; False

'a'.isalpha()
#=&gt; True</pre>
<h2><strong>46. Как проверить, что строка содержит только цифры и буквы</strong></h2>
<p>Для этих целей Вы можете использовать функцию isalnum().</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">'123abc...'.isalnum()
#=&gt; False

'123abc'.isalnum()
#=&gt; True</pre>
<h2><strong>47. Как вернуть список ключей из словаря</strong></h2>
<p>Это может быть сделано путем передачи словарю питона list() конструктора list()</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">d = {'id':7, 'name':'Shiba', 'color':'brown', 'speed':'very slow'}

list(d)
#=&gt; ['id', 'name', 'color', 'speed']</pre>
<h2><strong>48. Как строку преобразовать в верхний и нижний регистр?</strong></h2>
<p>Вы можете использовать строковые методы upper() и lower() для преобразования регистра</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">small_word = 'potatocake'
big_word = 'FISHCAKE'

small_word.upper()
#=&gt; 'POTATOCAKE'

big_word.lower()
#=&gt; 'fishcake'</pre>
<h2><strong>49. В чем разница между remove, del и pop?</strong></h2>
<p>remove() удаляет первое совпадающее значение</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">li = ['a','b','c','d']
li.remove('b')
li
#=&gt; ['a', 'c', 'd']</pre>
<p>del() удаляет элемент по индексу</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">li = ['a','b','c','d']
del li[0]
li
#=&gt; ['b', 'c', 'd']</pre>
<p>pop() удаляет элемент по индексу и возвращает этот элемент.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">li = ['a','b','c','d']
li.pop(2)
#=&gt; 'c'
li
#=&gt; ['a', 'b', 'd']</pre>
<h2><strong>50. Приведите пример словарного понимания (dictionary comprehension)</strong></h2>
<p>Ниже мы создадим словарь с буквами алфавита в качестве ключей и индекс в алфавите в качестве значений.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python"># creating a list of letters
import string
list(string.ascii_lowercase)
alphabet = list(string.ascii_lowercase)
# list comprehension
d = {val:idx for idx,val in enumerate(alphabet)} 
d
#=&gt; {'a': 0,
#=&gt;  'b': 1,
#=&gt;  'c': 2,
#=&gt; ...
#=&gt;  'x': 23,
#=&gt;  'y': 24,
#=&gt;  'z': 25}</pre>
<h2><strong>51. Как выполняется обработка исключений в Python?</strong></h2>
<p>Python предоставляет 3 слова для обработки исключений try, except и finally.<br />Синтаксис выглядит следующим образом.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">try:
    # try to do this
except:
    # if try block fails then do this
finally:
    # always do this</pre>
<p>В следующем примере блок try завершается ошибкой, потому что мы не можем складывать целые числа со строками. В except блоке val = 10 и затем finally блок печатает complete.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">try:
    val = 1 + 'A'
except:
    val = 10
finally:
    print('complete')
    
print(val)
#=&gt; complete
#=&gt; 10</pre>


<p></p>
<p><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&amp;linkname=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-job-interview-question-and-answer-for-data-scientist%2F&#038;title=51%20Python%20Interview%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%2F%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%B4%D0%BB%D1%8F%20Data%20Scientist" data-a2a-url="https://python.ivan-shamaev.ru/python-job-interview-question-and-answer-for-data-scientist/" data-a2a-title="51 Python Interview вопрос/ответ на собеседовании для Data Scientist"></a></p><p>Сообщение <a href="https://python.ivan-shamaev.ru/python-job-interview-question-and-answer-for-data-scientist/">51 Python Interview вопрос/ответ на собеседовании для Data Scientist</a> появились сначала на <a href="https://python.ivan-shamaev.ru">Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://python.ivan-shamaev.ru/python-job-interview-question-and-answer-for-data-scientist/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Python API Tutorial: Примеры GET POST AUTH requests (HTTP запросов)</title>
		<link>https://python.ivan-shamaev.ru/python-api-tutorial-get-post-auth-http-requests-examples/</link>
					<comments>https://python.ivan-shamaev.ru/python-api-tutorial-get-post-auth-http-requests-examples/#comments</comments>
		
		<dc:creator><![CDATA[Шамаев Иван]]></dc:creator>
		<pubDate>Sun, 05 Apr 2020 10:06:57 +0000</pubDate>
				<category><![CDATA[Data Science. Data Analytics]]></category>
		<category><![CDATA[Работа с API. Выгрузка данных. Подключение к источникам]]></category>
		<category><![CDATA[get post requests python]]></category>
		<category><![CDATA[get request]]></category>
		<category><![CDATA[post get request]]></category>
		<category><![CDATA[post request]]></category>
		<category><![CDATA[python 3 api data]]></category>
		<category><![CDATA[python http request]]></category>
		<category><![CDATA[python requests get]]></category>
		<category><![CDATA[python requests headers]]></category>
		<category><![CDATA[python requests json]]></category>
		<category><![CDATA[python requests lib]]></category>
		<category><![CDATA[python requests post]]></category>
		<category><![CDATA[python requests документация]]></category>
		<category><![CDATA[request method post]]></category>
		<category><![CDATA[request python 3]]></category>
		<category><![CDATA[requests lib python 3]]></category>
		<category><![CDATA[requests post]]></category>
		<category><![CDATA[requests post data]]></category>
		<category><![CDATA[requests post json]]></category>
		<category><![CDATA[requests python скачать]]></category>
		<category><![CDATA[requests session python]]></category>
		<category><![CDATA[requests многопоточность python]]></category>
		<category><![CDATA[библиотека requests python]]></category>
		<category><![CDATA[модуль requests python]]></category>
		<guid isPermaLink="false">https://python.ivan-shamaev.ru/?p=901</guid>

					<description><![CDATA[<p>В этом уроке по API Python мы узнаем, как получать данные для проектов по науке о данных. В Интернете существуют миллионы API, которые предоставляют доступ к данным. Такие сайты, как Bitrix24, AmoCRM, Yandex API, Twitter, Instagram, VK и Facebook, предлагают определенные данные через свои API. Это могут быть данные предоставляемые только тем, у кого есть [&#8230;]</p>
<p>Сообщение <a href="https://python.ivan-shamaev.ru/python-api-tutorial-get-post-auth-http-requests-examples/">Python API Tutorial: Примеры GET POST AUTH requests (HTTP запросов)</a> появились сначала на <a href="https://python.ivan-shamaev.ru">Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&#038;title=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" data-a2a-url="https://python.ivan-shamaev.ru/python-api-tutorial-get-post-auth-http-requests-examples/" data-a2a-title="Python API Tutorial: Примеры GET POST AUTH requests (HTTP запросов)"></a></p><p>В этом уроке по API Python мы узнаем, как получать данные для проектов по науке о данных. В Интернете существуют миллионы API, которые предоставляют доступ к данным. Такие сайты, как Bitrix24, AmoCRM, Yandex API, Twitter, Instagram, VK и Facebook, предлагают определенные данные через свои API. Это могут быть данные предоставляемые только тем, у кого есть access_token, либо API с открытым доступом.</p>
<blockquote><p><strong>Python API Tutorial:</strong> Примеры GET POST AUTH requests (HTTP запросов). Структура запроса GET и POST. Выгрузка данных из API облачных систем</p></blockquote>
<p><span>Чтобы использовать API, вы отправляете запрос на удаленный веб-сервер и извлекаете необходимые данные.</span></p>
<h2><strong>Что такое API?</strong></h2>
<p><span>API (Application Programming Interface) или интерфейс прикладного программирования &#8212; это сервер, который вы можете использовать для извлечения и отправки данных с использованием кода (запросов). API-интерфейсы чаще всего используются для извлечения данных, и это будет основной темой этого урока для начинающих.</span></p>
<p><span>Когда мы хотим получить данные из API, нам нужно сделать </span><strong><span>запрос</span></strong><span>. Запросы используются во всем Интернете. Например, когда вы открываете страницу сайта, то сначала ваш веб-браузер отправляет URL-запрос на веб-сервер хостинга (где расположен сайт), а хостинг возвращает некоторое содержимое этой веб-страницы.</span></p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/page_request_content_http.png"><img decoding="async" src="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/page_request_content_http.png" alt="" width="676" height="415" class="aligncenter size-full wp-image-907" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/page_request_content_http.png 676w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/page_request_content_http-300x184.png 300w" sizes="(max-width: 676px) 100vw, 676px" /></a></p>
<p>Запросы API работают точно так же &#8212; вы отправляете запрос на сервер API для данных, а сервер возвращает ответ. API Необходимы для того, чтобы не давать прямой доступ к базе данных. Т.к. при прямом доступе к БД очень велика вероятность неправильных действий, что может привести к различным ошибкам.</p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/api_request_response.png"><img decoding="async" src="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/api_request_response.png" alt="" width="1187" height="350" class="aligncenter size-full wp-image-913" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/api_request_response.png 1187w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/api_request_response-300x88.png 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/api_request_response-1024x302.png 1024w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/api_request_response-768x226.png 768w" sizes="(max-width: 1187px) 100vw, 1187px" /></a></p>
<h2><strong>GET и POST запросы с использованием Python</strong></h2>
<p>Существует два метода запросов HTTP (протокол передачи гипертекста): запросы GET и POST в Python.</p>
<h3><strong><span>Что такое HTTP/HTTPS?</span></strong><br />
<span></span></h3>
<p><span><strong>HTTP</strong> &#8212; это набор протоколов, предназначенных для обеспечения связи между клиентами и серверами. Он работает как протокол запроса-ответа между клиентом и сервером.</span></p>
<p><span>Веб-браузер может быть клиентом, а приложение на компьютере, на котором размещен веб-сайт, может быть сервером.</span></p>
<p><span>Итак, чтобы запросить ответ у сервера, в основном используют два метода:</span></p>
<ol>
<li><strong><span>GET</span></strong><span>: запросить данные с сервера. Т.е. мы отправляем только URL (HTTP) запрос без данных. Метод HTTP GET предназначен для получения информации от сервера. В рамках GET-запроса некоторые данные могут быть переданы в строке запроса URI в формате параметров (например, условия поиска, диапазоны дат, ID Объекта, номер счетчика и т.д.).</span></li>
<li><strong><span>POST</span></strong><span>: отправить данные для обработки на сервер (и получить ответ от сервера). Мы отправляем набор информации, набор параметров для API. Метод запроса POST предназначен для запроса, при котором веб-сервер принимает данные, заключённые в тело сообщения POST запроса.</span></li>
</ol>
<p><span>Чтобы сделать HTTP-запросы в python, мы можем использовать несколько HTTP-библиотек, таких как:</span></p>
<ul>
<li><a href="https://docs.python.org/2/library/httplib.html" target="_blank" rel="noopener noreferrer"><span>HTTPLIB</span></a></li>
<li><a href="https://docs.python.org/2/library/urllib.html" target="_blank" rel="noopener noreferrer"><span>URLLIB</span></a></li>
<li><a href="http://docs.python-requests.org/en/master/" target="_blank" rel="noopener noreferrer"><span>REQUESTS</span></a></li>
</ul>
<p><span>Самая элегантная и простая из перечисленных выше библиотек &#8212; это <strong>Requests</strong>. Библиотека запросов не является частью стандартной библиотеки Python, поэтому вам нужно установить ее, чтобы начать работать с ней.</span></p>
<p>Если вы используете <strong>pip</strong> для управления вашими пакетами <strong>Python</strong>, вы можете устанавливать запросы, используя следующую команду:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">pip install requests</pre>
<p>Если вы используете <strong>conda</strong>, вам понадобится следующая команда:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">conda install requests</pre>
<p>После того, как вы установили библиотеку, вам нужно будет ее импортировать. Давайте начнем с этого важного шага:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">import requests</pre>
<h3 id="Making-Our-First-API-Request"><strong>Синтаксис / структура получения данных через GET/POST запросы к API</strong><a class="anchor-link" href="https://www.dataquest.io/blog/python-api-tutorial/#Making-Our-First-API-Request"></a></h3>
<p><span>Есть много разных типов запросов. Наиболее часто используемый, </span><strong><span>GET</span></strong><span> запрос, используется для получения данных.</span></p>
<p><span>Когда мы делаем запрос, ответ от API сопровождается </span><strong><span>кодом ответа,</span></strong><span> который сообщает нам, был ли наш запрос успешным. Коды ответов важны, потому что они немедленно сообщают нам, если что-то пошло не так.</span></p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/server_api_request_get_request_response_code_response_data.png"><img decoding="async" src="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/server_api_request_get_request_response_code_response_data.png" alt="" width="590" height="298" class="aligncenter size-full wp-image-920" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/server_api_request_get_request_response_code_response_data.png 590w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/server_api_request_get_request_response_code_response_data-300x152.png 300w" sizes="(max-width: 590px) 100vw, 590px" /></a></p>
<p><span>Чтобы сделать запрос «GET», мы будем использовать </span><code>requests.get()</code> <span>функцию</span><span>.</span></p>
<p><span>Метод </span><code class="w3-codespan">post()</code><span> используется, когда вы хотите отправить некоторые данные на сервер.</span></p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/server_api_request_post_response_code_python_data.png"><img decoding="async" src="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/server_api_request_post_response_code_python_data.png" alt="" width="590" height="298" class="aligncenter size-full wp-image-930" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/server_api_request_post_response_code_python_data.png 590w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/server_api_request_post_response_code_python_data-300x152.png 300w" sizes="(max-width: 590px) 100vw, 590px" /></a></p>
<p>Ниже приведена подборка различных примеров использования запросов <strong>GET</strong> и <strong>POST</strong> через библиотеку <strong>REQUESTS</strong>. Безусловно, существует еще больше разных случаев. Всегда прежде чем, писать запрос, необходимо обратиться к официальной документации API (например, у Yandex есть документация к API различных сервисов, у Bitrix24 есть документация к API, у AmoCRM есть дока по API, у сервисов Google есть дока по API и т.д.). Вы смотрите какие методы есть у API, какие запросы API принимает, какие данные нужны для API, чтобы он мог выдать информацию в соответствии с запросом. Как авторизоваться, как обновлять ключи доступа (access_token). Все эти моменты могут быть реализованы по разному и всегда нужно ответ искать в официальной документации у поставщика API.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">#GET запрос без параметров
response = requests.get('https://api-server-name.com/methodname_get')

#GET запрос с параметрами в URL
response = requests.get("https://api-server-name.com/methodname_get?param1=ford&amp;param2=-234&amp;param3=8267")

# URL запроса преобразуется в формат https://api-server-name.com/methodname_get?key2=value2&amp;key1=value1
param_request = {'key1': 'value1', 'key2': 'value2'}  
response = requests.get('https://api-server-name.com/methodname_get', params=param_request)

#GET запрос с заголовком
url = 'https://api-server-name.com/methodname_get'  
headers = {'user-agent': 'my-app/0.0.1'}  
response = requests.get(url, headers=headers)

#POST запрос с параметрами в запросе
response = requests.post('https://api-server-name.com/methodname_post', data = {'key':'value'})

#POST запрос с параметрами через кортеж
param_tuples = [('param1', 'value1'), ('param1', 'value2')]  
response = requests.post('https://api-server-name.com/methodname_post', data=param_tuples)

#POST запрос с параметрами через словарь
param_dict = {'param': ['value1', 'value2']}  
response = requests.post('https://api-server-name.com/methodname_post', data=payload_dict) 

#POST запрос с параметрами в формате JSON
import json  
url = 'https://api-server-name.com/methodname_post'  
param_dict = {'param': 'data'}  
response = requests.post(url, data=json.dumps(param_dict))</pre>
<h2>Коды состояния API</h2>
<p><span>Коды состояния возвращаются при каждом запросе к веб-серверу. Коды состояния указывают информацию о том, что произошло с запросом. </span></p>
<p class="summary"><strong><span class="seoSummary">Ответы сгруппированы в пять классов:</span></strong></p>
<ol>
<li class="summary"><span class="seoSummary"><span>Информационные ответы ( </span><code>100</code><span>&#8212; </span><code>199</code><span>),</span></span></li>
<li class="summary"><span class="seoSummary"><span>Успешные ответы ( </span><code>200</code><span>&#8212; </span><code>299</code><span>),</span></span></li>
<li class="summary"><span class="seoSummary"><span>Перенаправления ( </span><code>300</code><span>&#8212; </span><code>399</code><span>),</span></span></li>
<li class="summary"><span class="seoSummary"><span>Ошибки клиента ( </span><code>400</code><span>&#8212; </span><code>499</code><span>),</span></span></li>
<li class="summary"><span class="seoSummary"><span>и ошибки сервера ( </span><code>500</code><span>&#8212; </span><code>599</code><span>).</span></span></li>
</ol>
<p><span>Вот некоторые коды, которые относятся к запросам </span><em><span>GET</span></em><span>:</span></p>
<ul>
<li><code>200</code><span>: Все прошло хорошо и результат был возвращен (если есть).</span></li>
<li><code>301</code><span>: Сервер перенаправляет вас на другую конечную точку. Это может произойти, когда компания меняет доменные имена или имя конечной точки изменяется.</span></li>
<li><code>400</code><span>: Сервер считает, что вы сделали неверный запрос. Это может произойти, если вы отправите неверные данные.</span></li>
<li><code>401</code><span>: Сервер думает, что вы не аутентифицированы. Для многих API требуются учетные данные для входа, поэтому код 401 случается, когда вы отправляете неверные учетные данные для доступа к API.</span></li>
<li><code>403</code><span>: Ресурс, к которому вы пытаетесь получить доступ, запрещен: у вас нет прав для его просмотра.</span></li>
<li><code>404</code><span>: Ресурс, к которому вы пытались получить доступ, не найден на сервере.</span></li>
<li><code>503</code><span>: Сервер не готов обработать запрос.</span></li>
</ul>
<p>Посмотреть информацию по другим ошибкам можно по ссылке <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status" target="_blank" rel="noopener noreferrer">HTTP response status codes</a>.</p>
<h2 id="Working-with-JSON-Data-in-Python"><strong>Работа с данными JSON в Python</strong><a class="anchor-link" href="https://www.dataquest.io/blog/python-api-tutorial/#Working-with-JSON-Data-in-Python"></a></h2>
<p><strong>JSON</strong><span><strong> (JavaScript Object Notation)</strong> &#8212; это язык API. <strong>JSON</strong> &#8212; это способ кодирования структур данных, который простоту чтения данных машинами. <strong>JSON</strong> &#8212; это основной формат, в котором данные передаются туда и обратно в API, и большинство серверов API отправляют свои ответы в формате JSON.</span></p>
<p><span>JSON выглядит так, как будто он содержит словари, списки, строки и целые числа Python. </span><span>Вы можете думать о JSON как о комбинации этих объектов, представленных в виде строк.</span></p>
<p>Рассмотрим пример:</p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/python_json_list_dictionary.png"><img decoding="async" src="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/python_json_list_dictionary.png" alt="" width="733" height="494" class="aligncenter size-full wp-image-924" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/python_json_list_dictionary.png 733w, https://python.ivan-shamaev.ru/wp-content/uploads/2020/04/python_json_list_dictionary-300x202.png 300w" sizes="(max-width: 733px) 100vw, 733px" /></a></p>
<p><span>Python имеет отличный инструментарий для работы с данными в формате JSON (п</span><span>акет json &#8212; является частью стандартной библиотеки). Мы можем конвертировать </span><em><span>списки</span></em><span> и </span><em><span>словари</span></em><span> в JSON, а также конвертировать строки в </span><em><span>списки</span></em><span> и </span><em><span>словари</span></em><span>.</span></p>
<p><span>Библиотека JSON имеет две основные функции:</span></p>
<ul>
<li><code class="EnlighterJSRAW" data-enlighter-language="python">json.dumps()</code> &#8212; принимает объект Python и преобразует его в строку.</li>
<li><code class="EnlighterJSRAW" data-enlighter-language="python">json.loads()</code> &#8212; принимает строку JSON и преобразует (загружает) ее в объект Python.</li>
</ul>
<p><span>Функция </span><code>dumps()</code><span> особенно полезна, поскольку мы можем использовать ее для печати отформатированной строки, которая облегчает понимание вывода JSON.</span></p>
<p>Рассмотрим пример:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python"># Импорт библиотеки requests
import requests

# Запрос GET (Отправка только URL без параметров)
response = requests.get("http://api.open-notify.org/astros.json")
# Вывод кода
print(response.status_code)
# Вывод ответа, полученного от сервера API
print(response.json())</pre>
<p>Результат:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">200
{'people': [{'craft': 'ISS', 'name': 'Andrew Morgan'}, {'craft': 'ISS', 'name': 'Oleg Skripochka'}, {'craft': 'ISS', 'name': 'Jessica Meir'}], 'message': 'success', 'number': 3}</pre>
<p>Теперь попробуем применить функцию dump() &#8212; структура данных станет более наглядна:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python"># Импорт библиотеки requests
import requests
# Импорт библиотеки json
import json

def jprint(obj):
    # create a formatted string of the Python JSON object
    text = json.dumps(obj, sort_keys=True, indent=4)
    print(text)

# Запрос GET (Отправка только URL без параметров)
response = requests.get("http://api.open-notify.org/astros.json")

# Вывод ответа, через пользовательскую функцию jprint
jprint(response.json())</pre>
<p>Результат:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="json">{
    "message": "success",
    "number": 3,
    "people": [
        {
            "craft": "ISS",
            "name": "Andrew Morgan"
        },
        {
            "craft": "ISS",
            "name": "Oleg Skripochka"
        },
        {
            "craft": "ISS",
            "name": "Jessica Meir"
        }
    ]
}</pre>
<h2>Дополнительные команды для просмотра параметров Response библиотеки Requests Python</h2>
<p><strong>Пример скрипта Python:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python"># Импорт библиотеки requests
import requests

# Запрос GET (Отправка только URL без параметров)
response = requests.get("http://api.open-notify.org/iss-pass.json?lat=40.71&amp;lon=-74")

# Вывод ответа, через пользовательскую функцию jprint
print("response:\n{}\n\n".format(response))
print("response.url:\n{}\n\n".format(response.url))                 #Посмотреть формат URL (с параметрами)
print("response.headers:\n{}\n\n".format(response.headers))         #Header of the request
print("response.status_code:\n{}\n\n".format(response.status_code)) #Получить код ответа
print("response.text:\n{}\n\n".format(response.text))               #Text Output
print("response.encoding:\n{}\n\n".format(response.encoding))       #Узнать, какую кодировку использует Requests
print("response.content:\n{}\n\n".format(response.content))         #В бинарном виде
print("response.json():\n{}\n\n".format(response.json()))           #JSON Output</pre>
<p><strong>Результат:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">response:
&lt;Response [200]&gt;


response.url:
http://api.open-notify.org/iss-pass.json?lat=40.71&lon=-74


response.headers:
{'Server': 'nginx/1.10.3', 'Date': 'Tue, 07 Apr 2020 05:44:13 GMT', 'Content-Type': 'application/json', 'Content-Length': '519', 'Connection': 'keep-alive', 'Via': '1.1 vegur'}


response.status_code:
200


response.text:
{
  "message": "success", 
  "request": {
    "altitude": 100, 
    "datetime": 1586237266, 
    "latitude": 40.71, 
    "longitude": -74.0, 
    "passes": 5
  }, 
  "response": [
    {
      "duration": 540, 
      "risetime": 1586273822
    }, 
    {
      "duration": 654, 
      "risetime": 1586279549
    }, 
    {
      "duration": 596, 
      "risetime": 1586285414
    }, 
    {
      "duration": 561, 
      "risetime": 1586291303
    }, 
    {
      "duration": 623, 
      "risetime": 1586297135
    }
  ]
}



response.encoding:
None


response.content:
b'{\n  "message": "success", \n  "request": {\n    "altitude": 100, \n    "datetime": 1586237266, \n    "latitude": 40.71, \n    "longitude": -74.0, \n    "passes": 5\n  }, \n  "response": [\n    {\n      "duration": 540, \n      "risetime": 1586273822\n    }, \n    {\n      "duration": 654, \n      "risetime": 1586279549\n    }, \n    {\n      "duration": 596, \n      "risetime": 1586285414\n    }, \n    {\n      "duration": 561, \n      "risetime": 1586291303\n    }, \n    {\n      "duration": 623, \n      "risetime": 1586297135\n    }\n  ]\n}\n'


response.json():
{'message': 'success', 'request': {'altitude': 100, 'datetime': 1586237266, 'latitude': 40.71, 'longitude': -74.0, 'passes': 5}, 'response': [{'duration': 540, 'risetime': 1586273822}, {'duration': 654, 'risetime': 1586279549}, {'duration': 596, 'risetime': 1586285414}, {'duration': 561, 'risetime': 1586291303}, {'duration': 623, 'risetime': 1586297135}]}</pre>
<h2><strong>Примеры запросов GET с использованием библиотеки REQUESTS в PYTHON</strong></h2>
<p>Рассмотрим первый пример получения данных из Yandex Метрика API данных через метод get библиотеки requests.</p>
<h3><strong>Выгрузка данных из Яндекс Метрики с помощью библиотеки Requests.Get</strong></h3>
<p>Код запроса (номер счетчика и токен изменены):</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python"># Импортируем библиотеку requests 
import requests 
  
# Адрес api метода для запроса get 
url_param = "https://api-metrika.yandex.net/stat/v1/data"

# Задаем параметры для API
api_param = {
    "ids":"5251515",
    "metrics":"ym:s:users,ym:s:visits,ym:s:pageviews,ym:s:bounceRate,ym:s:pageDepth,ym:s:avgVisitDurationSeconds",
    "dimensions":"ym:s:date,ym:s:&lt;attribution&gt;TrafficSource,ym:s:&lt;attribution&gt;SourceEngine,ym:s:gender",
    "date1":"10daysAgo",
    "date2":"yesterday",
    "sort":"ym:s:date",
    "accuracy":"full",
    "limit":5
    }

header_params = {
    'GET': '/management/v1/counters HTTP/1.1',
    'Host': 'api-metrika.yandex.net',
    'Authorization': 'OAuth AgAAlkjlkjKAa976ZB-rXh-t-ookfJJcMP979ZU0',
    'Content-Type': 'application/x-yametrika+json'
    }

# Отправляем get request (запрос GET)
response = requests.get(
    url_param,
    params=api_param,
    headers=header_params
)

result = response.json()
query = result['query']
data = result['data']
print(query)
print('======================')
print(data)</pre>
<p><strong>Результат:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="json">{'ids': [5251515], 'dimensions': ['ym:s:date', 'ym:s:lastTrafficSource', 'ym:s:lastSourceEngine', 'ym:s:gender'], 'metrics': ['ym:s:users', 'ym:s:visits', 'ym:s:pageviews', 'ym:s:bounceRate', 'ym:s:pageDepth', 'ym:s:avgVisitDurationSeconds'], 'sort': ['ym:s:date'], 'date1': '2020-04-02', 'date2': '2020-04-11', 'limit': 5, 'offset': 1, 'group': 'Week', 'auto_group_size': '1', 'quantile': '50', 'offline_window': '21', 'attribution': 'Last', 'currency': 'RUB', 'adfox_event_id': '0'}
======================
[{'dimensions': [{'name': '2020-04-02'}, {'name': 'Internal traffic', 'icon_id': '-1', 'icon_type': 'traffic-source', 'id': 'internal'}, {'name': 'mydomain.ru', 'id': 'internal.mydomain.ru', 'favicon': 'mydomain.ru'}, {'name': 'Not specified', 'id': None}], 'metrics': [1.0, 1.0, 1.0, 0.0, 1.0, 16.0]}, {'dimensions': [{'name': '2020-04-02'}, {'name': 'Internal traffic', 'icon_id': '-1', 'icon_type': 'traffic-source', 'id': 'internal'}, {'name': 'mydomain.ru', 'id': 'internal.mydomain.ru', 'favicon': 'mydomain.ru'}, {'name': 'male', 'id': 'male'}], 'metrics': [3.0, 5.0, 8.0, 0.0, 1.6, 194.4]}, {'dimensions': [{'name': '2020-04-02'}, {'name': 'Internal traffic', 'icon_id': '-1', 'icon_type': 'traffic-source', 'id': 'internal'}, {'name': 'mydomain.ru', 'id': 'internal.mydomain.ru', 'favicon': 'mydomain.ru'}, {'name': 'female', 'id': 'female'}], 'metrics': [8.0, 9.0, 16.0, 0.0, 1.77777778, 91.77777778]}, {'dimensions': [{'name': '2020-04-02'}, {'name': 'Direct traffic', 'icon_id': '0', 'icon_type': 'traffic-source', 'id': 'direct'}, {'name': None, 'id': None, 'favicon': None}, {'name': 'Not specified', 'id': None}], 'metrics': [23.0, 29.0, 37.0, 44.82758621, 1.27586207, 34.79310345]}, {'dimensions': [{'name': '2020-04-02'}, {'name': 'Direct traffic', 'icon_id': '0', 'icon_type': 'traffic-source', 'id': 'direct'}, {'name': None, 'id': None, 'favicon': None}, {'name': 'male', 'id': 'male'}], 'metrics': [32.0, 50.0, 63.0, 4.0, 1.26, 44.74]}]</pre>
<h3><strong>Получим цены на нефть в формате JSON с ресурса oilpriceapi.com</strong></h3>
<p>Для получения токена, необходимо пройти регистрацию на сайте <a href="http://oilpriceapi.com" target="_blank" rel="noopener noreferrer">oilpriceapi.com</a>.</p>
<p><strong>Пример</strong> для токена <strong>984a45fflkj09j9870ujkheca7jj977658</strong> (у вас будет свой ключ доступа):</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python"># Импортируем библиотеку requests 
import requests

# Адрес api метода для запроса get
url = 'https://api.oilpriceapi.com/v1/prices/latest'
headers = {
    'Authorization': 'Token 984a45fflkj09j9870ujkheca7jj977658',
    'Content-Type': 'application/json'
}

# Отправляем get request (запрос GET)
response = requests.get(url = url, headers = headers)
data = response.json()
print(data)</pre>
<p><strong>Результат в формате json:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">{'status': 'success', 'data': {'price': 30.08, 'formatted': '$30.08', 'currency': 'USD', 'code': 'BRENT_CRUDE_USD', 'created_at': '2020-04-14T21:50:00.585Z', 'type': 'spot_price'}}</pre>
<h3><strong>Загрузить курс валют с помощью Requests GET в Python Pandas <span style="color: #ff6600;">cbr.ru</span></strong></h3>
<p>Пример загрузки курсов валют по конкретному дню в DataFrame Pandas Python. Курс валюты отдается в формате XML, поэтому нам понадобится дополнительная библиотека <strong>xml.etree.ElementTree:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python"># Импортируем библиотеку requests 
import requests
import pandas as pd 
import xml.etree.ElementTree as et 

v_date = '16.04.2020'

# Адрес api метода для запроса get
url = 'https://www.cbr.ru/scripts/XML_daily.asp'
params = {
    'date_req': v_date
}

# Отправляем get request (запрос GET)
response = requests.get(url, params)

tree = et.ElementTree(et.fromstring(response.text))
root = tree.getroot()

df_cols = ["date", "numcode", "charcode", "nominal", "name", "value"]
rows = []

for node in root:
    s_numcode = node.find("NumCode").text if node is not None else None
    s_charcode = node.find("CharCode").text if node is not None else None
    s_nominal = node.find("Nominal").text if node is not None else None
    s_name = node.find("Name").text if node is not None else None
    s_value = node.find("Value").text if node is not None else None
    
    rows.append({"date": v_date, "numcode": s_numcode,
                 "charcode": s_charcode, "nominal": s_nominal,
                 "name": s_name, "value": s_value})

df = pd.DataFrame(rows, columns = df_cols)
print(df.head())</pre>
<p><strong>Результат:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">         date numcode  ...                                      name    value
0  16.04.2020     036  ...                      Австралийский доллар  46,7719
1  16.04.2020     944  ...                     Азербайджанский манат  43,4509
2  16.04.2020     826  ...  Фунт стерлингов Соединенного королевства  92,2684
3  16.04.2020     051  ...                          Армянских драмов  15,1801
4  16.04.2020     933  ...                         Белорусский рубль  30,0814

[5 rows x 6 columns]</pre>
<h3><strong>Получаем данные по вакансиям с сайта <span style="color: #ff6600;">hh.ru</span> через API с помощью Python Requests Get</strong></h3>
<p>У сайта hh есть API, вся свежая информация находится на сайте <a href="https://python.ivan-shamaev.ru/%d0%ba%d0%b0%d1%80%d1%82%d0%b0-%d1%81%d0%b0%d0%b9%d1%82%d0%b0-%d0%b2%d1%81%d0%b5-%d1%81%d1%82%d0%b0%d1%82%d1%8c%d0%b8-%d0%b1%d0%bb%d0%be%d0%b3%d0%b0-%d0%bf%d1%80%d0%be-python/" target="_blank" rel="noopener noreferrer">https://dev.hh.ru/</a> и в документации <a href="https://github.com/hhru/api" target="_blank" rel="noopener noreferrer">https://github.com/hhru/api</a>. В рамках примера будет использован <strong><a href="https://github.com/hhru/api/blob/master/docs/vacancies.md" target="_blank" rel="noopener noreferrer">метод vacancies</a></strong>.</p>
<p>Скрипт запроса:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python"># Импортируем библиотеку requests 
import requests
import pandas as pd

page_number = 0
search_str = "qlik"
area_str = "1"

# Адрес api метода для запроса get
url = 'https://api.hh.ru/vacancies'
param = {
    "text":search_str,
    "area":area_str,
    "page":page_number
    }

# Отправляем get request (запрос GET)
response = requests.get(url,param)
data = response.json()

#Создаем пустой dict (словать данных)
dict_data = {}
dict_number = 0

# Количество страниц
for i in range(0,data['pages']):
    param_cycle = {
            "text":search_str,
            "area":area_str,
            "page":i
        }

    response_cycle = requests.get(url,param_cycle)
    print("ЗАПРОС №" + str(i))

    result = dict(response_cycle.json())
    result = result['items']
    #Парсим исходный list формата Json в dictionary (словарь данных)
    for y in range(0, len(result)-1):
        dict_data[dict_number] = {
            'id':result[y]['id'],
            'premium':result[y]['premium'],
            'name':result[y]['name'],
            'department':result[y]['department'],
            'has_test':result[y]['has_test'],
            'area_name':result[y]['area']['name'],
            'salary':result[y]['salary'],
            'type_name':result[y]['type']['name'],
            'snippet_requirement':result[y]['snippet']['requirement']
        }
        dict_number = dict_number + 1
    
    print("==================================")

print(dict_data[0])</pre>
<p>Результат выполнения скрипта:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">ЗАПРОС №0
==================================
ЗАПРОС №1
==================================
ЗАПРОС №2
==================================
ЗАПРОС №3
==================================
ЗАПРОС №4
==================================
ЗАПРОС №5
==================================
{'id': '36694453', 'premium': False, 'name': 'Аналитик', 'department': None, 'has_test': False, 'area_name': 'Москва', 'salary': None, 'type_name': 'Открытая', 'snippet_requirement': 'Продвинутый пользователь MS Exсel, SQL - простые запросы, пользователь одной или нескольких BI систем - Tableu, &lt;highlighttext&gt;Qlik&lt;/highlighttext&gt; sense, Power BI, Microstrategy. '}</pre>
<h3><strong>Пример выгрузки данных из Bitrix24 с использованием requests, pandas и Thread</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import os
import requests
import pandas as pd
from urllib.request import urlopen
from threading import Thread
 
class DownloadThread(Thread):
    """
    Пример многопоточной загрузки данных из Bitrix24
    """
    
    def __init__(self, item, name, url_param, start_param, total, method_name):
        """Инициализация потока"""
        Thread.__init__(self)
        self.item = item
        self.name = name
        self.url_param = url_param
        self.start_param = start_param
        self.total = total
        self.method_name = method_name
    
    def run(self):
        """Запуск потока"""
        msg_start = "Поток %s стартовал загрузку start_param = %s, total = %s" % (self.name, self.start_param, self.total)
        print("")

        result_data=[]
        for i in range (self.start_param, self.total, 50):
            
            # Задаем параметры для API
            param = {
                "start": str(i)
                }
            
            # Отправляем get request (запрос GET)
            response = requests.get(self.url_param,param)
                
            result = response.json()
            data = result['result']
            result_data += data

        dict_data = {}
        
        for j in range(0,len(result_data)):
            dict_data[j] = dict(result_data[j])


        #Создаем DataFrame из dict (словаря данных или массива данных)
        dict_keys = dict_data[0].keys()
        df = pd.DataFrame.from_dict(dict_data, orient='index',columns=dict_keys)
        df = df.replace('\n',' ', regex=True)

        df.to_excel(self.method_name + "_" + str(self.item) +  ".xlsx", sheet_name='data', index=False)
        
        msg_end = "Поток %s завершил загрузку start_param = %s, total = %s" % (self.name, self.start_param, self.total)
        print(msg_end)
        print("")
 
 
def main(url_param, list_totals, step, total_param, method_name):
    """
    Запуск программы
    """
    start_param = 0
    for item, val in enumerate(list_totals):
        name = "Поток %s" % (item+1)
        print(name)
        if (val + step)&lt;=total_param:
            total = val + step
        else:
            total = total_param
        thread = DownloadThread(item, name, url_param, start_param, total, method_name)
        thread.start()
        start_param = total
 
if __name__ == "__main__":

    # method
    method_name = "crm.deal.list"

    # Адрес api метода для запроса get 
    url_param = "https://crm.domain.ru/rest/1/56kjhoghius78yfpojj90/" + method_name 

    response = requests.get(url_param)
    result = response.json()
    total_param = result['total']
    step = 10000
    print(total_param)

    list_totals = list(range(0,total_param,step))

    main(url_param, list_totals, step, total_param, method_name)
</pre>
<h2><strong>Примеры запросов POST с использованием библиотеки REQUESTS в PYTHON</strong></h2>
<h3><strong>Выгрузка данных из Bitrix24 с фильтром по дате из REST API</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import requests

# method
method_name = "crm.deal.list"

# Адрес api метода для запроса get 
url_param = "https://domain.ru/rest/1/854984lkjdsijd432/" + method_name

params = {"filter[&gt;DATE_CREATE]": "2020-01-01T00:00:01+01:00"}

print(params)

response = requests.post(url_param, data = params)
result = response.json()
total = result['total']
print(total)</pre>
<h3><strong>Выгрузка данных из Bitrix24 с двумя фильтрами по дате из REST API</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import requests

# method
method_name = "crm.deal.list"

# Адрес api метода для запроса get 
url_param = "https://domain.ru/rest/1/854984lkjdsijd432/" + method_name

params = {
    "filter[&lt;DATE_CREATE]":"2019-01-01T00:00:01+01:00",
    "filter[&gt;DATE_CREATE]":"2020-01-01T00:00:01+01:00"
    }

print(params)

response = requests.post(url_param, data = params)
result = response.json()
total = result['total']
print(total)</pre>
<h3><strong>Пример полноценной выгрузки данных из Bitrix24 API в Excel с помощью библиотек Requests &amp; Pandas</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="python"># Импортируем библиотеку requests 
import requests 
import pandas as pd
import datetime
import xlsxwriter

# Старт
print(datetime.datetime.now())

# method
method_name = "crm.deal.list"

# Адрес api метода для запроса get 
url_param = "https://crm.domain.ru/rest/1/oj98lLKHNldoij97tg/" + method_name

# Путь для сохранения данных
excel_path = "C:\\PythonETL\\0_ExtractData\\Bitrix24\\Excel\\crm.deal.list\\"

params = {
    "filter[&gt;=DATE_CREATE]":"2020-01-01 00:00:00"
    }

response = requests.post(url_param, params)
result = response.json()
total_param = result['total']
result_data=[]

print(total_param)


for i in range (0,total_param,50):
    for attempt in range(10):
        try:
            # Задаем параметры для API
            param = {
                "start": str(i),
                "filter[&gt;=DATE_CREATE]":"2020-01-01 00:00:00"
                }
            # Отправляем get request (запрос GET)
            response = requests.post(url_param,param)
                
            result = response.json()
            data = result['result']
            result_data += data
        except:
            print("Ошибка при попытке " + str(attempt))
            continue
        break

print("Данные выгрузились, собираем df")
dict_data = {}

for j in range(0,len(result_data)):
    dict_data[j] = dict(result_data[j])


#Создаем DataFrame из dict (словаря данных или массива данных)
dict_keys = dict_data[0].keys()
df = pd.DataFrame.from_dict(dict_data, orient='index',columns=dict_keys)

print("Выгружаем Excel")
#Выгрузка данных из DataFrame в Excel
df.to_excel(excel_path + method_name + "_2020"  +  ".xlsx", sheet_name='data', index=False, engine='xlsxwriter')


# Конец
print(datetime.datetime.now())</pre>
<p><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&amp;linkname=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-api-tutorial-get-post-auth-http-requests-examples%2F&#038;title=Python%20API%20Tutorial%3A%20%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%20GET%20POST%20AUTH%20requests%20%28HTTP%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%29" data-a2a-url="https://python.ivan-shamaev.ru/python-api-tutorial-get-post-auth-http-requests-examples/" data-a2a-title="Python API Tutorial: Примеры GET POST AUTH requests (HTTP запросов)"></a></p><p>Сообщение <a href="https://python.ivan-shamaev.ru/python-api-tutorial-get-post-auth-http-requests-examples/">Python API Tutorial: Примеры GET POST AUTH requests (HTTP запросов)</a> появились сначала на <a href="https://python.ivan-shamaev.ru">Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://python.ivan-shamaev.ru/python-api-tutorial-get-post-auth-http-requests-examples/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>15 библиотек Python, которые должен знать Data Scientist</title>
		<link>https://python.ivan-shamaev.ru/15-python-libraries-for-data-scientist-analytics/</link>
					<comments>https://python.ivan-shamaev.ru/15-python-libraries-for-data-scientist-analytics/#respond</comments>
		
		<dc:creator><![CDATA[Шамаев Иван]]></dc:creator>
		<pubDate>Mon, 30 Mar 2020 09:35:06 +0000</pubDate>
				<category><![CDATA[Data Science. Data Analytics]]></category>
		<category><![CDATA[Визуализация данных - Data Visualization Python]]></category>
		<guid isPermaLink="false">https://python.ivan-shamaev.ru/?p=810</guid>

					<description><![CDATA[<p>Сбор данных, очистка, преобразование, визуализация, моделирование, распознавание аудио / изображений и веб-связь Если вы Data Scientist, Data Analyst или просто энтузиаст, вы не должны пропустить некоторые чрезвычайно популярные и полезные библиотеки для Python. В этой статье будут кратко представлены 15 библиотек Python. Я считаю, что с большинством из них вы, возможно, уже знакомы, но если [&#8230;]</p>
<p>Сообщение <a href="https://python.ivan-shamaev.ru/15-python-libraries-for-data-scientist-analytics/">15 библиотек Python, которые должен знать Data Scientist</a> появились сначала на <a href="https://python.ivan-shamaev.ru">Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&#038;title=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" data-a2a-url="https://python.ivan-shamaev.ru/15-python-libraries-for-data-scientist-analytics/" data-a2a-title="15 библиотек Python, которые должен знать Data Scientist"></a></p><blockquote>
<p class="aq cl fm fx fo fy fq fz fs ga fu gb av"><span>Сбор данных, очистка, преобразование, визуализация, моделирование, распознавание аудио / изображений и веб-связь</span></p>
</blockquote>
<p id="2e91" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Если вы Data Scientist, Data Analyst или просто энтузиаст, вы не должны пропустить некоторые чрезвычайно популярные и полезные библиотеки для Python.</span></p>
<p id="5668" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>В этой статье будут кратко представлены 15 библиотек Python. Я считаю, что с большинством из них вы, возможно, уже знакомы, но если нет, то настоятельно рекомендую обратить на них внимание.</span></p>
<p id="aa89" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Эти библиотеки будут классифицированы по нескольким категориям:</span></p>
<ul class="">
<li id="b67b" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is it iu iv" data-selectable-paragraph=""><span>Сбор данных (Data Gathering);</span></li>
<li id="c18d" class="ih ii et ar ij b fm iw fo ix im iy io iz iq ja is it iu iv" data-selectable-paragraph=""><span>Очистка и преобразование данных (Data Cleansing and Transformation);</span></li>
<li id="a2fe" class="ih ii et ar ij b fm iw fo ix im iy io iz iq ja is it iu iv" data-selectable-paragraph=""><span>Визуализация данных (Data Visualisation);</span></li>
<li id="ba18" class="ih ii et ar ij b fm iw fo ix im iy io iz iq ja is it iu iv" data-selectable-paragraph=""><span>Моделирование данных (Data Modelling);</span></li>
<li id="a02a" class="ih ii et ar ij b fm iw fo ix im iy io iz iq ja is it iu iv" data-selectable-paragraph=""><span>Распознавание аудио и изображений (Audio and Image Recognition);</span></li>
<li id="cd23" class="ih ii et ar ij b fm iw fo ix im iy io iz iq ja is it iu iv" data-selectable-paragraph=""><span>Web.</span></li>
</ul>
<h2 id="8dba" class="jb jc et ar aq jd ev je ex jf jg jh ji jj jk jl jm"><strong>Сбор данных</strong></h2>
<p id="b5e9" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Большинство проектов Data Analytics начинаются со сбора и извлечения данных. Иногда набор данных может быть предоставлен, когда вы работаете в определенной компании, чтобы решить существующую проблему. Однако данные могут быть не готовы, и вам может потребоваться собрать их самостоятельно. Наиболее распространенным сценарием является необходимость сканирования данных из Интернета.</span></p>
<h2 id="f59f" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph=""><span>1. Скрап / Scrapy</span></h2>
<p><a href="https://scrapy.org/" target="_blank" rel="noopener noreferrer">https://scrapy.org/</a></p>
<p id="252e" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Scrapy, вероятно, самая популярная библиотека Python, когда вы хотите написать сканер Python для извлечения информации с веб-сайтов. Например, вы можете использовать его, чтобы извлечь все отзывы о всех ресторанах в городе или собрать все комментарии для определенной категории продуктов на веб-сайте электронной коммерции.</span></p>
<p id="9b07" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Типичное использование состоит в том, чтобы идентифицировать образец интересной информации, появляющейся на веб-страницах, как с точки зрения шаблонов URL, так и шаблонов XPath. После определения этих шаблонов Scrapy может помочь вам автоматически извлечь всю необходимую информацию и упорядочить ее в структуру данных, такую ​​как таблица и JSON.</span></p>
<p id="2b04" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Вы можете легко установить Scrapy используя </span><code class="dz ky kz la lb b">pip</code></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">pip install scrapy</pre>
<h2 id="78de" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph="">2. Beautiful Soup</h2>
<p><a href="https://www.crummy.com/software/BeautifulSoup/#Download" target="_blank" rel="noopener noreferrer">https://www.crummy.com/software/BeautifulSoup/#Download</a></p>
<p id="fc46" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Beautiful Soup &#8212; это еще одна библиотека Python для очистки веб-контента. Общепринято, что он имеет относительно более короткую кривую обучения по сравнению с Scrapy.</span></p>
<p id="2faa" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Кроме того, Beautiful Soup будет лучшим выбором для относительно небольших по масштабам задач и / или для разовой работы. В отличие от Scrapy, когда вам нужно разработать собственный «паук» и вернуться к командной строке и запустить его, Beautiful Soup позволяет импортировать его функции и использовать их в режиме онлайн. Поэтому вы даже можете использовать его в своих ноутбуках Jupyter.</span></p>
<h2 id="129d" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph="">3. Selenium</h2>
<p><a href="https://www.selenium.dev/selenium/docs/api/py/index.html" target="_blank" rel="noopener noreferrer">https://www.selenium.dev/selenium/docs/api/py/index.html</a></p>
<p id="ddee" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Изначально Selenium разрабатывался как автоматизированная среда веб-тестирования. Однако разработчики обнаружили, что его довольно удобно использовать в качестве веб-скребка.</span></p>
<p id="faef" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Селен обычно используется, когда вам нужно получить интересующие данные после взаимодействия с веб-страницами. Например, вам может потребоваться зарегистрировать учетную запись, затем войти в систему и получить содержимое после нажатия некоторых кнопок и ссылок, и эти ссылки определяются как функции JavaScript. В этих случаях обычно нелегко использовать Scrapy или Beautiful Soup для реализации, а Selenium может.</span></p>
<p id="8357" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Тем не менее, важно отметить, что Selenium будет работать намного медленнее, чем обычные библиотеки. Это потому, что он фактически инициализирует веб-браузер, такой как Chrome, а затем имитирует все действия, определенные в коде.</span></p>
<p id="8c1c" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Поэтому, когда вы имеете дело с шаблонами URL и XPath, используйте Scrapy или Beautiful Soup. Выбирайте Selenium, только если это необходимо.</span></p>
<h1 id="691f" class="jb jc et ar aq jd ev je ex jf jg jh ji jj jk jl jm" data-selectable-paragraph=""><span>Очистка и преобразование данных</span></h1>
<p><span>Я предполагаю, что нет необходимости утверждать, насколько важны очистка и преобразование данных в аналитике данных и науке о данных. </span><span>Кроме того, есть слишком много выдающихся библиотек Python, которые делают это хорошо. </span><span>Я подберу некоторые из них, которые вы должны знать как Data Scientist или Analyst.</span></p>
<h2 id="83bd" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph="">4. Pandas</h2>
<p><a href="https://pandas.pydata.org/" target="_blank" rel="noopener noreferrer">https://pandas.pydata.org/</a></p>
<p id="e1bd" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Я почти уверен, что перечислять Панд в этом списке нет необходимости. Пока вы имеете дело с данными, вы должны были использовать Панд.</span></p>
<p id="c343" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>С Pandas вы можете манипулировать данными во фрейме данных Pandas. Есть огромные встроенные функции, которые помогут вам преобразовать ваши данные.</span></p>
<p id="05e6" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Не нужно слишком много слов. Если вы хотите изучать Python, это библиотека, которую нужно учить.</span></p>
<h2 id="b42a" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph=""><span>5. Numpy</span></h2>
<p><a href="https://numpy.org/" target="_blank" rel="noopener noreferrer">https://numpy.org/</a></p>
<p id="ff30" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Точно так же Numpy &#8212; это еще одна обязательная для изучения библиотека для пользователей языка Python, даже не только для ученых и аналитиков данных.</span></p>
<p id="7b03" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Это расширило объекты списка Python во всеобъемлющие многомерные массивы. Существует также огромное количество встроенных математических функций для поддержки практически всех ваших потребностей с точки зрения расчета. Как правило, вы можете использовать массивы Numpy в качестве матриц, а Numpy позволит вам выполнять матричные вычисления.</span></p>
<p id="f354" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Я полагаю, что многие Data Scientist начнут там скрипты Python следующим образом</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import numpy as np
import pandas as pd</pre>
<p><span>Итак, несомненно, что эти две библиотеки, вероятно, самые популярные в сообществе Python.</span></p>
<h2 id="67e1" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph=""><span>6. Просторность</span></h2>
<p><a href="https://spacy.io/" target="_blank" rel="noopener noreferrer">https://spacy.io/</a></p>
<p id="2848" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Spacy, вероятно, не так знаменит, как предыдущие. В то время как Numpy и Pandas являются библиотеками, работающими с числовыми и структурированными данными, Spacy помогает нам преобразовывать свободный текст в структурированные данные.</span></p>
<p id="fe01" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Spacy &#8212; одна из самых популярных библиотек NLP (обработка естественного языка) для Python. Представьте себе, что, когда вы удалили множество обзоров продуктов с веб-сайта электронной коммерции, вы должны извлечь полезную информацию из этого свободного текста, прежде чем сможете их проанализировать. Spacy имеет множество встроенных функций, таких как рабочий токенизатор, распознавание именованных объектов и обнаружение части речи.</span></p>
<p id="11d9" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Кроме того, Spacy поддерживает множество различных человеческих языков. На его официальном сайте заявлено, что он поддерживает более 55.</span></p>
<h1 id="df17" class="jb jc et ar aq jd ev je ex jf jg jh ji jj jk jl jm" data-selectable-paragraph=""><span>Визуализация данных</span></h1>
<p><span>Визуализация данных является абсолютно необходимой потребностью в аналитике данных. </span><span>Нам нужно визуализировать результаты и результаты и рассказать историю данных, которую мы нашли.</span></p>
<h2 id="0aba" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph="">7. Matplotlib</h2>
<p><a href="https://matplotlib.org/" target="_blank" rel="noopener noreferrer">https://matplotlib.org/</a></p>
<p id="8d42" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Matplotlib &#8212; самая полная библиотека визуализации данных для Python. Кто-то говорит, что Матплотлиб безобразен. Однако, на мой взгляд, как, вероятно, самая базовая библиотека визуализации в Python, Matplotlib предоставляет большинство возможностей для реализации вашей идеи визуализации. Это так же, как разработчики JavaScript могут предпочесть различные виды библиотек визуализации, но когда есть много настраиваемых функций, которые не поддерживаются этими библиотеками высокого уровня, D3.js должен быть вовлечен.</span></p>
<p id="b764" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Я написал еще одну статью, чтобы представить Matplotlib. Проверьте это, если вы хотите узнать больше об этом.</span></p>
<h2 id="a975" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph="">8. Plotly</h2>
<p><a href="https://plotly.com/" target="_blank" rel="noopener noreferrer">https://plotly.com/</a></p>
<p id="b797" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Честно говоря, хотя я считаю, что Matplotlib &#8212; это необходимая для изучения библиотека для визуализации, в большинстве случаев я бы предпочел использовать Plotly, потому что она позволяет нам создавать самые причудливые графики с наименьшим количеством строк кода.</span></p>
<p id="8d25" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Независимо от того, хотите ли вы построить трехмерный поверхностный график, точечный график на основе карты или интерактивный анимированный график, Plotly может выполнить требования в короткие сроки.</span></p>
<p id="0080" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Он также предоставляет диаграмму студии, которую вы можете загрузить свою визуализацию в онлайн-хранилище, которое поддерживает дальнейшее редактирование и сохранение.</span></p>
<h1 id="83ba" class="jb jc et ar aq jd ev je ex jf jg jh ji jj jk jl jm" data-selectable-paragraph=""><span>Моделирование данных</span></h1>
<p id="7849" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Когда аналитика данных приходит к моделированию, мы обычно отсылаем ее к Advanced Analytics. В настоящее время машинное обучение уже не является новой концепцией. Python также считается самым популярным языком для машинного обучения. Конечно, есть много выдающихся библиотек, поддерживающих это.</span></p>
<h2 id="6196" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph=""><span>9. Scikit Learn</span></h2>
<p><a href="https://scikit-learn.org/" target="_blank" rel="noopener noreferrer">https://scikit-learn.org/</a></p>
<p id="b674" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Прежде чем погрузиться в «глубокое обучение», Scikit Learn должна стать библиотекой Python, с которой вы начнете свой путь в машинном обучении.</span></p>
<p id="7d14" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Scikit Learn имеет 6 основных модулей, которые делают</span></p>
<ul class="">
<li id="9eab" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is it iu iv" data-selectable-paragraph=""><span>Предварительная обработка данных</span></li>
<li id="93f6" class="ih ii et ar ij b fm iw fo ix im iy io iz iq ja is it iu iv" data-selectable-paragraph=""><span>Уменьшение размеров</span></li>
<li id="2e3e" class="ih ii et ar ij b fm iw fo ix im iy io iz iq ja is it iu iv" data-selectable-paragraph=""><span>регрессия</span></li>
<li id="7e61" class="ih ii et ar ij b fm iw fo ix im iy io iz iq ja is it iu iv" data-selectable-paragraph=""><span>классификация</span></li>
<li id="1e9c" class="ih ii et ar ij b fm iw fo ix im iy io iz iq ja is it iu iv" data-selectable-paragraph=""><span>Кластеризация</span></li>
<li id="b78b" class="ih ii et ar ij b fm iw fo ix im iy io iz iq ja is it iu iv" data-selectable-paragraph=""><span>Выбор модели</span></li>
</ul>
<p id="d238" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Я уверен, что Data Scientist, который прибил Scikit Learn, уже должен считаться хорошим Data Scientist.</span></p>
<h2 id="9712" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph=""><span>10. PyTorch</span></h2>
<p><a href="https://pytorch.org/" target="_blank" rel="noopener noreferrer">https://pytorch.org/</a></p>
<p id="ac5a" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>PyTorch создан Facebook и имеет открытый исходный код как фреймворк взаимного машинного обучения для Python.</span></p>
<p id="c341" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>По сравнению с Tensorflow, PyTorch более «питоничен» с точки зрения синтаксиса. что также сделало PyTorch немного легче в освоении и использовании.</span></p>
<p id="d570" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Наконец, в качестве библиотеки для углубленного изучения PyTorch имеет очень богатый API и встроенные функции, помогающие ученым быстро обучать своим моделям глубокого обучения.</span></p>
<h2 id="dcda" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph="">11. Tensorflow</h2>
<p><a href="https://www.tensorflow.org/" target="_blank" rel="noopener noreferrer">https://www.tensorflow.org/</a></p>
<p id="0a19" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Tensorflow &#8212; еще одна библиотека машинного обучения для Python, созданная Google.</span></p>
<p id="9dc7" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Одна из самых популярных функций Tensorflow &#8212; это графики потоков данных на Tensorboard. Последняя представляет собой автоматически сгенерированную веб-панель управления, отображающую потоки и результаты машинного обучения, что чрезвычайно полезно для целей отладки и представления.</span></p>
<h1 id="2f9a" class="jb jc et ar aq jd ev je ex jf jg jh ji jj jk jl jm" data-selectable-paragraph=""><span>Распознавание аудио и изображений</span></h1>
<p><span>Машинное обучение не только по цифрам, но также может помочь с аудио и изображениями (видео рассматривается как серия кадров). </span><span>Поэтому, когда мы имеем дело с этими мультимедийными данными, этих библиотек машинного обучения будет недостаточно. </span><span>Вот некоторые популярные библиотеки распознавания аудио и изображений для Python.</span></p>
<h2 id="7f28" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph="">12. Librosa</h2>
<p><a href="https://librosa.github.io/librosa/" target="_blank" rel="noopener noreferrer">https://librosa.github.io/librosa/</a></p>
<p id="04cd" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Librosa &#8212; очень мощная библиотека Python для обработки звука и голоса. Его можно использовать для извлечения различных видов функций из аудиосегментов, таких как ритм, ритм и темп.</span></p>
<p id="6b12" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>С помощью Librosa эти чрезвычайно сложные алгоритмы, такие как сегментация Лапласа, могут быть легко реализованы в несколько строк кода.</span></p>
<h2 id="7788" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph=""><span>13. OpenCV</span></h2>
<p><a href="https://opencv.org/">https://opencv.org/</a></p>
<p id="724d" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>OpenCV &#8212; наиболее широко используемая библиотека для распознавания изображений и видео. Не будет преувеличением сказать, что OpenCV позволяет Python заменить Matlab с точки зрения распознавания изображений и видео.</span></p>
<p id="c457" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Он предоставляет различные API и поддерживает не только Python, но также Java и Matlab, а также выдающуюся производительность, которая заслуживает высокой оценки как в отрасли, так и в научных исследованиях.</span></p>
<h1 id="1f1d" class="jb jc et ar aq jd ev je ex jf jg jh ji jj jk jl jm" data-selectable-paragraph=""><span>Web</span></h1>
<p id="ee68" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Не забывайте, что Python широко использовался в веб-разработке, прежде чем он стал популярным в области науки о данных. Итак, есть также много отличных библиотек для веб-разработки.</span></p>
<h2 class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph=""><span>14. Джанго &#8212; </span>Django</h2>
<p><a href="https://www.djangoproject.com/" target="_blank" rel="noopener noreferrer">https://www.djangoproject.com/</a></p>
<p id="4631" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Если вы хотите использовать Python для разработки бэкэнда Web-сервиса, Django всегда лучший выбор. Он спроектирован как высокоуровневая инфраструктура, которая может создать веб-сайт всего за несколько строк кода.</span></p>
<p id="c0af" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Он напрямую поддерживает большинство популярных баз данных, чтобы сэкономить ваше время на настройку соединений и разработку модели данных. Вы бы сосредоточились только на бизнес-логике и никогда не беспокоились о манипуляциях CURD с Django, потому что это основанная на базе данных структура.</span></p>
<h2 id="724e" class="jx jc et ar aq jd jy jz ka kb kc kd ke kf kg kh ki" data-selectable-paragraph="">15. Flask</h2>
<p><a href="https://flask.palletsprojects.com/" target="_blank" rel="noopener noreferrer">https://flask.palletsprojects.com/</a></p>
<p id="f299" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Flask &#8212; это облегченная среда веб-разработки на Python. Наиболее ценной особенностью является то, что он может быть легко настроен с любыми конкретными требованиями очень легко и гибко.</span></p>
<p id="fc76" class="ih ii et ar ij b fm ik fo il im in io ip iq ir is dl" data-selectable-paragraph=""><span>Многие другие известные библиотеки и инструменты Python, которые предоставляют веб-интерфейс, созданы с использованием Flask, например, Plotly Dash и Airflow, благодаря облегченной функции Flask.</span></p>
<h1 id="d7ed" class="jb jc et ar aq jd ev je ex jf jg jh ji jj jk jl jm" data-selectable-paragraph=""><span>Вывод</span></h1>
<p><span>Действительно, есть более выдающиеся библиотеки Python, которые могут быть перечислены здесь. </span><span>Всегда приятно видеть, что сообщество Python такое процветающее. </span><span>В случае, если есть больше библиотек, которые станут одними из самых известных для ученых и аналитиков данных, может возникнуть необходимость организовать их в другой статье.</span></p>
<p><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&amp;linkname=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpython.ivan-shamaev.ru%2F15-python-libraries-for-data-scientist-analytics%2F&#038;title=15%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%20Python%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20Data%20Scientist" data-a2a-url="https://python.ivan-shamaev.ru/15-python-libraries-for-data-scientist-analytics/" data-a2a-title="15 библиотек Python, которые должен знать Data Scientist"></a></p><p>Сообщение <a href="https://python.ivan-shamaev.ru/15-python-libraries-for-data-scientist-analytics/">15 библиотек Python, которые должен знать Data Scientist</a> появились сначала на <a href="https://python.ivan-shamaev.ru">Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://python.ivan-shamaev.ru/15-python-libraries-for-data-scientist-analytics/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
