import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn.decomposition import FactorAnalysis #Reading Data data=pd.read_csv("D:\复习资料\MVAPureData\who1.csv") data=data.iloc[1:,:] data=data.drop('Country', axis=1, inplace=True) #Converting Data to Numeric for i in range(1,data.shape[1]): data.iloc[:,i]=pd.to_numeric(data.iloc[:,i]) #Filling Missing Values with Mean data=data.fillna(data.mean()) #Factor Analysis using Principal Component Analysis fa=FactorAnalysis(n_components=5,rotation='varimax') fa.fit(data.iloc[:,1:]) loadings=pd.DataFrame(fa.components_.T,columns=['Factor1','Factor2','Factor3','Factor4','Factor5'],index=data.columns[1:]) print('\nFactor Loadings Using Principal Component Analysis:\n',loadings) #Factor Analysis using Principal Factor Analysis fa=FactorAnalysis(n_components=5,rotation='varimax',method='principal') fa.fit(data.iloc[:,1:]) loadings=pd.DataFrame(fa.components_.T,columns=['Factor1','Factor2','Factor3','Factor4','Factor5'],index=data.columns[1:]) print('\nFactor Loadings Using Principal Factor Analysis:\n',loadings) #Factor Analysis using Maximum Likelihood Estimation fa=FactorAnalysis(n_components=5,rotation='varimax',method="ml") fa.fit(data.iloc[:,1:]) loadings=pd.DataFrame(fa.components_.T,columns=['Factor1','Factor2','Factor3','Factor4','Factor5'],index=data.columns[1:]) print('\nFactor Loadings Using Maximum Likelihood Estimation:\n',loadings) #Plotting Factor Loadings plt.figure(figsize=(15,8)) sns.heatmap(loadings,cmap='coolwarm',xticklabels=True,yticklabels=True,annot=True) plt.title('Factor Loadings') plt.xlabel('Factors') plt.ylabel('Variables') plt.show() #Naming Factors factors=fa.transform(data.iloc[:,1:]) factors=pd.DataFrame(factors,columns=['Factor1','Factor2','Factor3','Factor4','Factor5']) factors['Country']=data.iloc[:,0] countries=factors['Country'].tolist() for i in range(factors.shape[1]-1): factors[f'Factor{i+1}']=(factors[f'Factor{i+1}']-factors[f'Factor{i+1}'].mean())/factors[f'Factor{i+1}'].std() factors['Score']=factors.sum(axis=1) factors=factors.sort_values(by=['Score'],ascending=False).reset_index(drop=True) print('\nRanked Countries:\n',factors[['Country','Score']])
时间: 2023-12-30 17:04:42 浏览: 40
这段代码是做因子分析的,将WHO(世界卫生组织)提供的数据集进行了处理和分析。首先将数据读入,并将非数值类型的数据转换为数值型数据;然后使用因子分析方法,包括主成分分析、主因子分析和最大似然估计,对数据进行因子分析,得到因子载荷量;接着绘制因子载荷量热力图,便于观察变量和因子的关系;最后对每个国家进行排名,得到评分。
相关问题
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn import tree
以下是使用import语句导入pandas、numpy、matplotlib.pyplot、seaborn和sklearn.tree的示例代码:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import tree
```
- pandas是一个数据处理库,用于读取、处理和分析数据。
- numpy是一个数学库,用于处理数组和矩阵等数学运算。
- matplotlib.pyplot是一个绘图库,用于绘制各种类型的图表。
- seaborn是一个基于matplotlib的数据可视化库,提供了更高级别的界面和更多的图表类型。
- sklearn.tree是scikit-learn库中的一个模块,用于实现决策树算法。
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns
这是一段Python代码,它导入了四个库:pandas、numpy、matplotlib.pyplot和seaborn。这些库都是用于数据分析和可视化的常用库。其中,pandas用于数据处理和分析,numpy用于科学计算,matplotlib.pyplot用于绘制图表,seaborn用于数据可视化。如果你想使用这些库,需要先安装它们。你可以使用pip命令来安装它们,例如:
```shell
pip install pandas numpy matplotlib seaborn
```
安装完成后,你就可以在Python代码中使用它们了。