深入浅出统计学 第二三章 量度
量度
两类量度:
(1) 集中趋势的量度—>平均值,中位数,众数
(2) 分散性与变异性的亮度—>全距(极值),四分位数(扩展:箱型图),方差与标准差,标准分
获取数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# 定义读取数据的函数
def ReadAndSaveDataByPandas(target_url = None,file_save_path = None ,save=False):
if target_url !=None:
target_url = ("http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv")
if file_save_path != None:
file_save_path = "/home/fonttian/Data/UCI/Glass/glass.csv"
wine = pd.read_csv(target_url, header=0, sep=";")
if save == True:
wine.to_csv(file_save_path, index=False)
return wine
wine = pd.read_csv("/home/font/Data/UCI/WINE/wine.csv")
wine.head()
代码实现
利用Pandas实现深入浅出统计学中的这两章内容是十分简单的,大部分都已经封装好,
只有极值与标准分需要我们自己编写.
箱型图之前已经给出了相应的画法,所以这次我把它放在了最后.
print('葡萄酒评分的均值为:%.3f'%(wine['quality'].mean()))
print('葡萄酒评分的中位数为:%.3f'%(wine['quality'].median()))
print('葡萄酒评分的众数为:%.3f'%(wine['quality'].mode()))
葡萄酒评分的均值为:5.636
葡萄酒评分的中位数为:6.000
葡萄酒评分的众数为:5.000
print('葡萄酒评分的全距(极值)为:%.3f'%(wine['quality'].max()-wine['quality'].min()))
print('葡萄酒评分的方差为:%.3f'%(wine['quality'].var()))
print('葡萄酒评分的标准差为:%.3f'%(wine['quality'].std()))
葡萄酒评分的全距(极值)为:5.000
葡萄酒评分的方差为:0.652
葡萄酒评分的标准差为:0.808
print('葡萄酒评分的四分位数为:\n',(wine['quality'].quantile([0,0.25,0.5,0.75,1])))
葡萄酒评分的全距(极值)为:5.000
葡萄酒评分的方差为:0.652
葡萄酒评分的标准差为:0.808
葡萄酒评分的四分位数为:
0.00 3.0
0.25 5.0
0.50 6.0
0.75 6.0
1.00 8.0
Name: quality, dtype: float64
我们也可以直接使用describe获取我们想要的东西,而标准分的计算则需要我们再多动一动手。
下面的示例分别有两种不同的实现方式,因为数值问题结果略有差异,但是没有什么影响。
wine.describe()
def Zscore_columns_bysklearn(Dataframe):
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
Dataframe_tofit = Dataframe.astype('float64')
scaler.fit(Dataframe_tofit)
returnResult = pd.DataFrame(scaler.transform(Dataframe))
return
wine_zscore_quality_bysklearn = Zscore_columns_bysklearn(wine)
wine_zscore_quality_bysklearn.head()
def Zscore_columns(Dataframe):
return (Dataframe-Dataframe.mean())/Dataframe.std()
wine_zscore_quality = Zscore_columns(wine)
wine_zscore_quality.head()
wine[['fixed acidity', 'residual sugar', 'alcohol', 'quality']].plot.box()
# vert=False, 横向
# positions=[1, 4, 6, 8], y轴位置
# color=color, 颜色
# sym='r+', 异常点的样式
color = dict(boxes='DarkGreen', whiskers='DarkOrange', medians='DarkBlue', caps='Gray')
wine[['fixed acidity', 'residual sugar', 'alcohol', 'quality']].plot.box(vert=False, positions=[1, 4, 6, 8],color=color,sym='r+')
plt.show()