数据的概括性度量中所用到的相关知识点词汇:
相关的代码实现:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
path = "D:\\数据\\wblc\\breast-cancer-wisconsin_data.csv"
data = pd.read_csv(path, encoding = "UTF-8").iloc[0:20,1]
data
# 计算平均值
# 法一
print("算术平均数:%.2f" %data.mean())
# 法二:几何平均数
s = 1
for i in data:
s = i * s
print("几何平均数:%.2f" %np.sqrt(s))
# 众数
# 法一:
print("众数为:%d," %data.mode().iloc[0])
# 法二
from scipy.stats import mode
mode_num = mode(data)
print("众数为:%d, 众数的个数为:%d,"%(mode_num[0][0], mode_num[1][0]))
print(mode_num)
print(data.mode())
``
# 中位数
# 法一:
print("中位数1:%d" %data.median())
# 法二
print("中位数2:%d" %np.percentile(data,50))
# 法三
print("中位数3:%d" %data.quantile(.50))
# 方差
# 法一:
print("方差1:%d" %data.var())
# 法二:
s = 0
for i in data:
s = (i - data.mean())**2 + s
print("方差2:%d" %(s/(len(data)-1)))
# 标准差
# 法一
print("标准差1:%d" %data.std())
# 法二:
print("标准差2:%d" %np.sqrt(s/(len(data)-1)))
# 极差
data.max() - data.min() # 9
# 平均绝对离差
M = 0
for i in data:
M += abs(i - data.mean())
print(M/len(data)) # 2.04
# 上四分位数
# 法一
np.percentile(data,75)
# 法二
data.quantile(.75)
# 下四分位数
# 法一
data.quantile(.25)
# 法二:
np.percentile(data,25)
# 四分位差
np.percentile(data,75) - np.percentile(data,25) # 4
# 离散系数
data.std()/data.mean() # 0.5824757050156248
# 偏度
from scipy import stats
stats.skew(data) # 0.4264951788847028
# 峰度
stats.kurtosis(data) # -0.5821005917159772
# 直接输出data的概括性信息
data.describe()
绘制一下data的分布图:
import seaborn as sns
sns.set_palette("hls") #设置所有图的颜色,使用hls色彩空间
sns.distplot(data,color="r",bins=10,kde=True)
plt.show()