Архив метки: Python

Найти максимальное значение в списке Python

Никто из нас не может оспаривать, что Python — один из самых популярных и полезных языков программирования. Он предлагает широкий спектр типов данных, которые полезны в широком диапазоне приложений.

Один из основных и универсальных типов данных в Python — это список. Список Python — это набор упорядоченных элементов, разделенных запятыми. Список Python является изменяемым, и вы можете изменять элементы списка.

Из этой статьи Вы узнаете, как создать список Python, и предложите различные способы найти максимальное значение внутри списка.

 

Как создать список Python

Начнем с основ: как создать список.

Примечание
Если вы уже знакомы с созданием списков Python, можете пропустить.

Чтобы создать список в Python, мы добавляем все элементы (разделяя каждый элемент запятой) внутри пары квадратных скобок [].

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

В следующем примере создается список my_list с различными элементами в нем.

# инициализировать пустой список

my_list = []

# список с целыми числами, строками, числами с плавающей запятой, словарями и вложенными списками

my_list_ = [10, "Hello World", 10.1, ["nested_list", {"key": "value"}, 10]]

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

 

Как получить доступ к элементам списка

Мы можем получить доступ к элементам в списке, используя различные методы. Для простоты мы обсудим только два метода.

Первый:

1: Индексирование массива

Чтобы получить доступ к элементам в массиве с использованием подхода индексирования массива, мы используем оператор индекса в Python. Внутри оператора мы передаем индекс, к которому хотим получить доступ.

Примечание
Индексирование в Python начинается с индекса 0. Это означает, что первый элемент в списке всегда имеет индекс 0.

Рассмотрим пример ниже:

db = [

"MySQL",

"PostgreSQL",

"SQLite",

"MongoDB",

"MariaDB",

"Redis",

"Microsoft SQL server",

"Oracle",

"Firebase",

"Elasticsearch"

]

Допустим, в приведенном выше списке представлены самые популярные базы данных. Чтобы найти наиболее используемую базу данных, мы можем использовать синтаксис:

print(db[0])

Приведенный выше оператор должен возвратить MySQL.

Примечание
Доступ к элементам из индекса списка приведет к ошибке индекса. Например, список БД содержит 10 элементов. Это означает, что индекс 10- го элемента равен 10 — 1, поскольку индекс начинается с 0.

 

Если мы попытаемся получить доступ к 10-му индексу, мы получим ошибку:

print(db[10])



IndexError: list index out of range

Вышеупомянутый метод полезен, когда вы знаете, сколько элементов находится в списке. Если вы не уверены в элементах в списке, вы можете использовать второй метод.

 

2: Использование цикла

Простой способ получить доступ ко всем элементам в списке — использовать простой цикл for. Пример кода для этого ниже:

db = [



"MySQL",



"PostgreSQ;",



"SQLite",



"MongoDB",



"MariaDB",



"Redis",



"Microsoft SQL server",



"Oracle",



"Firebase",



"Elasticsearch"



]



for item in db:



print(item)

Это зациклит каждый элемент в списке db и распечатает каждый элемент в нем.

Пример вывода для этого:

MySQL



PostgreSQ;



SQLite



MongoDB



MariaDB



Redis



Microsoft SQL server



Oracle



Firebase



Elasticsearch

 

Как найти максимальное значение в списке Python

Теперь давайте погрузимся в суть этой статьи; как найти максимальное значение в списке. Для этого мы будем реализовывать различные методы для достижения того же результата.

 

1. Использование метода сортировки

Первый метод, который мы можем использовать для поиска максимального значения в списке Python, — это метод сортировки.

Для этого мы передаем имя списка методу sort(), который отсортирует все значения в порядке возрастания. После процесса сортировки списка мы можем получить доступ к последнему элементу в массиве, чтобы получить наибольшее значение.

Например, рассмотрим массив значений ниже:

values = [



10, 29.34, 23, 72, 110, 773, 322, 63, 1, 34, 5, 10, 64.3



]

 

Мы можем просто вызвать метод сортировки по списку выше и получить последний элемент.

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

Рассмотрим пример кода ниже:

values = [



10, 23, 72, 110, 773, 322, 63, 1, 34, 5, 10



]



values.sort()



print(f"The maximum value in the list is: {values[-1]}")

Запустив приведенный выше код, мы должны получить максимальное значение как:

The maximum value in the list is: 773

 

2. Использование If… else

Другой простой способ получить максимальное значение в списке — использовать простой оператор if… else.

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

Рассмотрим реализацию ниже:

values = [



10, 23, 72, 110, 773, 322, 63, 1, 34, 5, 10



]



# предположим, что максимальное значение равно индексу 0



maximum = values[0]



for i in values:



if i > maximum:



maximum = i



print(f"Максимальное значение составляет: {maximum}")

 

Точно так же, если мы запустим приведенный выше код, мы должны получить максимальное значение 773. Вот пример вывода:

Максимальное значение составляет: 773

 

3: Использование функции Max

Python имеет встроенную функцию max, которую вы можете использовать для определения максимального значения в итерируемом объекте. Например, если мы вызываем функцию max в списке строк, она возвращает последний элемент со строками, расположенными в алфавитном порядке.

Вот пример:

values = [



10, 23, 72, 110, 773, 322, 63, 1, 34, 5, 10



]



print(f"Максимальное значение составляет: {max(values)}")

 

4: Использование метода Nlargest очереди кучи

Нетрадиционный способ найти наибольшее значение в списке — использовать метод nlargest в модуле Heap Queue.

Этот модуль реализует алгоритм очереди кучи. Узнайте больше о модуле очереди кучи Python.

Метод nlargest вернет наибольшие указанные значения. Например, если вы укажете 5, метод вернет 5 наибольших значений в указанной итерации.

Например:

from typing import ValuesView



import heapq



values = [



10, 23, 72, 110, 773, 322, 63, 1, 34, 5, 10



]



print(f"Максимальное значение составляет {heapq.nlargest(1, values)}")

 

Приведенный выше код должен вернуть значение 773.

Максимальное значение составляет: 773

 

Чтобы отобразить 5 наибольших значений, установите количество элементов на 5 следующим образом:

from typing import ValuesView



import heapq



values = [



10, 23, 72, 110, 773, 322, 63, 1, 34, 5, 10



]



print(f"Максимальными значениями по порядку являются {heapq.nlargest(5, values)}")

 

Это должно вернуть результат, аналогичный показанному ниже:

Максимальными значениями по порядку являются [773, 322, 110, 72, 63]

 

Хотя описанный выше метод может оказаться излишним, в некоторых случаях он может оказаться полезным.

 

Заключение

В этой статье показано, как создавать списки Python, получать доступ к элементам в списке и различные способы получения максимальных значений в списке Python.

Спасибо за чтение!



2021-08-23T22:47:09
Python

Как использовать функции Eval и Exec в Python

В этой статье будет рассмотрено руководство по использованию функций «Eval» и «Exec», доступных в стандартной библиотеке Python. Эти функции можно использовать по-разному для оценки и выполнения выражений Python. Использование обеих этих функций можно лучше понять на примерах. Некоторые примеры приведены ниже. Все примеры кода в этой статье протестированы с Python 3.9.5 в Ubuntu 21.04.

 

Использование Eval для оценки выражений Python

Функция Eval может использоваться для оценки выражений Python и получения из них возвращаемого значения. Любое выражение Python, которое необходимо вычислить, передается функции eval в виде обязательного аргумента. Выражения, переданные в качестве аргумента функциям Eval, имеют полный доступ к встроенным функциям Python, а также к глобальным и локальным пространствам имен. Взгляните на пример кода ниже:

n = 1



result = eval('''n * 2''')



print (result)



eval('''print(n * 2)''')

Тройные кавычки в приведенном выше примере используются для представления строк «как есть», без экранирования специальных символов или внесения каких-либо других изменений. Первый оператор в примере кода определяет переменную с именем «n», имеющую значение 1. Затем вызывается метод eval, передавая ему выражение Python в строковом формате. В строковом выражении имеется ссылка на переменную «n», поскольку она уже доступна в пространстве имен. Следующая инструкция печатает вывод переменной «результат». Последний оператор показывает, что вы можете напрямую вызывать встроенные функции Python в выражении, передаваемом функции eval в качестве аргумента.

После выполнения приведенного выше примера кода вы должны получить следующий результат:

2



2

 

Как видно из выходных данных выше, оба оператора печати дают одинаковый результат.

Вы можете дополнительно предоставить настраиваемые словари для глобальных и локальных пространств имен, чтобы ограничить и контролировать разрешенные объекты пространства имен. Взгляните на пример кода ниже:

n = 1



result = eval('''n * 2''')



print (result)



eval('''print(m * 2)''', {'m': 1})



eval('''print(n * 2)''', {'m': 1})

В операторе eval в четвертой строке предоставляется дополнительный аргумент, в котором используется словарь настраиваемых объектов глобального пространства имен. Когда вы предоставляете словарь настраиваемых глобальных объектов, eval использует только встроенные методы и сопоставления, включенные в словарь. Если вы используете пустой глобальный словарь («{}»), разрешены только встроенные методы и даже не настраиваемый импорт. Поскольку объект «m» в глобальном словаре имеет значение 1, оператор eval может использовать ссылку для «m». В последнем операторе объект «m» доступен в глобальном словаре, но не переменная «n», поскольку был предоставлен настраиваемый словарь глобальных объектов. Последний оператор вызовет ошибку, поскольку в пользовательском глобальном словаре пространства имен нет определения для «n».

После выполнения приведенного выше примера кода вы должны получить следующий результат:

2



2



Traceback (most recent call last):



File "/home/user/Downloads/./test.py", line 7, in <module>



eval('''print(n * 2)''', {'m': 1})



File "<string>", line 1, in <module>



NameError: name 'n' is not defined

Вы можете использовать словарь для объектов локального пространства имен так же, как и для объектов глобального пространства имен. Просто предоставьте пользовательский словарь в качестве третьего аргумента функции eval, чтобы использовать его в качестве сопоставления для объектов локального пространства имен.

 

Использование Exec для запуска кода Python

Функция exec работает аналогично функции eval с некоторыми отличиями. Выражение, передаваемое функции exec, может быть строкой или любым другим допустимым объектом Python, содержащим допустимый код Python. Для сравнения, функция eval принимает только строковые выражения. Вы также можете предоставить настраиваемые словари как для глобальных, так и для локальных объектов пространств имен, и метод exec ведет себя так же, как функция eval, когда используются сопоставления настраиваемых пространств имен. Еще одно отличие от функции eval заключается в том, что функция exec всегда возвращает значение «None». Взгляните на пример кода ниже:

n = 1



result = exec('''n * 2''')



print (result)



exec('''print(n * 2)''')



result = '''print(n * 2)'''



exec(result)

Блок кода очень похож на образец кода, использованный в примере eval, но вместо функции eval теперь используется функция exec. После выполнения приведенного выше примера кода вы должны получить следующий результат:

None



2



2

Как было сказано ранее, функция exec всегда возвращает значение «None», поэтому третья строка выдает «None» в качестве вывода. Затем оператор exec в четвертой строке использует функцию print для вывода «2». Затем переменной результата присваивается новое значение путем предоставления ей действительного оператора кода Python в строковой форме. Последний оператор показывает, что функция exec может напрямую вызывать объекты кода, содержащие допустимый код Python. Также на выходе получается «2».

 

Соображения безопасности

При использовании функций eval и exec вы должны знать, что обе эти функции позволяют выполнять произвольные выражения Python и блоки кода. Если вы сознательно не осведомлены о том, что используется в выражениях, эти операторы могут нанести вред среде, в которой вы работаете. Например, вы можете непреднамеренно модифицировать, удалять или вносить необратимые изменения в файлы, хранящиеся на хосте, используя модули «os» и «sys» и их методы в функциях eval и exec. Модуль «подпроцесс» в Python позволяет запускать новые процессы и выполнять команды оболочки. Выражения в методах eval и exec, использующие модуль подпроцесса, могут привести к непреднамеренному поведению, если вы не будете осторожны с тем, что используется в выражениях.

 

Вывод

Оба метода eval и exec позволяют обрабатывать и выполнять фрагменты кода Python. Вы можете передавать операторы eval другим функциям Python в качестве аргументов, поскольку они всегда возвращают значение, что немного похоже на лямбда-функции в Python. Точно так же вы можете использовать функцию exec для выполнения предопределенного кода Python. Чаще всего он используется, когда код Python нужно читать из одного файла и выполнять в другом.



2021-08-13T19:15:29
Python

Как проверить, открыт или закрыт файл в Python

Файл используется для постоянного хранения данных. Работа с файлом — очень распространенная задача любого языка программирования. В Python существует множество встроенных функций для создания, открытия, чтения, записи и закрытия файла. Для хранения данных можно создать два типа файлов. Это текстовые файлы и двоичные файлы. Любой файл необходимо открыть перед чтением или записью. Функция open() используется в Python для открытия файла. Использование функции open() — это один из способов проверить, открыт или закрыт конкретный файл. Если функция open() открывает ранее открытый файл, генерируется ошибка IOError. Другой способ проверить, открыт или закрыт файл — это проверить значения свойства closed объекта обработчика файлов. С использованием функции rename() — еще один способ проверить, открыт или закрыт файл. В этой статье показаны различные способы проверки открытия или закрытия любого файла в Python.

 

Создайте файл для проверки:

Вы можете использовать любой существующий файл или создать новый файл, чтобы протестировать пример кода, показанный в этой статьи. Был создан новый текстовый файл с именем clients.txt со следующим содержимым для использования в следующей части статьи.



ID     Name                           Email

01     Andrey Ex                   Andrey***@gmail.com

02     Max Terminator              Max***@gmail.com

03    Alex Murphy                  Alex***@gmail.com


 

Пример-1: проверьте, открыт файл или нет, с помощью IOError

IOError генерируется при вызове функции open() для открытия файла, который был открыт ранее. Создайте файл python со следующим сценарием, чтобы проверить, открыт ли файл или нет, с помощью блока try-except. Здесь любое существующее имя файла будет принято в качестве входных и открыто для чтения. Затем снова вызывается функция open(), чтобы открыть тот же файл, который вызовет ошибку IOError и распечатает сообщение об ошибке.

# Введите имя файла для проверки

filename = input("Введите любое существующее имя файла:n")

# Откройте файл в первый раз с помощью функции open()

fileHandler = open(filename, "r")

# Попробуйте открыть файл с таким же именем снова

try:

with open("filename", "r") as file:

# Распечатать сообщение об успешном завершении

print("Файл открыт для чтения.")

# Вызовите ошибку, если файл был открыт раньше

except IOError:

print("Файл уже открыт")

Вывод:

Здесь в текущем расположении существует файл clients.txt, а сообщение об ошибке «Файл уже открыт» было напечатано для исключения IOError.

 

Пример-2: проверьте, закрыт ли файл, используя свойство closed.

Значение свойства closed будет истинным, если какой-либо файл закрыт. Создайте файл python с помощью следующего сценария, чтобы проверить, закрыт ли файл в текущем местоположении. Предыдущий пример сценария выдаст ошибку, если имя файла, полученное от пользователя, не существует в текущем местоположении. В этом примере эта проблема решена. Модуль os используется здесь для проверки существования имени файла, которое будет взято у пользователя. Функция check_closed() определена для проверки того, закрыт ли файл или нет, которая будет вызываться, если файл существует.

# Импортировать модуль os для проверки существования файла

import os

# Функция Drfine проверяет, закрыт ли файл или нет

def check_closed():

if fileHandler.closed == False:

# Распечатать сообщение об успешном завершении

print("Файл открыт для чтения.")

else:

# Распечатать сообщение об ошибке

print(" Файл закрыт.")



# Взять имя файла для проверки

filename = input(" Введите любое существующее имя файла:  n ")

# Проверить, существует

if os.path.exists(filename):

# Открыть файл для чтения

fileHandler = open(filename, "r")

# Вызвать функцию

check_closed()

else:

# Вывести сообщение, если файл не существует

print("Файл не существует.")

Вывод:

Здесь client.txt существует в текущем месте, и сообщение об успешном завершении «Файл открыт для чтения» напечатано, поскольку значение свойства closed вернуло False.

 

Пример-3: проверьте, открыт файл или нет, с помощью OSError

OSError генерирует , когда функция переименования() вызывается более чем один раз для файла , который открыт уже. Создайте файл Python со следующим сценарием, чтобы проверить, открыт или закрыт файл с помощью OSError. Модуль os использовался в сценарии для проверки существования файла и его переименования. Когда функция rename() вызывается во второй раз, будет сгенерирована ошибка OSError, и будет напечатано настраиваемое сообщение об ошибке.

# Импортировать модуль os для проверки существования файла

import os

# Установить существующее имя файла

filename = 'clients.txt'

# Установить новое имя файла

newname = 'customers.txt'

# Проверить, существует ли файл или нет,

if os.path.exists(filename):

try:

# Вызов функции переименования в первый раз

os.rename(filename, newname)

# Вызов функции переименования во второй раз

os.rename(filename, newname)

# Вызов исключения при ошибки, если если файл открыт

except OSError:

print («Файл все еще открыт».)



else:

# Вывести сообщение, если файл не существует

print("Файл не существует.")

Вывод:

Здесь clients.txt существует в текущем местоположении, и сообщение об ошибке, “File is still opened,” напечатал , потому что OSError исключение генерируется , когда вторая функция rename() выполнена.

 

Вывод:

Когда нам нужно работать с одним и тем же файлом в сценарии несколько раз, важно знать, открыт ли файл или закрыт. Лучше вызвать функцию close(), чтобы закрыть файл после завершения операции с файлом. Ошибка возникает, когда файл открывается во второй раз в том же скрипте, не закрывая его. В этой статье на простых примерах показаны различные решения этой проблемы, которые помогут пользователям Python.



2021-07-24T10:29:04
Python

Как создавать аудиокниги с помощью Python

Как вы, возможно, уже знаете, Python — замечательный инструмент программирования, потому что он позволяет нам делать практически все! Это также означает, что мы можем создавать собственное программное обеспечение. В этой статье мы научимся синтезировать речь, научим Python читать PDF-файлы, даже переведем их для нас, а затем прочитаем их нам.

Здесь мы собираемся заставить Python прочитать нам PDF-файл и перевести его для нас. Сначала мы попробуем создать аудиокнигу на английском языке. Таким образом, первое, что мы должны сделать по логике, — это извлечь текст из PDF. Для этого мы используем модуль tika. Как обычно, чтобы установить Тику, приходится колдовать.

 

pip install tika

Tika — это модуль, используемый для обнаружения и извлечения контента. После установки нам нужно импортировать объект парсера.

 

from tika import parser

Далее нам понадобится метод from_file(), который принимает максимум два аргумента. Первый аргумент — это имя файла pdf, а второй аргумент называется дополнительным, который запрашивает требуемый тип данных. Если оставить дополнительное поле пустым, будет запрашиваться все, от метаданных до контента. Здесь meta возвращает метаданные, text возвращает текст, а param xmlContent возвращает содержимое XML.

raw = parser.from_file('comment.pdf')

 

Когда у нас есть данные, нам нужно извлечь только текст. Мы делаем это, выбирая «контент» из необработанного.

raw_text = raw['content']

 

Проблема с Tika в том, что она может вылетать из-за слишком большого количества страниц. Итак, воспользуемся и другим методом. Если PDF-файл короткий и приятный, обязательно используйте Tika. Однако вы также можете использовать модуль PyPDF2.

pip install PyPDF2

 

Итак, начнем:

import PyPDF2

 

Сначала мы открываем интересующий документ и читаем из него с помощью метода open() и класса PdfFileReader(). Метод open() принимает здесь два аргумента: первый — это имя файла для чтения, а второй — режим чтения. Здесь «rb» означает чтение двоичного файла. Затем класс PdfFileReader берет на себя pdf_document.

pdf_document = open("welcome.pdf", "rb")

pdf_document_read = PyPDF2.PdfFileReader(pdf_document)

 

Затем мы собираем общее количество страниц с помощью метода numPages. Мы сделаем это, поскольку мы создадим цикл for, который переходит от страницы 1 к последней странице, читая каждую страницу по мере ее продвижения.

number_of_pages = pdf_document_read.numPages

 

Затем мы начинаем цикл for для обратного отсчета каждой страницы.

for page in range(1, number_of_pages):

 

Затем нам нужно получить одну страницу с помощью метода getPage() и извлечь текст изнутри с помощью метода extractText().

one_page = pdf_document_read.getPage(page)

raw_text = one_page.extractText()

import pyttsx3

 

Сначала мы инициализируем модуль с помощью init().

engine = pyttsx3.init()

 

Мы можем установить голоса, громкость и скорость с помощью engine.getProperty(). SetProperty() принимает два значения: свойство, которое нужно изменить, и его значение. В данном случае мы установили женские голоса (voices [1] .id) с максимальной громкостью (1) и скоростью 128.

voices = engine.getProperty('voices')

engine.setProperty('voice', voices[1].id)



volume = engine.getProperty('volume')

engine.setProperty('volume', 1.0)



rate = engine.getProperty('rate')

engine.setProperty('rate', 128)

 

Затем мы используем engine.say(), чтобы синтезировать речь и прочитать текст вслух.

engine.say(raw_text)



engine.runAndWait()

 

Полный код будет выглядеть примерно так:

import PyPDF2



pdf_document = open("welcome.pdf", "rb")

pdf_document_read = PyPDF2.PdfFileReader(pdf_document)

number_of_pages = pdf_document_read.numPages



for page in range(1, number_of_pages):

    one_page = pdf_document_read.getPage(page)

    raw_text = one_page.extractText()

    import pyttsx3

    engine = pyttsx3.init()

    voices = engine.getProperty('voices')

    engine.setProperty('voice', voices[1].id)

    volume = engine.getProperty('volume')

    engine.setProperty('volume', 1.0)

    rate = engine.getProperty('rate')

    engine.setProperty('rate', 128)

    engine.say(raw_text)



    engine.runAndWait()

 

В предыдущем примере английский текст произносился на английском языке. Теперь мы попробуем перевести текст на другой язык и прочитать переведенный текст вслух. В случаях при переводе текста первая часть кода аналогична предыдущему разделу. Требуется код вплоть до кода PyPDF2 включительно. Однако после запуска цикла for мы немного изменим код. Здесь нам нужно добавить перевод и заставить его говорить с акцентом на языке назначения.

Сначала установите googletrans.

pip install googletrans

 

Теперь приступим к переводу текста.

from googletrans import Translator

 

Затем мы вызываем Translator().

translator = Translator()

 

Мы используем метод translate(). Здесь мы вводим первый аргумент — текст для перевода — и целевой язык — язык, на который текст должен быть преобразован. В данном случае мы решили перевести текст на французский (или на «fr»).

translated = translator.translate(raw_text, dest='fr')

 

После того, как мы перевели текст, нам нужно извлечь текстовую часть.

translated_2 = translated.text

 

Последний переведет и сохранит переведенный текст в переменной translated_2. Теперь нам нужен модуль, который будет переводить и сохранять озвученный текст в mp3. Для этого нам понадобятся gTTS и PlaySound:

pip install gTTS

pip install playsound



import gtts

from playsound import playsound

 

У класса gtts.gTTS() есть несколько аргументов. Однако здесь мы будем использовать только два аргумента. Первый аргумент — это текст, который нужно прочитать, а второй — язык, на котором будет читаться текст. В данном случае мы решили прочитать текст на французском языке (fr). Причина, по которой мы используем здесь gTTS вместо pyttsx3, заключается в больших акцентах, которые ставятся в прочитанном абзаце. Таким образом, когда текст читается на французском языке с помощью gTTS, это будет звучать так, как будто текст читает француз, а не носитель английского языка.

text = gtts.gTTS(translated_2, lang="fr")

 

Далее сохраняем озвученный текст в mp3. В данном случае я назвал его text.mp3:

text.save("text.mp3")

 

Чтобы воспроизвести сохраненный mp3, мы используем playsound():

playsound("text.mp3")

 

Полный код будет выглядеть примерно так:

import PyPDF2



pdf_document = open("welcome.pdf", "rb")

pdf_document_read = PyPDF2.PdfFileReader(pdf_document)

number_of_pages = pdf_document_read.numPages



for page in range(1, number_of_pages):

    one_page = pdf_document_read.getPage(page)

    raw_text = one_page.extractText()



    from googletrans import Translator

   

    translator = Translator()

    translated = translator.translate(raw_text, dest='fr')

    translated_2 = translated.text



    import gtts

    from playsound import playsound



    tts = gtts.gTTS(translated_2, lang="fr")

    tts.save("text.mp3")

    playsound("text.mp3")



2021-07-23T11:23:24
Python

Анализ криптовалюты. Основы Python для финансов. Часть 2

Начало работы с Python для финансов:

Мы извлечем различные цены на криптовалюту из Yahoo Finance. Давайте начнем с импорта библиотек.

import warnings

warnings.filterwarnings('ignore')  # Скрыть предупреждения

import datetime as dt

import pandas as pd

pd.core.common.is_list_like = pd.api.types.is_list_like

import pandas_datareader.data as web

import numpy as np

import matplotlib.pyplot as plt

import seaborn as sns



import matplotlib.dates as mdates

import plotly.express as px

start = dt.datetime(2021, 1, 1)

end = dt.datetime(2021,5,29)

Мы устанавливаем начальную и конечную даты данных.

btc = web.DataReader("BTC-USD", 'yahoo', start, end)  # Collects data

btc.reset_index(inplace=True)




 

Биткойн

«BTC-USD» указывает цены на биткойны в долларах США. Итак, мы извлекаем цены на биткойны.

#bitcoin



crypto= btc[['Date','Adj Close']]

crypto= crypto.rename(columns = {'Adj Close':'BTC'})

# 7-дневная скользящая средняя



crypto[ 'BTC_7DAY_MA' ] = crypto.BTC.rolling( 7).mean()

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

 

Ethereum

Далее мы пробуем Ethereum. Ethereum — вторая по величине криптовалюта по рыночной капитализации после биткойна. Ethereum был запущен 30 июля 2015 года с 72 миллионами монет.

#Ethereum



eth = web.DataReader("ETH-USD", 'yahoo', start, end)  # Collects data

eth.reset_index(inplace=True)

crypto["ETH"]= eth["Adj Close"]



# 7-дневная скользящая средняя

crypto[ 'ETH_7DAY_MA' ] = crypto.ETH.rolling( 7).mean()

 

Dogecoin

Далее идет Dogecoin. Мы уже обсуждали Dogecoin. Он был представлен 6 декабря 2013 года.

#doge coin



doge = web.DataReader("DOGE-USD", 'yahoo', start, end)  # Collects data

doge.reset_index(inplace=True)

crypto["DOGE"]= doge["Adj Close"]



# 7-дневная скользящая средняя

crypto[ 'DOGE_7DAY_MA' ] = crypto.DOGE.rolling( 7).mean()

 

BinanceCoin

Далее мы переходим к Binance Coin. Binance был запущен в июле 2017 года и основан на сети Ethereum. Но у Binance есть собственный блокчейн, цепочка Binance.

#BinanceCoin 



bnb = web.DataReader("BNB-USD", 'yahoo', start, end)  # Collects data

bnb.reset_index(inplace=True)

crypto["BNB"]= bnb["Adj Close"]



# 7-дневная скользящая средняя

crypto[ 'BNB_7DAY_MA' ] = crypto.BNB.rolling( 7).mean()

 

Cardano

Далее берем Cardano. Cardano — это общедоступная блокчейн-платформа, и одноранговые транзакции поддерживаются ее криптовалютой ADA. Он был запущен в сентябре 2017 года.

#Cardano



ada = web.DataReader("ADA-USD", 'yahoo', start, end)  # Collects data

ada.reset_index(inplace=True)

crypto["ADA"]= ada["Adj Close"]





# 7-дневная скользящая средняя

crypto[ 'ADA_7DAY_MA' ] = crypto.ADA.rolling( 7).mean()

 

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

 

#XRP



xrp = web.DataReader("XRP-USD", 'yahoo', start, end)  # Collects data

xrp.reset_index(inplace=True)

crypto["XRP"]= xrp["Adj Close"]



# 7-дневная скользящая средняя

crypto[ 'XRP_7DAY_MA' ] = crypto.XRP.rolling( 7).mean()

 

Dash

Dash — это криптовалюта с открытым исходным кодом. Он был разветвлен из протокола Биткойн. Он был запущен в январе 2014 года.

#Dash



dash = web.DataReader("DASH-USD", 'yahoo', start, end)  # Collects data

dash.reset_index(inplace=True)

crypto["DASH"]= dash["Adj Close"]



 # 7-дневное скользящее среднее

crypto[ ‘DASH_7DAY_MA’ ] = crypto.DASH.rolling( 7).mean()

Теперь, имея под рукой данные, форматируем даты.

#получение дат



crypto.set_index("Date", inplace=True)

Теперь давайте посмотрим на данные.

crypto[['BTC','ETH','DOGE','BNB','ADA','XRP','DASH']].head()

Как мы видим, все данные были извлечены правильно.

 

Теперь давайте проверим корреляцию между данными.

crypto[['BTC','ETH','DOGE','BNB','ADA','XRP','DASH']].corr()

Теперь у нас есть несколько интересных открытий. Все точки данных имеют высокую корреляцию друг с другом. Давайте просто сравним биткойн с другими, даже самая низкая корреляция с DOGE составляет 0,237, что является довольно хорошим значением. Dash, разветвленный из BTC, имеет самую высокую корреляцию с BTC на уровне 0,77.

Глядя на другие точки данных, BNB и XRP имеют высокую корреляцию 0,93, что является чрезвычайно высоким показателем. Как будто они одного и того же значения.

Теперь давайте разберемся, почему? Что ж, это просто. Рынок криптографии следует тенденциям. Когда биткойн и Dogecoin росли, другие монеты также росли в цене. В основном это было связано с общественным мнением относительно криптовалюты. Кто не хочет круто выглядеть перед друзьями, говоря, что они принесли криптовалюту?

Точно так же, когда упали значения BTC и DOGE, упали и другие. Это было похоже на цепную реакцию.

 

Давайте посмотрим на тепловую карту корреляции.

#Тепловая карта



plt.figure(figsize = (10,10))

sns.heatmap(crypto[['BTC','ETH','DOGE','BNB','ADA','XRP','DASH']].corr(),annot=True, cmap='Blues')



Тепловая карта четко показывает высокую корреляцию между ценами на все криптовалюты.

 

Построим данные с помощью Plotly Express.

fig = px.line(crypto, y=["BTC",'ETH','DOGE','BNB','ADA','XRP','DASH'] )

fig.show()

Что ж, ясен только обвал BTC в середине мая 2021 года. Но давайте посмотрим на значения 7-дневной скользящей средней BTC.

fig = px.line(crypto, y=['BTC_7DAY_MA'] )

fig.show()

В Plotly интересно то, что мы можем взаимодействовать с Plot и получать точные значения, как в Power BI.

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

 

Давайте попробуем Ethereum.

fig = px.line(crypto, y=['ETH'] )

fig.show()

И очевидно, что ETH также следует аналогичной схеме. В конце апреля 2021 года все увидели резкий рост цен на BTC и DOGE и купили ETH. Это привело к внезапному росту цены ETH.

 

Значения скользящего среднего:

fig = px.line(crypto, y=['ETH_7DAY_MA'] )

fig.show()

Гора падала так же быстро, как и поднималась. Люди, купившие по высокой цене, понесли огромные убытки.

 

DOGE:

fig = px.line(crypto, y=['DOGE'] )

fig.show()

Взлеты и падения DOGE также интересны. В январе 2021 года DOGE была ничем, а в начале мая 2021 года она сильно выросла. И его падение тоже было внезапным.

 

Значения скользящего среднего:

fig = px.line(crypto, y=['DOGE_7DAY_MA'] )

fig.show()

Код для построения всех остальных данных почти такой же.

 

Вывод

Теперь мы в значительной степени понимаем, что вызвало сбой. Кажется, что весь рынок криптовалют связаны друг с другом. Люди видят, как кто-то покупает BTC, они идут покупать ETH. Кто-то продает DOGE, они также продают свои BTC. Все взаимосвязано.

Рынок криптовалют очень волатилен, различные факторы приводят к бешеной распродаже. Одна из крупнейших криптовалютных бирж в мире, Coinbase, столкнулась с перебоями в обслуживании во время этой распродажи. Многие инвесторы в криптовалюту инвестировали, потому что они думали, что Тесла и Илон Маск были в биткойнах, и думали об этом как о следующем шаге в области финансов и валюты.

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

 

Начало:



2021-07-23T09:40:30
Python

Анализ криптовалюты. Основы Python для финансов

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