1.顯示百分比的柱狀圖javascript
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#導入數據
np.random.seed(0)
df=pd.DataFrame({'Condition 1':np.random.rand(20),
'Condition 2':np.random.rand(20)*0.9,
'Condition 3':np.random.rand(20)*1.1})
df.head()
fig,ax=plt.subplots()
df.plot.bar(ax=ax,stacked=True)#stacked=True,可堆疊
#根據數據的百分比來顯示圖的大小
from matplotlib.ticker import FuncFormatter#導入包
df_ratio=df.div(df.sum(axis=1),axis=0)#顯示百分比
#畫圖
fig,ax=plt.subplots()
df_ratio.plot.bar(ax=ax,stacked=True)#stacked=True,可堆疊
ax.yaxis.set_major_formatter(FuncFormatter(lambda y,_:'{:.0%}'.format(y)))
2.sklearn實例css
#從網站上讀取數據
url='https://archive.ics.uci.edu/ml/machine-learning-databases/00383/risk_factors_cervical_cancer.csv'
df=pd.read_csv(url,na_values="?")
df.head()
2-1 對缺失值填充html5
from sklearn.preprocessing import Imputer#按均值填充缺失值
impute=pd.DataFrame(Imputer().fit_transform(df))
impute.colums=df.columns
impute.index=df.index
impute.head()
# 1.引入inputer() 使用均值對缺失值進行填充
impute = pd.DataFrame(Imputer().fit_transform(df))
print(impute.head())
impute.columns = df.columns
impute.index = df.index
# 2.導入相關的包
%matplotlib notebook
import numpy as np
import seaborn as sns#針對統計繪圖的工具
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA#sklearn.decomposition模塊包括矩陣分解算法,包括PCA,NMF或ICA。 該模塊的大多數算法能夠被視爲降維技術。
from mpl_toolkits.mplot3d import Axes3D#畫3D圖的包
# 3.取出樣品特徵, 取出Dx:Cancer
features = impute.drop('Dx:Cancer', axis=1)
y = impute['Dx:Cancer']
# 4進行PCA操做
pca = PCA(n_components=3)
X_r = pca.fit_transform(features)
# '{:.2%}'表示保留兩位小數, pca.explained_variabce_ratio表示所佔的比例
print('Explained variance:\nPC1{:.2%}\nPC2{:.2%}\nPC3{:.2%}'
.format(pca.explained_variance_ratio_[0],
pca.explained_variance_ratio_[1],
pca.explained_variance_ratio_[2],))
# 構造三維座標系
fig = plt.figure()
ax = Axes3D(fig)
# 畫散點圖
ax.scatter(X_r[:, 0], X_r[:, 1], X_r[:, 2], c='r', cmap=plt.cm.coolwarm)
# 對三個維度的座標進行標註
ax.set_xlabel('PC1')
ax.set_ylabel('PC2')
ax.set_zlabel('PC3')