Нужно сделать так, чтобы код был читаем, конкретно:
- оформление - мы не пишем код в jupyter notebook'ах, для этого лучше использовать pycharm, там можно удобно дебажить, а еще он умеет просто кучу всего. Для лучшего понимания оформления кода лучше ознакомиться с https://www.python.org/dev/peps/pep-0008/ (если хотите писать на питоне - очень рекомендуется к прочтению, будущие коллеги вас сразу полюбят), уверен, что есть где-то даже на русском
- написание функций: лучше делать функции "чистыми", т.е. так чтобы они не изменяли значения своих аргументов, а также использовали только их для вычисления своего результата - это выглядит ужасно, к тому же приводит к багам, которые очень трудно обнаружить. Если функция не должна ничего возвращать, не следует возвращать 0 - все функции по умолчанию возвращают None, этого достаточно.
- Аргументы функции: если у функции есть куча аргументов, то лучше сделать некоторые из них со значениями по-умолчанию - это избавит вызывающего от мучительного процесса придумывания параметров для функций
- название переменных:
называем переменные так, чтобы по названию было понятно, что в ней находится:
df1
- плохое название для переменной, я не понимаю, что в ней находитсяtoken_bags
- хорошее название переменной, более-менее понятно, что там находится - Т.к. мы пишем свой код для того, чтобы его использовали другие - следует оборачивать все в функции с понятным названием. Если внизу в .py файле идет вызов этих функций, то каждый раз, когда кто-то будет импортировать ваш модуль, все эти функции будут вызываться. Если вы зачем-то хотите чтобы ваш модуль исполнялся - заключайте вызываемый код в следующую конструкцию:
if __name__ == '__main__':
run_emulation()
То, что идет после if'a будет вызвано только когда мы будем исполнять файл, т.е. python3 foo.py
- Давайте избавляться от "магических констант", т.е. кода вида (стоит ли говорить о том, что чтобы прочитать этот код нужно листать вправо):
pd.DataFrame([[0.22742111410841692,0.11390120749029667,0.2355222355799787,236778.84081466543,0.001,1,0.900695,minim]],columns=['D','PD','LGD','P','DI','I','R','N'])
Не понятно, что обозначают все эти числа, и что будет если их изменить.
Для тех, кто дочитал до конца - если вы живете в XXI веке, то PyCharm умеет сам приводить код к стандарту PEP-8, достаточно лишь нажать Ctrl + Alt + L