
С возвращением, друзья-энтузиасты Python! В нашей предыдущей статье мы углубились в мир скриптов Python и раскрыли первые пять типов, скрывающихся в недрах кода. Но не бойтесь, поскольку мы еще не раскрыли все тайны написания сценариев на Python. В этом выпуске мы смело рискнем и откроем оставшиеся пять типов скриптов, которые позволят вам программировать как профессионал в кратчайшие сроки. Так что хватайте свой любимый напиток и давайте готовиться к сценарию как босс!
По мере того, как мы продолжаем наше путешествие в область написания сценариев Python, мы раскроем оставшиеся пять типов сценариев, которые выведут ваши навыки программирования на новый уровень. Итак, присоединяйтесь ко мне, и мы углубимся в мир скриптов Python и раскроем секреты последних пяти типов.
1). Автоматизация анализа данных:
Библиотека Python pandas — мощный инструмент для анализа и обработки данных. Следующий сценарий демонстрирует, как использовать его для автоматизации процесса очистки, преобразования и анализа набора данных.
import pandas as pd
# Reading a CSV file
df = pd.read_csv("data.csv")
# Cleaning data
df.dropna(inplace=True) # Dropping missing values
df = df[df["column_name"] != "some_value"] # Removing specific rows
# Transforming data
df["column_name"] = df["column_name"].str.lower() # Changing string to lowercase
df["column_name"] = df["column_name"].astype(int) # Changing column datatype
# Analyzing data
print(df["column_name"].value_counts()) # Prints the frequency of unique values in the column
# Saving the cleaned and transformed data to a new CSV file
df.to_csv("cleaned_data.csv", index=False)
Комментарии в приведенном выше скрипте в значительной степени понятны для человека с базовыми знаниями Python. Сценарий представляет собой простой пример, демонстрирующий мощь библиотеки pandas и то, как ее можно использовать для автоматизации задач очистки, преобразования и анализа данных. Однако сценарий ограничен, и в реальных сценариях набор данных может быть намного больше, а операции очистки, преобразования и анализа, вероятно, будут более сложными.
2). Автоматизация задач компьютерного зрения:
Автоматизация задач компьютерного зрения относится к использованию Python и его библиотек для автоматического выполнения различных операций обработки изображений и компьютерного зрения. Одна из самых популярных библиотек для задач компьютерного зрения на Python — opencv.
OpenCV — это библиотека функций программирования, в основном предназначенная для компьютерного зрения в реальном времени. Он предоставляет широкий спектр функций, включая ввод-вывод изображений и видео, обработку изображений, анализ видео, обнаружение и распознавание объектов и многое другое. Например:
import cv2
# Load the cascade classifier for face detection
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
# Load the image
img = cv2.imread("image.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Detect faces
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
# Draw rectangles around the faces
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
# Show the image
cv2.imshow("Faces", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Вышеприведенный скрипт определяет лица на изображении. Он начинается с загрузки каскадного классификатора для обнаружения лиц, этот классификатор представляет собой предварительно обученную модель, которая может распознавать лица на изображении.
Затем он загружает изображение и преобразует его в оттенки серого с помощью метода cv2.cvtColor(). Затем изображение передается методу классификатора detectMultiScale(), который обнаруживает лица на изображении. Метод возвращает список координат обнаруженных лиц.
Затем скрипт перебирает список координат и рисует прямоугольники вокруг обнаруженных лиц, используя метод cv2.rectangle(). Наконец, изображение отображается на экране с помощью метода cv2.imshow().
Это всего лишь базовый пример того, чего можно достичь с помощью OpenCV, и существует множество других функций, которые можно автоматизировать, например обнаружение объектов, обработка изображений и анализ видео. OpenCV — очень мощная библиотека, которую можно использовать для автоматизации широкого спектра задач компьютерного зрения, таких как распознавание лиц, отслеживание объектов и стабилизация изображения.
3). Автоматическое шифрование данных:
Под автоматизацией шифрования данных понимается использование Python и его библиотек для автоматического шифрования и расшифровки данных и файлов. Одной из самых популярных библиотек для шифрования данных в Python является криптография. «cryptography» – это библиотека, содержащая криптографические рецепты и примитивы. Он включает в себя как рецепты высокого уровня, так и низкоуровневые интерфейсы для общих криптографических алгоритмов, таких как симметричные шифры, дайджесты сообщений и функции получения ключей. Следующий пример демонстрирует, как мы можем зашифровать файл с помощью криптографической библиотеки:
import os
from cryptography.fernet import Fernet
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
password = b"super_secret_password"
salt = os.urandom(16)
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256,
iterations=100000,
length=32,
salt=salt,
backend=default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(password))
cipher = Fernet(key)
# Encrypt the file
with open("file.txt", "rb") as f:
data = f.read()
cipher_text = cipher.encrypt(data)
with open("file.txt", "wb") as f:
f.write(cipher_text)
Он начинается с создания ключа с помощью функции получения ключа PBKDF2HMAC, которая представляет собой функцию получения ключа на основе пароля, использующую алгоритм безопасного хеширования (SHA-256) и солт-значение. Солт-значение генерируется с помощью функции os.urandom(), которая генерирует криптографически безопасные случайные байты.
Затем он создает объект Fernet, который представляет собой реализацию симметричной (также известной как «секретный ключ») аутентифицированной криптографии.
Затем он считывает текстовый файл и шифрует его с помощью метода encrypt() объекта Fernet. Наконец, он записывает зашифрованные данные в файл.
Важно отметить, что ключ, используемый для шифрования файла, должен храниться в секрете и надежно храниться. Если ключ утерян или скомпрометирован, зашифрованные данные станут нечитаемыми.
4). Автоматизация тестирования и отладки:
Автоматизация тестирования и отладки относится к использованию Python и его библиотек для автоматического запуска тестов и отладки кода. Существует несколько популярных библиотек для автоматизации тестирования и отладки в Python, например unittest, pytest, nose и doctest.
Вот пример использования библиотеки unittest для автоматизации тестирования функции Python, которая находит самую длинную палиндромную подстроку в заданной строке:
def longest_palindrome(s):
n = len(s)
ans = ""
for i in range(n):
for j in range(i+1, n+1):
substring = s[i:j]
if substring == substring[::-1] and len(substring) > len(ans):
ans = substring
return ans
class TestLongestPalindrome(unittest.TestCase):
def test_longest_palindrome(self):
self.assertEqual(longest_palindrome("babad"), "bab")
self.assertEqual(longest_palindrome("cbbd"), "bb")
self.assertEqual(longest_palindrome("a"), "a")
self.assertEqual(longest_palindrome(""), "")
if __name__ == '__main__':
unittest.main()
Этот скрипт использует библиотеку unittest для автоматизации тестирования функции Python, которая находит самую длинную палиндромную подстроку в заданной строке. Функция longest_palindrome принимает строку в качестве входных данных и возвращает самую длинную палиндромную подстроку, перебирая все возможные подстроки и проверяя, является ли она палиндромом и ее длина больше предыдущей.
Сценарий также определил класс TestLongestPalindrome, который наследуется от unittest.TestCase и содержит несколько тестовых методов. Каждый тестовый метод использует метод assertEqual(), чтобы проверить, равен ли вывод функции longest_palindrome() ожидаемому результату.
При запуске сценария вызывается функция unittest.main(), которая запускает все методы тестирования в классе TestLongestPalindrome. Если какой-либо из тестов не пройден (т. е. вывод функции longest_palindrome() не равен ожидаемому результату), выводится сообщение об ошибке, указывающее, какой тест не пройден, а также каковы были ожидаемые и фактические результаты.
Этот сценарий является примером того, как можно использовать библиотеку unittest для автоматизации тестирования функции Python. Это позволяет вам легко тестировать свой код и выявлять любые ошибки или ошибки, прежде чем развертывать его в рабочей среде.
5). Автоматизация прогнозирования временных рядов:
Автоматизация прогнозирования временных рядов относится к использованию Python и его библиотек для автоматического прогнозирования будущих значений данных временных рядов. Существует несколько популярных библиотек для автоматизации прогнозирования временных рядов в Python, например statsmodels и Prophet.
prophet – это библиотека с открытым исходным кодом, разработанная Facebook, которая предоставляет простой и быстрый способ прогнозирования временных рядов. Он основан на аддитивной модели, в которой нелинейные тренды соответствуют годовой, еженедельной и ежедневной сезонности, а также праздничным эффектам. Он лучше всего работает с временными рядами, которые имеют сильные сезонные эффекты и несколько сезонов исторических данных.
Вот пример использования библиотеки Prophet для прогнозирования временных рядов для ежедневных данных о продажах:
import pandas as pd
from fbprophet import Prophet
# Read in data
df = pd.read_csv("sales_data.csv")
# Create prophet model
model = Prophet()
# Fit model to data
model.fit(df)
# Create future dataframe
future_data = model.make_future_dataframe(periods=365)
# Make predictions
forecast = model.predict(future_data)
# Print forecast dataframe
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']])
Как сказал X:
Одна картинка стоит тысячи слов

Вы также можете включить визуальные эффекты для прогнозируемых продаж, добавив следующие строки кода выше:
# Import visualization library import matplotlib.pyplot as plt # Plot predicted values model.plot(forecast) plt.show() # Plot predicted values with uncertainty intervals model.plot(forecast) plt.fill_between(forecast['ds'], forecast['yhat_lower'], forecast['yhat_upper'], color='pink') plt.show() # Plot component of the forecast model.plot_components(forecast) plt.show()
Первая визуализация, model.plot(forecast), показывает прогнозируемые значения и исторические данные, что дает вам общее представление о том, насколько хорошо модель соответствует данным.
Вторая визуализация, plt.fill_between(прогноз['ds'], прогноз['yhat_lower'], прогноз['yhat_upper'], color='pink'), показывает прогнозируемые значения с интервалами неопределенности. , это позволяет увидеть, насколько велика неопределенность в прогнозах.
Третья визуализация, model.plot_components(forecast), показывает компоненты прогноза, такие как тенденция, сезонность и праздничные дни.
Заключение

В заключение, возможности автоматизации Python обширны и постоянно развиваются, и каждый день разрабатываются новые библиотеки и фреймворки. Это может помочь вам разными способами улучшить ваши повседневные дела и достичь ваших целей. Использование таких библиотек, как pandas, opencv, cryptography, unittest, Prophet и других, еще больше упрощает выполнение этих задач эффективным и автоматизированным способом.
С нетерпением жду положительных отзывов об этой части скриптов Python. Я надеюсь, что они помогут вам в вашей сфере написания сценариев.
Удачного кодирования! 🧑💻🤓