Архив метки: 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

Как установить PIP в Windows 11/10

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

PIP был включен в Python 3 с версии Python 3.4, в Python 2 с версии 2.7.9. Читать →

Как проверить, открыт или закрыт файл в 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 для финансов

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