Python描述性统计示例

1 声明

本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。

2 描述性统计分析简介

描述性统计分析是指运用制表和分类,图形以及计算概括性数据来描述数据特征的一种分析活动。因为本文采用的是Python语言,所以这里采用dataframe、pyplot里的方法来实现数据的描述性统计分析。

3 描述下二手房数据

import pandas as pd
import warnings # current version of seaborn generates a bunch of warnings that we'll ignore
warnings.filterwarnings("ignore")
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="white", color_codes=True)def sndhsVisual():##该数据集有区域、房间数、大厅数、面积数、楼层、有无地铁、有无学区、价格等字段hsdata = pd.read_csv('input/sndHsPr.csv')#print(hsdata.head())##print(hsdata.price.quantile([0.25,0.5,0.75,0.4,0.5,0.6,0.7,0.8,0.9,1.0]))##打印各个段的中位数##print(hsdata.price.quantile([0.25,0.5,0.75,1.0]))#定义区映射字段,方便图标展示dictDist = {u'chaoyang':"朝阳",u'dongcheng':"东城",u'fengtai':"丰台",u'haidian':"海淀",u'shijingshan':"石景山",u'xicheng':"西城"}#对dist(地区)字段应用APPLY方法替换hsdata.dist = hsdata.dist.apply(lambda x: dictDist[x])from scipy import statsimport numpy as np###print(type(stats.mode(hsdata.price)[0][0]))##获取均值、中位数、标准差print(hsdata.price.agg(['mean','median','std']))#方法一通过stats.mode获取众数mode = np.array(stats.mode(hsdata.price)[0][0].tolist())mean_median=hsdata.price.agg(['mean', 'median', 'std']).as_matrix()merger = np.hstack((mode, mean_median))###print(type(merger))  ##类型为ndarray##获取众数、均值、中位数、标准差print(pd.Series(merger,index=['mode','mean', 'median', 'std']))print('###############')##方法二通过value_counts下的index.get_level_values获取众数mode_n = hsdata['price'].value_counts(ascending=False).index.get_level_values(0).values[0]print(pd.Series([mode_n],index=['mode']).append(hsdata.price.agg(['mean','median','std'])))print('###############')##大于0的,右偏数据print("偏度"+str(hsdata['price'].skew())) # 大于0的,右偏数据##小于0的,分散的print("峰度"+str(hsdata['price'].kurtosis())) #小于0的,分散的##print(hsdata.head(n=10)) # 这里可以指定n##print(hsdata.info()) # 打印数据的信息(列名、数据行、为空记录数、数据类型)##pd.set_option('display.width', 10)  # 150,设置打印宽度##pd.set_option('display.max_colwidth', 2)hsdata.price = hsdata.price / 10000 # 以万为单位pd.set_option('display.float_format', lambda x: '%.2f' % x) #指定数据显示为保留小数点后2位#print(hsdata.describe(include =[np.number]))  ## 这里对所有数字类型的查看数据描述,这里分不出连续变量、离散变量## 通过describe方法查看变量的统计信息,变量分析-连续性型print(hsdata[['area', 'price']].describe(include=[np.number])) ## 这里看连续型的更有意义## 1 变量分析-离散型#print(hsdata.columns.values)for i in range(hsdata.columns.size):if hsdata.columns.values[i] not in ('area','price'):print("变量"+hsdata.columns.values[i]+"频次统计:")'''  df1 = pd.DataFrame(hsdata[hsdata.columns.values[i]].value_counts()).Tdf1.index=['value_cnt']print(df1)'''df = hsdata[hsdata.columns.values[i]].agg(['value_counts']) #注意这里的[],是Series到DataFrame的过程print(df.T)print('\n')else:continue## 2 变量分析-连续型plt.rcParams['font.sans-serif']=['SimHei']sns.distplot(hsdata.price,color='green',bins=20,kde=True,rug = False) #kde表示是否画出一条高斯核密度估计线,这里的密度对应频次,rug=True表示rug表示在x轴上每个观测上生成的小细条plt.xlabel('房子单价 单位万/平米')plt.ylabel('密度')#plt.show()'''plt.hist(hsdata.price,bins=20)plt.show()'''##按照地区的中位数排名并记录为新的DataFramedf_dist_price=pd.DataFrame(hsdata.groupby('dist').median().price.sort_values(ascending=True))## 打印按照地区中位数升序的排名的索引值print('按照地区中位数升序的排名:'+str(df_dist_price.index.values))'''# 方法1,借助dataframe的category类型对指定的list排序data_tmp = hsdata[['dist', 'price']]data_tmp.dist = data_tmp.dist.astype("category")data_tmp.dist.cat.set_categories(["石景山", "丰台", "朝阳", "海淀", "东城", "西城"], inplace=True)##dat1.dist.cat.set_categories(df_dist_price.index.values, inplace=True) 或者用这种方式替换sns.boxplot(x='dist', y='price', data=data_tmp)##data_tmp.boxplot(column='price',by='dist') 或者调用DataFrame的boxplot方法plt.ylabel("房价单价(万元/平方米)")plt.xlabel("城区")plt.title("城区对房价的分组箱线图")plt.show()'''## 方法2,借助sns.boxplot的order属性,这里的有两个分类变量加一个连续变量时X是其中一个,hue是另外个.data_dist = hsdata[['dist', 'price']]sns.boxplot(x='dist', y='price', data=data_dist, order=df_dist_price.index.values,hue=None)plt.ylabel("单位面积房价(万元/平方米)")plt.xlabel("城区")plt.title("城区对房价的分组箱线图")plt.show()#房间数量与价格的描述性统计data_rownum = hsdata[['roomnum','price']]df_rownum_price_sort = pd.DataFrame(data_rownum.groupby('roomnum').median().price.sort_values(ascending=True))sns.boxplot(x='roomnum',y='price',data=data_rownum,order=df_rownum_price_sort.index.values,hue=None)plt.ylabel("单位面积房价(万元/平方米)");plt.xlabel("房子室数")plt.title("房子室数对房价的分组箱线图")plt.show()# 厅数与价格的描述性统计##print(hsdata.groupby('halls').halls.agg(['count']))#print(hsdata['halls'].value_counts())#print("厅最大值:"+str(hsdata['halls'].max()))data_halls = hsdata[['halls', 'price']]data_halls = hsdata[['halls', 'price']]df_halls_price_sort = pd.DataFrame(data_halls.groupby('halls').median().price.sort_values(ascending=True))sns.boxplot(x='halls', y='price', data=data_halls, order=df_halls_price_sort.index.values, hue=None)plt.ylabel("单位面积房价(万元/平方米)");plt.xlabel("房子厅数")plt.title("房子厅数对房价的分组箱线图")plt.show()'''print(data_halls.groupby('halls').median().price.sort_index(ascending=False))data_halls.halls = data_halls.halls.astype('category')data_halls.halls.cat.set_categories([0, 1, 2, 3], inplace=True)data_halls.boxplot(column='price', by='halls')plt.show()''''''hsdata[['area', 'price']].plot.scatter(x='price',y='area')plt.show()'''data_floor = hsdata[['floor', 'price']]df_floor_price_sort = pd.DataFrame(data_floor.groupby('floor').median().price.sort_values(ascending=True))sns.boxplot(x='floor', y='price', data=data_floor, order=df_floor_price_sort.index.values, hue=None)plt.ylabel("单位面积房价(万元/平方米)");plt.xlabel("楼层")plt.title("楼层对房价的分组箱线图")plt.show()data_subway = hsdata[['subway', 'price']]df_subway_price_sort = pd.DataFrame(data_subway.groupby('subway').median().price.sort_values(ascending=True))sns.boxplot(x='subway', y='price', data=data_subway, order=df_subway_price_sort.index.values, hue=None)plt.ylabel("单位面积房价(万元/平方米)");plt.xlabel("地铁")plt.title("地铁对房价的分组箱线图")plt.show()data_school = hsdata[['school', 'price']]df_school_price_sort = pd.DataFrame(data_school.groupby('school').median().price.sort_values(ascending=True))sns.boxplot(x='school', y='price', data=data_school, order=df_school_price_sort.index.values, hue=None)plt.ylabel("单位面积房价(万元/平方米)");plt.xlabel("学校")plt.title("学校对房价的分组箱线图")plt.show()##地区与学区中位数统计print(hsdata.groupby(['dist', 'school']).median().price.sort_index(ascending=False).unstack())hsdata.boxplot(column='price', by=['dist', 'school'], figsize=(12, 6))plt.show()if __name__ == '__main__':sndhsVisual()

4 执行结果

"D:\Program Files\Python37\python.exe" E:/dataVisual/Iris.py
mean      61151.810919
median    57473.000000
std       22293.358147
Name: price, dtype: float64
mode      50000.000000
mean      61151.810919
median    57473.000000
std       22293.358147
dtype: float64
###############
mode      50000.000000
mean      61151.810919
median    57473.000000
std       22293.358147
dtype: float64
###############
偏度0.6794935869486859
峰度-0.019305888544372873
          area    price
count 16210.00 16210.00
mean     91.75     6.12
std      44.00     2.23
min      30.06     1.83
25%      60.00     4.28
50%      78.83     5.75
75%     110.52     7.61
max     299.00    14.99
变量dist频次统计:
                丰台    海淀    朝阳    东城    西城   石景山
value_counts  2947  2919  2864  2783  2750  1947

变量roomnum频次统计:
                 2     3     1    4    5
value_counts  7971  4250  3212  675  102

变量halls频次统计:
                  1     2    0   3
value_counts  11082  4231  812  85

变量floor频次统计:
              middle  high   low
value_counts    5580  5552  5078

变量subway频次统计:
                  1     0
value_counts  13419  2791

变量school频次统计:
                  0     1
value_counts  11297  4913

按照地区中位数升序的排名:['石景山' '丰台' '朝阳' '海淀' '东城' '西城']
school    0    1
dist            
东城     6.71 7.75
丰台     4.16 4.90
朝阳     4.96 5.67
海淀     6.02 7.56
石景山    3.77 3.28
西城     7.26 9.32

Process finished with exit code 0

结论:通过分析得到地区、有无地铁、是否学区房跟价格关联性较大。

例子中的图标:

城区房价箱线图

室数房价箱线图

厅数房价箱线图:

楼层房价箱线图:

地铁房价箱线图:

学校房价箱线图: 

 地区与学箱线图:

Python描述性统计示例相关推荐

  1. python 描述性统计_Python中的基本统计:描述性统计

    python 描述性统计 The field of statistics is often misunderstood, but it plays an essential role in our e ...

  2. Python描述性统计

    目录 1 描述性统计是什么? 2 使用NumPy和SciPy进行数值分析 2.1 基本概念 2.2 中心位置(均值.中位数.众数) 2.3 发散程度(极差,方差.标准差.变异系数) 2.4 偏差程度( ...

  3. python描述性统计命令_描述性统计_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...

    为什么学Python: 重要:数据分析是职业技能必备,Python是大数据分析** 趋势:Python是目前非常火的编程语言,使用人多 好学:学习简单,容易上手,使用灵活,可扩展强 **:会Pytho ...

  4. python描述性统计工作日上班时代码_数据的描述性统计以及用Python代码实现

    一.数据的描述性统计 对数据的描述性统计主要是指对结构化数据的描述分析,可从三个维度进行分析:数据的集中趋势.数据的离散程度和数据的分布形态. 描述数据集中趋势的指标有:众数.中位数.平均数(包含算数 ...

  5. python描述性统计离散型变量_数据的描述性统计(Python3 实现)

    众数(Mode) 众数是统计学名词,在统计分布上具有明显集中趋势点的数值,代表数据的一般水平(众数可以不存在或多于一个).简单来说就是指一组数据中出现次数最多的数据值. import collecti ...

  6. [转载] python查看的统计量_python 描述性统计_Python中的基本统计:描述性统计

    参考链接: Python中的统计函数 1(中位数和平均值的度量) python 描述性统计 The field of statistics is often misunderstood, but it ...

  7. python 描述性分析的包_pasty描述性统计包

    http://patsy.readthedocs.io/en/latest/overview.html pasty功能:线性分析里因素分析(方差分析) and Patsy takes care of ...

  8. 数据的描述性统计与python实现

    数据的描述性统计与python实现 使用pandas导入数据 导入需要的包 import pandas as pd import numpy as np import matplotlib.pyplo ...

  9. python量化交易笔记---13.描述性统计

    统计分为描述统计和推断统计,我们在这一章里,主要讲解描述性统计.我们用到的数据如下所示: images/c13f004.png 上图中,gsyh代表工商银行收益率,pfyh代表浦发银行收益率,zglt ...

最新文章

  1. linux grunt环境,安装 Grunt - Grunt: JavaScript 世界的构建工具 | Grunt 中文网
  2. php代码规范的书籍,php基本代码规范——PSR-1
  3. java中输入char类型_java中如何输入char类型
  4. 集合中存储自定义对象源代码
  5. c#,xp系统,Matlab6.5
  6. 继北大“鸿hao之志”后,清华出现“热列欢迎”…
  7. vision transformer(viT)教学视频【通俗易懂】
  8. 华为苏州人工智能研发基地揭牌 将容纳上万名工作人员
  9. Android 笔记
  10. 51单片机初值计算方法
  11. 初中会考计算机flash,初中信息技术考试flash.doc
  12. 完美解决C#中拖动splitContainer分割线时显示虚线问题
  13. Android 投屏集成记录
  14. android 省略号控件动起来,动画效果省略号
  15. STM32WB系列MCU蓝牙协议栈烧录
  16. 阿里OSS图片持久化,裁切,缩放,格式转换等
  17. 秋招提前批来了,早就是优势!
  18. python中namedtuple的用法
  19. Game boy模拟器(8):中断
  20. SMETA验厂咨询,SMETA参考实践指南BPG(本文件)的制作旨在提供一份一致的全球审核程序

热门文章

  1. opengl加载显示3D模型AMF类型文件
  2. boost::throw_exception简单的测试程序
  3. boost::mpl模块实现sort相关的测试程序
  4. boost::graph模块实现斐波那契堆的测试程序
  5. boost::gil::view_is_basic用法的测试程序
  6. boost::geometry:::detail::overlay::get_clusters用法的测试程序
  7. Boost::Exception提供的各种常用 error_info typedef的预期用途的测试
  8. boost::coroutine2模块实现分段的stack的测试程序
  9. GDCM:gdcm::Printer的测试程序
  10. boost::callable_traits的remove_varargs_t的测试程序