Kodduu Python
1.07K subscribers
315 photos
28 videos
190 links
Научись программировать на Python на интересных примерах

Самый быстрый курс https://stepik.org/a/187914
Самый нескучный курс https://stepik.org/a/185238

Во вопросам сотрудничества: @AlexErf
Download Telegram
Давайте создадим пример кода на Python, который использует несколько интересных библиотек. Я выберу библиотеку matplotlib для визуализации данных, numpy для численных операций и pandas для работы с табличными данными. В этом примере мы сгенерируем случайные данные и создадим график, иллюстрирующий эти данные.

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# Генерация случайных данных
np.random.seed(0)
data = np.random.randn(100)

# Создание DataFrame с использованием pandas
df = pd.DataFrame(data, columns=['Random Data'])

# Визуализация данных с использованием matplotlib
plt.figure(figsize=(10, 6))
plt.plot(df.index, df['Random Data'], marker='o', linestyle='-', color='b')
plt.title('Пример случайного графика')
plt.xlabel('Индекс')
plt.ylabel('Значения')
plt.grid(True)
plt.show()


Этот код выполняет следующие действия:
1. Импортирует необходимые библиотеки.
2. Генерирует 100 случайных чисел, следуя нормальному распределению.
3. Создаёт DataFrame из этих данных.
4. Строит график, отображающий эти данные, с использованием matplotlib.

Когда вы запустите этот код, он создаст линейный график, на котором каждая точка данных отмечена кружком и все точки соединены линией.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте создадим ещё один пример кода на Python, на этот раз используя другие интересные библиотеки. Мы воспользуемся scikit-learn для машинного обучения, seaborn для продвинутой визуализации данных и numpy для обработки числовых данных. В этом примере мы выполним простую кластеризацию данных и визуализируем результаты.

import numpy as np
import seaborn as sns
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# Генерация случайных данных
np.random.seed(0)
data = np.random.rand(200, 2) # 200 точек в 2D

# Применение K-Means для кластеризации данных (разбиение на 4 кластера)
kmeans = KMeans(n_clusters=4)
kmeans.fit(data)
labels = kmeans.predict(data)

# Визуализация кластеров с использованием seaborn
plt.figure(figsize=(10, 6))
sns.scatterplot(data[:, 0], data[:, 1], hue=labels, palette='viridis')
plt.title('Визуализация Кластеризации K-Means')
plt.xlabel('Ось X')
plt.ylabel('Ось Y')
plt.show()


Этот код выполняет следующие действия:
1. Импортирует необходимые библиотеки.
2. Генерирует 200 случайных точек в двухмерном пространстве.
3. Использует алгоритм K-Means из scikit-learn для разделения этих точек на 4 кластера.
4. Строит график, визуализирующий кластера, с использованием seaborn для красивой цветовой палитры.

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

Подпишись 👉🏻 @KodduuPython 🤖
Давайте создадим пример кода на Python, который будет использовать библиотеки для работы с веб-скрапингом. В этом примере мы будем использовать requests для получения данных с веб-страницы и BeautifulSoup из пакета bs4 для анализа и извлечения информации из HTML. Мы напишем простой скрипт, который извлекает заголовки новостей с веб-страницы.

import requests
from bs4 import BeautifulSoup

# URL веб-страницы, с которой будем извлекать данные
url = 'https://news.ycombinator.com/'

# Получение HTML-кода страницы
response = requests.get(url)

# Парсинг HTML-кода с использованием BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')

# Поиск всех элементов с тегом 'a' и классом 'titlelink' (заголовки новостей на Hacker News)
news_titles = soup.find_all('a', class_='titlelink')

# Вывод заголовков новостей
for title in news_titles:
print(title.text)


Этот код делает следующее:
1. Импортирует библиотеки requests и BeautifulSoup.
2. Отправляет GET-запрос к сайту Hacker News.
3. Анализирует полученный HTML-код.
4. Ищет все ссылки, которые являются заголовками новостей (на Hacker News они имеют класс 'titlelink').
5. Выводит текст каждого заголовка новости.

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

Подпишись 👉🏻 @KodduuPython 🤖
Осталось 6 дней до окончания скидки в 2000 руб на курс по Python 👀 Торопитесь https://stepik.org/a/185238/pay?promo=dcfeb683c217284e
Давайте рассмотрим пример кода на Python, использующий одну из новых и популярных библиотек — streamlit. Streamlit — это библиотека для быстрого создания веб-приложений для анализа данных и машинного обучения. В этом примере мы создадим простое веб-приложение для визуализации данных.

Установите Streamlit, если у вас его еще нет, используя pip:
pip install streamlit


А вот пример кода:

import streamlit as st
import pandas as pd
import numpy as np

# Заголовок приложения
st.title('Пример веб-приложения Streamlit')

# Генерация случайных данных
data = pd.DataFrame(
np.random.randn(50, 3),
columns=['a', 'b', 'c']
)

# Добавление графика в приложение
st.line_chart(data)


Для запуска приложения, сохраните этот код в файл, например app.py, и запустите его с помощью Streamlit:
bash
streamlit run app.py


Это приложение:
1. Импортирует необходимые библиотеки (streamlit, pandas и numpy).
2. Создает заголовок для веб-приложения.
3. Генерирует случайный набор данных.
4. Использует st.line_chart для добавления графика на веб-страницу, который визуализирует эти данные.

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

Подпишись 👉🏻 @KodduuPython 🤖
Другим трендовым примером является использование библиотеки fastapi для создания высокопроизводительного веб-API. FastAPI — это современный, быстрый (высокопроизводительный) веб-фреймворк для построения API с Python 3.7+, основанный на стандартных типах Python для декларативной валидации запросов и ответов.

Сначала установите fastapi и uvicorn, асинхронный сервер:
pip install fastapi uvicorn


Вот простой пример кода, создающий базовый API:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

# Определение модели данных
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None

# Маршрут для чтения данных
@app.get("/")
def read_root():
return {"Hello": "World"}

# Маршрут для создания данных
@app.post("/items/")
def create_item(item: Item):
item_dict = item.dict()
if item.tax:
price_with_tax = item.price + item.tax
item_dict.update({"price_with_tax": price_with_tax})
return item_dict


Чтобы запустить сервер, сохраните этот код в файл (например, main.py) и запустите его с помощью Uvicorn:
bash
uvicorn main:app --reload


В этом примере:
1. Создается экземпляр FastAPI.
2. Определяется модель данных Item с помощью Pydantic, которая используется для валидации данных.
3. Создается маршрут GET (read_root), который возвращает простое сообщение.
4. Создается маршрут POST (create_item), который принимает данные, валидирует их и возвращает их с дополнительными вычислениями, если применимо.

FastAPI подходит для создания RESTful API благодаря своей производительности, простоте использования и автоматической генерации документации (с использованием Swagger UI).

Подпишись 👉🏻 @KodduuPython 🤖
👍2
Осталось 3 дня, цена вопроса три чашки кофе ☕️☕️☕️ и вы получаете самый нескучный курс по Python https://stepik.org/a/185238/pay?promo=dcfeb683c217284e
Давайте рассмотрим еще один пример, на этот раз используя библиотеку PyTorch для глубокого обучения. PyTorch широко используется в исследованиях искусственного интеллекта и машинного обучения и позволяет легко создавать и обучать нейронные сети.

Пример: Создание и обучение простой нейронной сети для классификации изображений из набора данных MNIST (цифры от 0 до 9).

import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms

# Загрузка и преобразование данных
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
trainset = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)

# Определение нейронной сети
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(28*28, 512)
self.fc2 = nn.Linear(512, 10)

def forward(self, x):
x = x.view(-1, 28*28)
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x

net = Net()

# Определение функции потерь и оптимизатора
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.01, momentum=0.9)

# Цикл обучения
for epoch in range(2): # проходим по датасету несколько раз
for i, data in enumerate(trainloader, 0):
inputs, labels = data
optimizer.zero_grad()
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()

print('Обучение завершено')


В этом примере:
1. Используются torch и torchvision для работы с данными и моделями.
2. Создается простая полносвязная нейронная сеть для классификации изображений.
3. Производится обучение сети на данных MNIST с использованием стохастического градиентного спуска.

PyTorch обеспечивает гибкость и мощность для построения сложных моделей глубокого обучения, а также предоставляет интуитивно понятный интерфейс для экспериментов и исследований.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим пример с использованием библиотеки transformers от Hugging Face, которая является одной из наиболее популярных и новаторских библиотек в области обработки естественного языка (NLP). Библиотека transformers предоставляет доступ к множеству предварительно обученных моделей, таких как BERT, GPT-2, T5, которые можно использовать для различных задач NLP, включая классификацию текста, генерацию текста и др.

Пример: Использование предварительно обученной модели BERT для классификации текста (анализа тональности).

Сначала установите библиотеку transformers:
pip install transformers


Затем вот пример кода:

from transformers import BertTokenizer, BertForSequenceClassification
import torch

# Загрузка предварительно обученной модели и токенизатора
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')

# Текст для анализа
text = "This new library is amazing!"

# Токенизация и подготовка входных данных
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)

# Получение и интерпретация результата
predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
class_index = predictions.argmax().item()
classes = ['negative', 'positive']

print(f"Текст: '{text}'")
print(f"Тональность: {classes[class_index]}")


В этом примере:
1. Используется предварительно обученная модель BERT для классификации текста.
2. Текст токенизируется, преобразуется в тензоры и подается в модель.
3. Полученный результат анализируется для определения тональности текста.

transformers предоставляет простой способ работы с передовыми моделями NLP, делая доступными мощные инструменты обработки языка для широкого круга разработчиков и исследователей.

Подпишись 👉🏻 @KodduuPython 🤖
Одной из новых и интересных библиотек в области Python является JAX. Эта библиотека предлагает возможности для высокопроизводительных численных вычислений и исследований в области машинного обучения. JAX предоставляет API, очень похожий на NumPy, но с добавлением автоматического дифференцирования и оптимизации на GPU/TPU.

Пример: Использование JAX для численных вычислений и простой оптимизации функции.

Перед началом работы установите jax и jaxlib:
pip install jax jaxlib


Вот пример кода:

import jax.numpy as jnp
from jax import grad

# Функция для оптимизации: квадратичная функция
def f(x):
return x**2 + 3*x + 2

# Вычисление градиента функции
grad_f = grad(f)

# Итеративная оптимизация
x = 0.0 # начальная точка
learning_rate = 0.1
for i in range(100):
x -= learning_rate * grad_f(x)

print(f"Минимум функции находится при x = {x}")


Этот код делает следующее:
1. Использует jax.numpy, аналогично обычному numpy, для математических операций.
2. Определяет простую квадратичную функцию.
3. Использует grad из JAX для автоматического вычисления градиента функции.
4. Применяет простой градиентный спуск для нахождения минимума функции.

JAX полезна для исследований и разработки в области машинного обучения, особенно когда требуется настраиваемое и эффективное дифференцирование или выполнение на GPU/TPU.

Подпишись 👉🏻 @KodduuPython 🤖
2
Ещё одной интересной и сравнительно новой библиотекой в мире Python является Dash от Plotly. Dash — это фреймворк для создания веб-приложений для аналитических приложений с использованием только Python, без необходимости владения HTML, CSS или JavaScript. Это идеально подходит для создания интерактивных дашбордов и аналитических приложений.

Пример: Создание простого дашборда с интерактивным графиком.

Для начала установите dash:
pip install dash


Вот пример кода для простого дашборда:

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.express as px
import pandas as pd

# Создание приложения Dash
app = dash.Dash(__name__)

# Пример данных
df = pd.DataFrame({
"Fruit": ["Яблоки", "Апельсины", "Бананы", "Яблоки", "Апельсины", "Бананы"],
"Amount": [4, 1, 2, 2, 4, 5],
"City": ["SF", "SF", "SF", "Монреаль", "Монреаль", "Монреаль"]
})

# Определение макета приложения
app.layout = html.Div([
dcc.Graph(id='bar-graph'),
dcc.Dropdown(
id='city-dropdown',
options=[{'label': i, 'value': i} for i in df['City'].unique()],
value='SF'
)
])

# Коллбэк для обновления графика
@app.callback(
Output('bar-graph', 'figure'),
[Input('city-dropdown', 'value')]
)
def update_graph(selected_city):
filtered_df = df[df.City == selected_city]
fig = px.bar(filtered_df, x="Fruit", y="Amount", barmode="group")
return fig

# Запуск приложения
if __name__ == '__main__':
app.run_server(debug=True)


В этом примере:
1. Используется dash для создания веб-приложения.
2. Данные представляют собой простую таблицу с фруктами, их количеством и городами.
3. Макет веб-приложения содержит Dropdown для выбора города и Graph для отображения данных.
4. С помощью коллбэка (callback) график обновляется в зависимости от выбранного города.

Dash — отличный выбор для создания интерактивных веб-приложений для анализа данных, особенно если вы предпочитаете работать исключительно с Python.

Подпишись 👉🏻 @KodduuPython 🤖
Сегодня последний день скидки, всего 890 рублей за наш курс по Python https://stepik.org/a/185238/pay?promo=dcfeb683c217284e