PIP расшифровывается как "Preferred installer program". Мы используем pip для установки различных пакетов, не входящих в стандартную библиотеку Python. Пакет - это модуль Python, который может содержать один или несколько модулей или других пакетов. В программировании нам не обязательно писать каждый раз писать вспомогательную программу, вместо этого мы устанавливаем пакеты и импортируем их в наши приложения.
Если у вас нет установленного pip, давайте установим его сейчас. Перейдите в терминал или командную строку и скопируйте следующую команду:
asabeneh@Asabeneh:~$ pip install pipПроверьте, установлен ли pip, написав
pip --versionasabeneh@Asabeneh:~$ pip --version
pip 21.1.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.9.6)Как видите, я использую версию pip 21.1.3, если вы видите число немного ниже или выше этого, не пугайтесь, pip установлен.
Давайте посмотрим на популярные пакеты, используемые в сообществе Python для различных целей. Просто, чтобы вы знали, какие из пакетов доступны в Python.
Давайте попробуем установить numpy, также известный как "numeric python" - один из самых популярных пакетов в сообществе машинного обучения и data science.
- NumPy - это фундаментальный пакет для научных вычислений с использованием Python. Он содержит:
- мощный объект многомерного массива
- сложные функции (например, broadcasting)
- инструменты для интеграции кода на C/C++ и Fortran
- полезные возможности линейной алгебры, преобразования Фурье и генерации случайных чисел
asabeneh@Asabeneh:~$ pip install numpyДавайте рассмотри numpy поближе. Откройте ваш IDE, выполните импорт numpy следующим образом:
>>> import numpy
>>> numpy.version.version
'1.20.1'
>>> lst = [1, 2, 3,4, 5]
>>> np_arr = numpy.array(lst)
>>> np_arr
array([1, 2, 3, 4, 5])
>>> len(np_arr)
5
>>> np_arr * 2
array([ 2, 4, 6, 8, 10])
>>> np_arr + 2
array([3, 4, 5, 6, 7])
>>>Pandas - это библиотека с открытым исходным кодом и лицензией BSD, предоставляющая высокопроизводительные и простые в использовании структуры данных и инструменты для анализа данных. Давайте установим старшего брата numpy, pandas:
asabeneh@Asabeneh:~$ pip install pandasasabeneh@Asabeneh:~$ python
Python 3.9.6 (default, Jun 28 2021, 15:26:21)
[Clang 11.0.0 (clang-1100.0.33.8)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandasЭтот раздел не о numpy или pandas, здесь мы пытаемся научиться устанавливать пакеты и импортировать их. Давайте импортируем модуль веб-браузера, который поможет нам открывать веб-сайты. Нам не нужно устанавливать этот модуль, он уже установлен по умолчанию вместе с Python 3. Это означает, что нам не нужно его устанавливать, мы можем можем его просто импортировать.
import webbrowser # модуль веб-браузера для открытия веб-сайтов
# список URL-адресов: python
url_lists = [
'http://www.python.org',
'https://www.linkedin.com/in/asabeneh/',
'https://github.com/Asabeneh',
'https://twitter.com/Asabeneh',
]
# открывает вышеуказанный список веб-сайтов в разных вкладках
for url in url_lists:
webbrowser.open_new_tab(url)Для удаления пакета вы можете использовать следующую команду:
pip uninstall название_пакетаЧтобы увидеть список установленных пакетов на вашем компьютере, вы можете использовать команду pip list.
pip listЧтобы получить информацию о пакете, можно использовать команду pip show название_пакета.
pip show название_пакетаasabeneh@Asabeneh:~$ pip show pandas
Name: pandas
Version: 1.2.3
Summary: Powerful data structures for data analysis, time series, and statistics
Home-page: http://pandas.pydata.org
Author: None
Author-email: None
License: BSD
Location: /usr/local/lib/python3.7/site-packages
Requires: python-dateutil, pytz, numpy
Required-by:Если вы хотите получить более подробную информацию, добавьте --verbose.
asabeneh@Asabeneh:~$ pip show --verbose pandas
Name: pandas
Version: 1.2.3
Summary: Powerful data structures for data analysis, time series, and statistics
Home-page: http://pandas.pydata.org
Author: None
Author-email: None
License: BSD
Location: /usr/local/lib/python3.7/site-packages
Requires: numpy, pytz, python-dateutil
Required-by:
Metadata-Version: 2.1
Installer: pip
Classifiers:
Development Status :: 5 - Production/Stable
Environment :: Console
Operating System :: OS Independent
Intended Audience :: Science/Research
Programming Language :: Python
Programming Language :: Python :: 3
Programming Language :: Python :: 3.5
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Cython
Topic :: Scientific/Engineering
Entry-points:
[pandas_plotting_backends]
matplotlib = pandas:plotting._matplotlibДля создания списка установленных пакетов с версиями, который можно использовать в файле requirements.txt, вы можете использовать команду pip freeze:
asabeneh@Asabeneh:~$ pip freeze
docutils==0.11
Jinja2==2.7.2
MarkupSafe==0.19
Pygments==1.6
Sphinx==1.2.2На данный момент вы знакомы с тем, как читать или записывать файлы на вашем компьютере. Иногда нам хочется прочитать данные с веб-страницы, используя URL, или получить данные из API. API расшифровывается как Application Program Interface. Это средство обмена структурированными данными между серверами, в основном в формате JSON. Чтобы открыть сетевое соединение, нам понадобится пакет с названием requests, который позволяет открывать сетевое соединение и выполнять операции CRUD (create, read, update and delete). В этом разделе мы рассмотрим только операцию чтения или получения данных.
Давайте установим пакет requests:
asabeneh@Asabeneh:~$ pip install requestsВ модуле requests мы увидим методы get, status_code, headers, text и json:
- get(): для получения данных с URL, он возвращает response object.
- status_code: после получения данных, мы можем проверить статус операции (успех, ошибка и т.д.).
- headers: для проверки типов заголовков.
- text: для извлечения текста из response object.
- json: для извлечения данных в формате JSON. Давайте прочитаем текстовый файл с веб-сайта https://www.w3.org/TR/PNG/iso_8859-1.txt.
import requests # импортируем модуль requests
url = 'https://www.w3.org/TR/PNG/iso_8859-1.txt' # текст с веб-сайта
response = requests.get(url) # открываем сетевое соединение и получаем данные
print(response)
print(response.status_code) # status code,, успешно: 200
print(response.headers) # информация о заголовках
print(response.text) # выводим весь текст с веб-страницы<Response [200]>
200
{'date': 'Sun, 08 Dec 2019 18:00:31 GMT', 'last-modified': 'Fri, 07 Nov 2003 05:51:11 GMT', 'etag': '"17e9-3cb82080711c0;50c0b26855880-gzip"', 'accept-ranges': 'bytes', 'cache-control': 'max-age=31536000', 'expires': 'Mon, 07 Dec 2020 18:00:31 GMT', 'vary': 'Accept-Encoding', 'content-encoding': 'gzip', 'access-control-allow-origin': '*', 'content-length': '1616', 'content-type': 'text/plain', 'strict-transport-security': 'max-age=15552000; includeSubdomains; preload', 'content-security-policy': 'upgrade-insecure-requests'}- Давайте прочитаем данные из API. Примером API является https://restcountries.eu/rest/v2/all. Посмотрим как это обычно делается с помощью модуля requests.
import requests
url = 'https://restcountries.eu/rest/v2/all' # API стран
response = requests.get(url) # открываем сетевое соединение и получаем данные
print(response) # response object
print(response.status_code) # status code, успешно: 200
countries = response.json()
print(countries[:1]) # выводим только первую страну, удалите срез, чтобы увидеть все страны<Response [200]>
200
[{'alpha2Code': 'AF',
'alpha3Code': 'AFG',
'altSpellings': ['AF', 'Afġānistān'],
'area': 652230.0,
'borders': ['IRN', 'PAK', 'TKM', 'UZB', 'TJK', 'CHN'],
'callingCodes': ['93'],
'capital': 'Kabul',
'cioc': 'AFG',
'currencies': [{'code': 'AFN', 'name': 'Afghan afghani', 'symbol': '؋'}],
'demonym': 'Afghan',
'flag': 'https://restcountries.eu/data/afg.svg',
'gini': 27.8,
'languages': [{'iso639_1': 'ps',
'iso639_2': 'pus',
'name': 'Pashto',
'nativeName': 'پښتو'},
{'iso639_1': 'uz',
'iso639_2': 'uzb',
'name': 'Uzbek',
'nativeName': 'Oʻzbek'},
{'iso639_1': 'tk',
'iso639_2': 'tuk',
'name': 'Turkmen',
'nativeName': 'Türkmen'}],
'latlng': [33.0, 65.0],
'name': 'Afghanistan',
'nativeName': 'افغانستان',
'numericCode': '004',
'population': 27657145,
'region': 'Asia',
'regionalBlocs': [{'acronym': 'SAARC',
'name': 'South Asian Association for Regional Cooperation',
'otherAcronyms': [],
'otherNames': []}],
'subregion': 'Southern Asia',
'timezones': ['UTC+04:30'],
'topLevelDomain': ['.af'],
'translations': {'br': 'Afeganistão',
'de': 'Afghanistan',
'es': 'Afganistán',
'fa': 'افغانستان',
'fr': 'Afghanistan',
'hr': 'Afganistan',
'it': 'Afghanistan',
'ja': 'アフガニスタン',
'nl': 'Afghanistan',
'pt': 'Afeganistão'}}]Мы используем метод json() объекта response, если мы получаем данные в формате JSON. Для файлов в форматах txt, html, xml и других мы можем использовать метод text.
Мы создаем большое количество файлов в разных папках и подпапках на основе каких-либо критериев, чтобы мы могли легко находить и управлять ими. Как вы знаете, модуль может содержать несколько объектов, таких как классы, функции и т. д. Пакет может содержать один или несколько соответствующих модулей. Фактически пакет представляет собой папку, содержащую один или несколько файлов модулей. Давайте создадим пакет с названием mypackage:
Создайте новую папку с именем mypackage внутри папки 30DaysOfPython. Создайте пустой файл init.py в папке mypackage. Создайте модули arithmetic.py и greet.py с следующим кодом:
# mypackage/arithmetics.py
# arithmetics.py
def add_numbers(*args):
total = 0
for num in args:
total += num
return total
def subtract(a, b):
return (a - b)
def multiple(a, b):
return a * b
def division(a, b):
return a / b
def remainder(a, b):
return a % b
def power(a, b):
return a ** b# mypackage/greet.py
# greet.py
def greet_person(firstname, lastname):
return f'{firstname} {lastname}, добро пожаловать на 30DaysOfPython челендж!'Структура папок вашего пакета должна выглядеть следующим образом:
─ mypackage
├── __init__.py
├── arithmetic.py
└── greet.pyА сейчас давайте откроем нашу IDE и попробуем использовать созданный нами пакет:
asabeneh@Asabeneh:~/Desktop/30DaysOfPython$ python
Python 3.9.6 (default, Jun 28 2021, 15:26:21)
[Clang 11.0.0 (clang-1100.0.33.8)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from mypackage import arithmetics
>>> arithmetics.add_numbers(1, 2, 3, 5)
11
>>> arithmetics.subtract(5, 3)
2
>>> arithmetics.multiple(5, 3)
15
>>> arithmetics.division(5, 3)
1.6666666666666667
>>> arithmetics.remainder(5, 3)
2
>>> arithmetics.power(5, 3)
125
>>> from mypackage import greet
>>> greet.greet_person('Asabeneh', 'Yetayeh')
'Asabeneh Yetayeh, welcome to 30DaysOfPython Challenge!'
>>>Как вы можете видеть, пакет работает великолепно. Папка пакета содержит специальный файл под названием init.py, который хранит содержимое пакета. Нам нужно поместим файл init.py в папку, чтобы Python начал распознавать эту папку как пакет. Файл init.py предоставляет доступ к определенным модулям для импорта. Пустой файл init.py делает все функции доступными при импорте пакета. Без файла init.py Python не поймет, что папка является пакетом, а не простой папкой.
-
Базы данных
- SQLAlchemy или SQLObject - доступ к нескольким системам управления базами данных
- pip install SQLAlchemy
- SQLAlchemy или SQLObject - доступ к нескольким системам управления базами данных
-
Веб-разработка
- Django - высокоуровневый веб-фреймворк.
- pip install django
- Flask - микро-фреймворк для Python, основанный на Werkzeug и Jinja 2.
- pip install flask
- Django - высокоуровневый веб-фреймворк.
-
Парсер HTML
- Beautiful Soup - парсер HTML/XML, разработанный для быстрого извлечения данных, можно использовать даже для файлов с неправильной разметкой.
- pip install beautifulsoup4
- PyQuery - реализует jQuery в Python; быстрее BeautifulSoup.
- Beautiful Soup - парсер HTML/XML, разработанный для быстрого извлечения данных, можно использовать даже для файлов с неправильной разметкой.
-
Обработка XML
- ElementTree - модуль в стандартной библиотеке Python, который предоставляет простой и удобный способ для обработки XML-документов. Он представляет собой легковесный и эффективный API для работы с XML, который позволяет создавать, изменять и извлекать данные из XML-структур.
-
GUI
- PyQt - привязки к кросс-платформенному фреймворку Qt.
- TkInter - традиционный набор инструментов пользовательского интерфейса Python.
-
Анализ данных, Data Science and машинное обучение
- NumPy: одна из самых популярных библиотек машинного обучения в Python.
- Pandas: библиотека для анализа данных, Data Science и машинного обучения в Python, которая предоставляет высокоуровневые структуры данных и широкий набор инструментов для анализа.
- SciPy: SciPy библиотека машинного обучения для разработчиков приложений и инженеров. Библиотека SciPy содержит модули для оптимизации, линейной алгебры, интеграции, обработки изображений и статистики.
- Scikit-Learn: комбинация NumPy и SciPy. Она считается одной из лучших библиотек для работы со комплексными данными.
- TensorFlow: библиотека машинного обучения, созданная Google.
- Keras: одна из самых популярных библиотек машинного обучения в Python. Она предоставляет удобный и интуитивно понятный интерфейс для создания и обучения нейронных сетей. Keras облегчает процесс описания архитектуры нейронной сети и предлагает мощные инструменты для компиляции моделей, обработки наборов данных, визуализации графов и многого другого. Keras также является высокоуровневым интерфейсом к другой популярной библиотеке машинного обучения - TensorFlow, что позволяет использовать преимущества обеих библиотек вместе.
-
Network:
- requests: пакет, который мы можем использовать для отправки запросов на сервер с использованием различных методов, таких как GET, POST, DELETE, PUT.
- pip install requests
- requests: пакет, который мы можем использовать для отправки запросов на сервер с использованием различных методов, таких как GET, POST, DELETE, PUT.
🌕 Как всегда, ты молодец! Только что ты сделал 20 шаг к своей мечте. А теперь давай снова потренируем свои мозги!
- Прочитайте этот URL и найдите 10 наиболее часто встречающихся слов. romeo_and_juliet = 'http://www.gutenberg.org/files/1112/1112.txt'
- Прочитайте API cats_api = 'https://api.thecatapi.com/v1/breeds' и найдите:
- минимальный, максимальный, средний, медианный вес кошек.
- минимальную, максимальную, среднюю, медианную продолжительность жизни кошек в годах.
- Создайте таблицу частоты стран и породы кошек.
- Прочитайте API стран и найдите:
- 10 самых больших стран
- 10 наиболее распространенных языков
- бщее количество языков в API стран
- UCI одно из самых распространенных мест для получения наборов данных для data science и машинного обучения. Прочтите содержимое UCL(https://archive.ics.uci.edu/ml/datasets.php). Без дополнительных библиотек это будет сложно, поэтому вы можете попробовать использовать BeautifulSoup4.
🎉 ПОЗДРАВЛЯЕМ! 🎉
