[英]How to loop over all columns and check data distribution using Fitter library?
我需要檢查數據集中所有數字列的數據分布。 我選擇了Fitter
庫來這樣做。 我遍歷所有列,但只有一個圖+匯總表作為結果。 我的代碼有什么問題?
from fitter import Fitter
import numpy as np
df_numeric = df.select_dtypes(include=np.number).sample(n=5000)
num_cols = df_numeric.columns.tolist()
distr = ['cauchy',
'chi2',
'expon',
'exponpow',
'gamma',
'beta',
'lognorm',
'logistic',
'norm',
'powerlaw',
'rayleigh',
'uniform']
for col in num_cols:
modif_col = df_numeric[col].fillna(0).values
dist_fitter = Fitter(modif_col, distributions=distr)
dist_fitter.fit()
dist_fitter.summary()
也許還有另一種循環檢查分布的方法?
看起來您的代碼正確地遍歷了 dataframe 中的所有數字列,使用 Fitter 庫將不同的分布擬合到每一列,然后打印擬合結果的摘要。 但是,您只會看到一個 plot 和匯總表作為結果,因為您要為循環的每次迭代覆蓋 plot 和匯總表。
要查看每個列的單獨 plot 和匯總表,您應該在循環內移動對 dist_fitter.summary() 和 dist_fitter.plot() 的調用,並確保為每個 plot 和匯總表提供唯一的名稱或標題,這樣您在查看它們時可以區分它們。
這是您可以使用它的代碼示例
import matplotlib.pyplot as plt
for col in num_cols:
modif_col = df_numeric[col].fillna(0).values
dist_fitter = Fitter(modif_col, distributions=distr)
dist_fitter.fit()
plt.figure()
dist_fitter.plot()
plt.title(col)
plt.show()
print(col)
dist_fitter.summary()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.