Pythoner
7.22K subscribers
859 photos
27 videos
4 files
653 links
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику.

Сотрудничество - @flattys
Цены - @serpent_media

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
✈️Сегодня решаем задачу, с которой часто сталкиваются аналитики данных: как объединить несколько CSV-файлов в один . Это полезно, если у вас есть данные, разбитые по дням, месяцам или категориям, и вы хотите собрать их в единый датасет для анализа.

➡️Задача: У нас есть несколько CSV-файлов (file1.csv, file2.csv, file3.csv), каждый из которых содержит данные с одинаковой структурой. Нужно объединить их в один файл.

➡️Решение:
import pandas as pd
import glob

# Шаг 1: Собираем все CSV-файлы из папки
files = glob.glob("data/*.csv") # Указываем путь к файлам
dfs = [pd.read_csv(file) for file in files] # Читаем каждый файл в DataFrame

# Шаг 2: Объединяем все DataFrame в один
combined_df = pd.concat(dfs, ignore_index=True)

# Шаг 3: Сохраняем результат в новый CSV-файл
combined_df.to_csv("combined_data.csv", index=False)

print("Все файлы успешно объединены!")


⬆️Как это работает:
- glob.glob("data/*.csv"): Находит все CSV-файлы в указанной папке.

- pd.read_csv(file): Читает каждый файл в DataFrame.

- pd.concat(dfs, ignore_index=True): Объединяет все DataFrame в один, игнорируя старые индексы.

- to_csv("combined_data.csv", index=False): Сохраняет объединённые данные в новый файл без дополнительного индекса.

💡Дополнительно:
Если файлы имеют разную структуру (например, разные столбцы), можно использовать параметр join="inner" или join="outer" в функции pd.concat().

join="inner": Оставит только общие столбцы.
join="outer": Включит все столбцы, заполняя пропуски значением NaN.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍143🔥2
✈️Bokeh — это библиотека визуализации данных для создания интерактивных и информативных графиков и диаграмм в веб-приложениях. С её помощью можно легко создавать красивые и наглядные визуализации данных, которые могут быть встроены в веб-страницы.

➡️Пример использования Bokeh:
from bokeh.plotting import figure, show, output_file

# Исходные данные
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# Создаем график
plot = figure(title="Простой график", x_axis_label='x', y_axis_label='y')
plot.line(x, y, legend_label="Тренд", line_width=2)

# Сохраняем результат в файл
output_file("line.html")

# Показываем график
show(plot)


⬆️Результат:
После выполнения кода откроется окно браузера с интерактивным графиком, где можно приближать, отдалять и перемещать данные.

➡️Пример добавления интерактивности:
from bokeh.models import HoverTool
from bokeh.plotting import figure, show

# Исходные данные
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# Создаем график
plot = figure(title="Интерактивный график", tools="pan,wheel_zoom,box_zoom,reset")
plot.circle(x, y, size=10, color="navy", alpha=0.5)

# Добавляем инструмент HoverTool для подсказок
hover = HoverTool(tooltips=[("x", "@x"), ("y", "@y")])
plot.add_tools(hover)

# Показываем график
show(plot)


💡Заключение:
Bokeh — это мощный инструмент для создания интерактивных визуализаций данных в Python. Он идеально подходит для аналитиков, учетных данных и разработчиков, которым нужна возможность создавать сложные графики с минимальными усилиями.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🔥2
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
😁16🤣9👍2
✈️Что такое itertools.chain?
itertools.chain — это полезная функция из стандартной библиотеки Python для объединения нескольких итерируемых объектов (списки, кортежи и т.д.) в один. Она помогает обходить несколько коллекций последовательно, как будто они являются одной.

➡️Пример объединение списков:
from itertools import chain

# Исходные данные
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]

# Объединяем списки с помощью chain
combined = chain(list1, list2, list3)

print("Объединенный результат:")
for item in combined:
print(item, end=" ") # Вывод: 1 2 3 4 5 6 7 8 9


➡️Пример использования itertools.chain с разными типами данных:
from itertools import chain

# Разные типы данных
data1 = [10, 20, 30]
data2 = ('a', 'b', 'c')
data3 = range(3)

# Объединяем все вместе
result = list(chain(data1, data2, data3))

print("Результат после объединения:")
print(result) # Вывод: [10, 20, 30, 'a', 'b', 'c', 0, 1, 2]


💡itertools.chain позволяет эффективно работать с несколькими последовательностями как с одной, не создавая дополнительных списков и не тратя лишние ресурсы на их хранение в памяти.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4🤔4🗿1
👍8
Что выдаст код выше
Anonymous Quiz
1%
3
3%
10
4%
13
79%
7.33333
13%
13.33333
👍13👌4🔥3
🤔Разбор

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

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍183🔥3
✈️Requests — это популярная библиотека Python для работы с HTTP-запросами. Она позволяет легко отправлять GET, POST, PUT, DELETE и другие типы запросов к веб-серверам, а также обрабатывать ответы в виде текста, JSON или байтов.

➡️Пример использования requests, отправка GET-запроса:
import requests

# Отправляем GET-запрос
response = requests.get("https://jsonplaceholder.typicode.com/posts/1")

# Проверяем статус код
if response.status_code == 200:
print("Успешный запрос!")
data = response.json() # Преобразуем ответ в JSON
print(data)
else:
print(f"Ошибка: {response.status_code}")


➡️Пример POST-запроса:
import requests

# Данные для отправки
payload = {
"title": "foo",
"body": "bar",
"userId": 1
}

# Отправляем POST-запрос
response = requests.post("https://jsonplaceholder.typicode.com/posts", json=payload)

# Обработка ответа
if response.status_code == 201:
print("Данные успешно созданы!")
print(response.json())
else:
print(f"Ошибка: {response.status_code}")


💡Requests — это незаменимый инструмент для работы с веб-сервисами и API в Python. Он делает взаимодействие с интернетом простым и эффективным.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍124🔥2
✈️PyInquirer — это библиотека Python для создания интерактивных командных строковых интерфейсов (CLI) с использованием красивых и удобных вопросов. Она позволяет добавлять выбор из списка, ввод данных, подтверждения и многое другое, делая ваши CLI-приложения более дружелюбными для пользователей.

➡️Пример использования PyInquirer. Создание простого интерактивного меню:
from PyInquirer import prompt

# Определение списка вопросов
questions = [
{
'type': 'list',
'name': 'action',
'message': 'Что вы хотите сделать?',
'choices': ['Добавить задачу', 'Удалить задачу', 'Выход']
},
{
'type': 'input',
'name': 'task',
'message': 'Введите название задачи:',
'when': lambda answers: answers['action'] == 'Добавить задачу'
}
]

# Отображение вопросов
answers = prompt(questions)

# Обработка ответов
if answers['action'] == 'Добавить задачу':
print(f"Задача '{answers['task']}' успешно добавлена!")
elif answers['action'] == 'Выход':
print("До свидания!")


⬆️Как работает этот код:
— Пользователь выбирает действие из списка (Добавить задачу, Удалить задачу или Выход).
— Если выбрано "Добавить задачу", пользователю предлагается ввести название задачи.
— В зависимости от выбора выводится соответствующее сообщение.

🔎Плюсы PyInquirer:
- Интерактивность: Легко создавать сложные диалоги с различными типами вопросов (выбор из списка, ввод текста, подтверждение и т.д.).

- Красивый вывод: Библиотека обеспечивает эстетичный и удобный интерфейс для пользователей.

- Гибкость: Возможность настраивать поведение вопросов через параметры, такие как when и filter.

- Простота интеграции: Легко добавлять в существующие CLI-приложения без сложных изменений.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥43
✈️Faker — это библиотека Python для генерации фиктивных данных, таких как имена, адреса, email-адреса, телефоны, тексты и многое другое. Она идеально подходит для заполнения баз данных тестовыми данными, создания демонстрационных приложений или защиты конфиденциальной информации.

➡️Пример использования Faker:
from faker import Faker

# Создаем объект Faker (с русским языком)
fake = Faker('ru_RU')

# Генерируем фейковые данные
name = fake.name() # Фейковое имя
address = fake.address() # Фейковый адрес
email = fake.email() # Фейковый email
text = fake.text() # Фейковый текст

# Выводим результаты
print(f"Имя: {name}")
print(f"Адрес: {address}")
print(f"Email: {email}")
print(f"Текст: {text}")


⬆️Результат:
Имя: Мария Иванова
Адрес: 123456, Москва, улица Ленина, дом 10, квартира 45
Email: maria.ivanova@example.com
Текст: Lorem ipsum dolor sit amet, consectetur adipiscing elit...


🔎Почему библиотека Faker полезна?

- Разнообразие данных: Поддерживает множество типов данных, включая имена, адреса, номера телефонов, даты, тексты и даже банковские счета.
- Локализация: Может генерировать данные на разных языках (включая русский).
- Простота использования: Легко интегрируется в проекты для быстрой генерации тестовых данных.
- Защита данных: Используйте Faker для замены реальных данных в тестовых средах, чтобы защитить конфиденциальную информацию.

➡️Синтетические данные для машинного обучения

Faker может быть использован для создания синтетических наборов данных, которые помогают обучать модели машинного обучения без необходимости использовать реальные данные. Это особенно полезно, когда доступ к реальным данным ограничен или они содержат чувствительную информацию.

💡Заключение
Faker — это отличный инструмент для разработчиков, которым нужно быстро создавать реалистичные тестовые данные. Он делает процесс разработки и тестирования более эффективным и удобным.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍86🔥4
➡️Пример использования Blessings. Создание цветного вывода:
from blessings import Terminal

# Создаем объект терминала
term = Terminal()

# Используем цвета и стили
print(term.bold('Это жирный текст!'))
print(term.red_on_yellow('Красный текст на желтом фоне!'))
print(term.move_down + term.green('Текст ниже предыдущего!'))


➡️Пример позиционирование курсора:
from blessings import Terminal

term = Terminal()

# Перемещаем курсор в конкретную позицию
with term.location(10, 5): # (x=10, y=5)
print("Текст в определенной позиции!")

# Возвращаемся в конец вывода
print(term.move_down + "Конец программы.")


🔎Почему библиотека Blessings полезна?

- Простота: Легко добавлять цвета, стили и управление курсором без сложных escape-последовательностей.
- Кроссплатформенность: Работает одинаково хорошо на Linux, macOS и Windows (с использованием colorama).
- Читаемость кода: Аннотации, такие как term.bold или term.red, делают код более понятным и поддерживаемым.
- Минимальные зависимости: Библиотека легкая и не требует установки множества зависимостей.

💡Blessings — это отличный инструмент для разработчиков, которым нужно создавать красивые и интерактивные CLI-приложения. Она делает работу с терминалом приятной и удобной.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥2
✈️Click — это простая и мощная библиотека Python для создания командных строковых интерфейсов (CLI). Она позволяет легко создавать сложные программы с поддержкой параметров, аргументов и вложенных команд. Благодаря своей гибкости и удобству использования, Click стал одним из самых популярных инструментов для разработки CLI-приложений.

➡️Пример создания простой CLI-программы:
import click

# Основная команда
@click.command()
@click.option('--count', default=1, help='Количество приветствий.')
@click.option('--name', prompt='Введите ваше имя', help='Имя пользователя.')
def hello(count, name):
"""Простая программа для вывода приветствия若干 раз."""
for _ in range(count):
click.echo(f"Привет, {name}!")

if __name__ == '__main__':
hello()


⬆️Как работает этот код:
1. Пользователь запускает программу через терминал.
2. Программа предлагает ввести имя пользователя.
3. Выводит приветствие столько раз, сколько указано в параметре --count.

🔎Почему библиотека Click полезна?
- Простота: Легко создавать CLI-приложения с минимальными усилиями.
- Гибкость: Поддерживает параметры, аргументы, флаги и вложенные команды.
- Автоматическая справка: Автоматически генерирует справку для ваших команд.
- Кроссплатформенность: Работает одинаково хорошо на Linux, macOS и Windows.

💡Заключение
Click — это отличный выбор для разработчиков, которым нужно быстро создавать надежные и удобные CLI-интерфейсы. Он делает работу с терминалом приятной и эффективной.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥2
👍62🔥2
Что выдаст код выше
Anonymous Quiz
66%
2 3
3%
3 2
2%
1 2
3%
2 1
17%
2 4
9%
1 3
🤔9🤓5🤨43👍3👌1
🤔Разбор

В тексте переменной txt есть 4 буквы —> индекс последней —> [3]
Заходим в первый try, сразу же запрыгиваем во второй. Пробуем получить txt[5] —> не можем—> ошибку ловит except.
В except'e выводим число 2.

Далее выходим из внутреннего try-except'a и пытаемся получить txt[3] —> удачно —> на следующей строке выводим 3.

В except не заходим, так как все прошло успешно.
Ответ: 2 3


🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍114🔥4
✈️Tqdm — это компактная и мощная библиотека Python для отображения прогресс-баров в ваших программах. Она позволяет легко добавлять визуальное представление процесса выполнения задач, что особенно полезно при работе с большими данными или длительными вычислениями.

➡️Пример использования Tqdm. Простой прогресс-бар:
from tqdm import tqdm
import time

# Имитация долгой операции
for i in tqdm(range(100)):
time.sleep(0.05) # Задержка для имитации работы


➡️Пример прогресс-бара для обработки файлов:
from tqdm import tqdm
import os

# Список файлов в директории
directory = "my_directory"
files = os.listdir(directory)

# Обработка файлов с прогресс-баром
for file in tqdm(files, desc="Обработка файлов"):
# Имитация обработки файла
time.sleep(0.1)


👀Плюсы:
- Простота интеграции: Достаточно обернуть ваш код в tqdm(), чтобы добавить прогресс-бар.
- Кастомизация: Возможность настраивать внешний вид прогресс-бара (текст, цвета, символы и т.д.).
- Многозадачность: Поддерживает работу с многопоточными и асинхронными программами.
- Универсальность: Может использоваться с любыми итерируемыми объектами, такими как списки, генераторы или даже файловые потоки.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥2
Joblib — это библиотека Python, которая специализируется на кэшировании результатов вычислений и упрощении параллельной обработки данных. Она особенно популярна в области машинного обучения для сохранения моделей и оптимизации времени выполнения за счет многопроцессорности.

➡️Пример использования Joblib. Сохранение и загрузка данных:
import joblib

# Исходные данные
data = {
"name": "Alice",
"age": 30,
"skills": ["Python", "Data Science", "Machine Learning"]
}

# Сохраняем данные в файл
joblib.dump(data, 'data.joblib')
print("Данные успешно сохранены!")

# Загружаем данные из файла
loaded_data = joblib.load('data.joblib')
print("Загруженные данные:")
print(loaded_data)


➡️Пример параллельной обработки:
from joblib import Parallel, delayed
import math

# Функция для вычисления квадратного корня
def sqrt(x):
return math.sqrt(x)

# Список чисел
numbers = list(range(1, 21))

# Выполняем вычисления параллельно
results = Parallel(n_jobs=-1)(delayed(sqrt)(num) for num in numbers)

print("Результаты вычислений:")
print(results)


➡️Некоторые преимущества использования Joblib:
- Простота: Joblib упрощает код и скрывает множество деталей, связанных с многозадачностью.
- Меньше накладных расходов: Для некоторых операций Joblib может быть быстрее, чем использование дефолтных механизмов Python (например, multiprocessing).
- Меньше кода: Joblib позволяет распараллелить вычисления с минимальными усилиями.

💡Заключение
Joblib — это мощный инструмент для разработчиков, которым нужно оптимизировать время выполнения программ и эффективно работать с данными. Он помогает сделать ваши программы быстрее и удобнее для повторного использования.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64🔥2
✈️Модульное программирование — это подход к разработке программного обеспечения, при котором код делится на независимые модули (или компоненты), каждый из которых отвечает за конкретную функциональность. Этот метод позволяет создавать более чистый, поддерживаемый и масштабируемый код.

➡️Преимущества модульного программирования:
- Читаемость: Разделение кода на модули делает его легче для понимания и чтения.

- Модифицируемость: Обычно модули имеют логические границы между различными задачами. Если в модулях свести к минимуму взаимозависимости, то снижается вероятность того, что модификации одного модуля окажут влияние на другие части программы.

- Тестированиe: Независимые модули проще тестировать, так как их можно проверять изолированно.

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

- Повторное использование кода: Функциональность, определённая в одном модуле, может быть легко использована повторно другими приложениями, что избавляет от необходимости дублирования.

➡️Пример cоздания модуля для работы с числами:
# numbers.py (модуль)
def is_even(number):
"""Проверяет, является ли число четным."""
return number % 2 == 0

def square(number):
"""Возвращает квадрат числа."""
return number ** 2


➡️Использование модуля в основном файле:
# main.py (основной файл)
import numbers

user_input = int(input("Введите число: "))

if numbers.is_even(user_input):
print(f"{user_input} — четное число.")
else:
print(f"{user_input} — нечетное число.")

print(f"Квадрат числа {user_input} равен {numbers.square(user_input)}.")


💡Заключение
Модульное программирование — это ключевой принцип создания качественного программного обеспечения. Он помогает писать чистый, эффективный и легко поддерживаемый код.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍125🔥3
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
23👍7🔥4🤣3
✈️Виртуальное окружение — это изолированное пространство для вашего проекта, где вы можете устанавливать необходимые зависимости без конфликтов с другими проектами. Это особенно важно при работе над несколькими проектами, каждый из которых требует разных версий библиотек.

➡️Почему нужны виртуальные окружения?

- Изолирование зависимостей: Каждый проект имеет свои зависимости, и виртуальное окружение помогает избежать конфликтов между ними.

- Упрощение управления: Легко воспроизводить окружение на других компьютерах или передавать его коллегам.

- Чистота системы: Основная система остается чистой, так как все зависимости остаются внутри виртуального окружения.

➡️Создание и использование виртуального окружения:
# Установка модуля venv (если еще не установлено)
python -m venv myenv # Создание виртуального окружения с именем "myenv"

# Активация виртуального окружения
# Для Windows:
myenv\Scripts\activate
# Для macOS/Linux:
source myenv/bin/activate

# Установка зависимостей
pip install requests numpy pandas

# Фиксация зависимостей в файл requirements.txt
pip freeze > requirements.txt

# Установка зависимостей из файла requirements.txt
pip install -r requirements.txt

# Деактивация виртуального окружения
deactivate


💡Заключение
Виртуальные окружения — это важный инструмент для каждого разработчика Python. Они помогают поддерживать проекты в порядке и избегать проблем с зависимостями.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍125🔥2