我想将我所有的方法\函数放在一个自定义文件夹中。这样我就可以导入它,它将具有我所有常用的功能。
让我们看看我目前的设置。文件夹名称:CustomMetrics(位于工作环境中我的站点包文件夹中)
内部文件夹:文件 1 main_func.py:该文件包含所有方法,并且它的代码在底部我放置了此代码以确保文件在导入时运行
print("before __name__ guard")
if __name__ == '__main__':
missing_zero_values_table()
barplots()
bool_histograms()
univariate_kdeplots()
get_mostProbable()
KDE_feature_vs_Multiclass()
get_outliers_IQRmethod()
outlier_filter()
get_clf_name()
train_classifier_ensemble_CV()
plot_mean_feature_importances()
get_RFE_rankings()
get_optimal_n_components()
compare_optimal_n_components()
tune_classifier_ensemble()
get_validation_curve()
get_learning_curve()
print("after __name__ guard")
文件2: init .py:该文件导入主文件中存在的所有方法
from CustomMetrics.main_func import missing_zero_values_table
from CustomMetrics.main_func import barplots
from CustomMetrics.main_func import bool_histograms
from CustomMetrics.main_func import univariate_kdeplots
from CustomMetrics.main_func import get_mostProbable
from CustomMetrics.main_func import KDE_feature_vs_Multiclass
from CustomMetrics.main_func import get_outliers_IQRmethod
from CustomMetrics.main_func import outlier_filter
from CustomMetrics.main_func import get_clf_name
from CustomMetrics.main_func import train_classifier_ensemble_CV
from CustomMetrics.main_func import plot_mean_feature_importances
from CustomMetrics.main_func import get_RFE_rankings
from CustomMetrics.main_func import get_optimal_n_components
from CustomMetrics.main_func import compare_optimal_n_components
from CustomMetrics.main_func import tune_classifier_ensemble
from CustomMetrics.main_func import get_validation_curve
from CustomMetrics.main_func import get_learning_curve
from CustomMetrics.main_func import pandas_entropy
文件 3:此文件中的 EDA.py 我导入了 CustomMetrics。我没有收到任何错误,并且打印出文件已被编译。我知道这一点,因为在导入时我会从主文件的底部打印出来
before __name__ guard
after __name__ guard
但是一旦我尝试使用其中一个功能,我就会得到一个错误功能不存在
称呼
missing_zero_values_table(df)
错误
----> 19 missing_zero_values_table(df)
NameError: name 'missing_zero_values_table' is not defined
如何在主文件中定义
def missing_zero_values_table(df):
zero_val = df.eq(0).sum() #(df == 0).astype(int).sum(axis=0)
mis_val = df.isnull().sum() #df.eq(-999).sum() #
zero_val_pct = 100 * df.eq(0).sum() / len(df)
mis_val_percent = 100 * df.eq(-999).sum() / len(df)
mz_table = pd.concat([zero_val, zero_val_pct ,mis_val, mis_val_percent], axis=1)
mz_table = mz_table.rename(columns = {0 : 'Zero Values',1: '% of Zero Values' ,2 : 'Missing Values', 3 : '% of Total Values'})
mz_table['Total Zero Missing Values'] = mz_table['Zero Values'] + mz_table['Missing Values']
mz_table['% Total Zero Missing Values'] = 100 * mz_table['Total Zero Missing Values'] / len(df)
mz_table['Data Type'] = df.dtypes
mz_table = mz_table[
mz_table.iloc[:,2] != 0 ].sort_values( #Missing Values Col#2
'% of Total Values', ascending=False).round(1)
print ("Your selected dataframe has " + str(df.shape[1]) + " columns and " + str(df.shape[0]) + " Rows.\n"
"There are " + str(mz_table.shape[0]) +
" columns that have missing values.")
return mz_table
我应该如何或做什么来查看为什么我的导入不起作用?