深入浅出统计学 第二三章 量度

量度

两类量度:

(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()

利用Pandas展示基本的统计分析

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()

箱型图

横向箱型图

参考

1.pandas用户指南 计算工具 中文版
2.深入浅出统计学 第一章 数据的可视化

posted @ 2018-06-07 13:37  FontTian  阅读(314)  评论(0编辑  收藏  举报