1 描述性统计分析
1.1 概念
- 数据变量度量类型
名义: 字符(原义)、数值(编码) 等级 :字符、数值 有排序 ‘小中大’ 差值无意义 连续 :数值 ‘age’ #连续变量分组,当成等级变量使用,可使数据更稳健 #名义变量和等级变量统称为分类变量。 统计量:频次、百分比
- 描述名义变量的分布
频次、百分比 #python所用包都不支持字符,需要编码,0/1(关注的量编为1)
- 描述连续变量的分布
- 集中趋势(位置)—中心的度量:均值、中位数、众数
#看偏度确定选择均值还是中位数,右偏选择中位数,不偏选择均值 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a1f15c864c0c447eb4fa43bf234b9c16.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) - 离散程度(分散程度):方差、标准差、极差、四分位差IQR
方差Variance: ![在这里插入图片描述](https://img-blog.csdnimg.cn/81a609591ec04b29b234c958a7e108e2.png)
标准差Standard Deviation: ![在这里插入图片描述](https://img-blog.csdnimg.cn/67aef4218c204d52af822db0f6ae9231.png) 四分位差IQR:上分位数-下分位数
盒须图 :变量分布、内分位距IQR、异常点 ![在这里插入图片描述](https://img-blog.csdnimg.cn/53c39b03d276444585be6363b0090383.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_16,color_FFFFFF,t_70,g_se,x_16)
- 偏度(形状):正态不偏skewness=0、右偏skewness正值
- 常见连续分布
1)对数正态分布 :运用广泛,收入的分布,右偏 描述性统计分析:取中位数 建模:取对数 2)伽玛分布:灾难造成损失金额 3)泊松分布:队伍长度 4)正态分布:自然界分布,均值代表中心水平
1.2 描述统计/案例
导入所需的包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns
import os
读取数据
os.chdir(r'D:\python商业实践\《Python数据科学技术详解与商业实践》PDF+源代码+八大案例\《Python数据科学技术详解与商业实践》PDF+源代码+八大案例\源代码\Python_book\4Describe')
snd=pd.read_csv("sndHsPr.csv")
snd.head()
![在这里插入图片描述](https://img-blog.csdnimg.cn/ded837dde6d746ebb4c9124c16837f2b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_14,color_FFFFFF,t_70,g_se,x_16) 更改区名
district={'fengtai':'丰台区','haidian':'海淀区','chaoyang':'朝阳区','dongcheng':'东城区','shijingshan':'石景山区','xicheng':'西城区'}
snd['district']=snd.dist.map(district)在这里插入代码片
![在这里插入图片描述](https://img-blog.csdnimg.cn/722d5af91b57477ab54eebf8c2c1f01d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_16,color_FFFFFF,t_70,g_se,x_16)
1.2.1 单因子频数:一个分类变量
value_counts() 每个数值的频次
snd.district.value_counts()
![在这里插入图片描述](https://img-blog.csdnimg.cn/7fba87230dea499b82e777f1e5913374.png)
snd.district.value_counts().plot(kind='bar')
![在这里插入图片描述](https://img-blog.csdnimg.cn/f7620e9d12d94368aaae8fca9b505d40.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_12,color_FFFFFF,t_70,g_se,x_16)
snd.district.value_counts().plot(kind='pie')
![在这里插入图片描述](https://img-blog.csdnimg.cn/6d0c2ccf903c4d49925a6026dd19f35f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_11,color_FFFFFF,t_70,g_se,x_16)
1.2.2 表分析
两个分类变量
pd.crosstab(分类变量1,分类变量2)
生成数据框,频次表
sub_sch=pd.crosstab(snd.district,snd.school)
sub_sch
![在这里插入图片描述](https://img-blog.csdnimg.cn/c930378a5d024b7f8286f0de1c98f477.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_10,color_FFFFFF,t_70,g_se,x_16)
pd.crosstab(snd.district,snd.school).plot(kind='bar')
![在这里插入图片描述](https://img-blog.csdnimg.cn/9bde15f37c6c4c86b5168c88332273fb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_13,color_FFFFFF,t_70,g_se,x_16)
t1=pd.crosstab(snd.district,snd.school)
t1.plot(kind='bar',stacked=True)
![在这里插入图片描述](https://img-blog.csdnimg.cn/68b70ce233f141408c5c29181861024a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_13,color_FFFFFF,t_70,g_se,x_16)
- 标准化堆叠柱形图
用于比较两个分类变量是否有关系 ,直观,明显看出资源分配
sub_sch=pd.crosstab(snd.district,snd.school)
sub_sch['sum1']=sub_sch.sum(1)
sub_sch.head()
![在这里插入图片描述](https://img-blog.csdnimg.cn/db224f5a34f547c0b20e41ef667e37c7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_10,color_FFFFFF,t_70,g_se,x_16)
sub_sch=sub_sch.div(sub_sch.sum1,axis=0)
sub_sch
![在这里插入图片描述](https://img-blog.csdnimg.cn/f8cdda226ef041eab425259d618edefd.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_10,color_FFFFFF,t_70,g_se,x_16)
sub_sch[[0,1]].plot(kind='bar',stacked=True)
![在这里插入图片描述](https://img-blog.csdnimg.cn/e5743f76f8bf44e8bd9dd2fa2d283c4e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_13,color_FFFFFF,t_70,g_se,x_16)
- 两个维度标准化的堆积柱状图,柱形的宽度代表数量,更直观。
def stack2dim (raw,i,j,rotation=0,location='upper right'):
raw:pandas的DataFrame数据框 i、j:两个分类变量名称,横纵轴名称 rotation:水平标签旋转角度,默认水平方向,若标签过长,可设置一定角度,如rotation=40 location:分类标签位置,如果被主题图形挡住,可更改为‘upper left’
需要调用函数*
from stack2dim import *
stack2dim(snd, i="district", j="school")
![在这里插入图片描述](https://img-blog.csdnimg.cn/64509de1045945deb4d5765a2be87717.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_12,color_FFFFFF,t_70,g_se,x_16)
1.2.3 单连续变量描述
snd.price.agg(['mean','median','sum','std','skew'])
![在这里插入图片描述](https://img-blog.csdnimg.cn/a49b8951713f467fbfda142f16ef74b2.png) 绘制直方图,查看分布情况,类似正态分布
snd.price.hist(bins=100)
![在这里插入图片描述](https://img-blog.csdnimg.cn/634fe50530c34a649cc78ffc07e54fb1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_13,color_FFFFFF,t_70,g_se,x_16)
snd.price.mean()
snd.price.median()
snd.price.std()
snd.price.skew()
snd.price.quantile([0.01,0.5,0.99])
![在这里插入图片描述](https://img-blog.csdnimg.cn/8e16d1f15c144e84a224aee718287e01.png)
1.2.4 分类汇总
一个分类变量、一个连续变量统计量 groupby() 分类汇总
snd.price.groupby(snd.district).mean()
![在这里插入图片描述](https://img-blog.csdnimg.cn/676c8b765678457983e35e12af81ae1a.png)
snd.price.groupby(snd.district).mean().plot(kind='bar')
![在这里插入图片描述](https://img-blog.csdnimg.cn/7da9764b5bdf4810a8a765574f22a65f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_12,color_FFFFFF,t_70,g_se,x_16)
- 排序可得条形图
kind='barh' 加h为横向条形图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/41b66c93bafd45c8b56adf14bdd12fe2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_18,color_FFFFFF,t_70,g_se,x_16) - 分类盒须图
体现分类变量和连续变量关系,比较不同分类水平上,连续变量的变化情况,比较中位数,直观。
sns.boxplot(x='district',y='price',data=snd)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2851c6b5a99b4790ab05e3a461d159b6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_13,color_FFFFFF,t_70,g_se,x_16)
1.2.5 汇总表
两个分类变量(分别在x、y轴)、一个连续变量统计量 pivot_table()
snd.pivot_table(values='price',index='district',columns='school',aggfunc=np.mean)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1ecf45ff18f24895b65a7c07ed13c4b8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_18,color_FFFFFF,t_70,g_se,x_16) 柱形图
snd.pivot_table(values='price',index='district',columns='school',aggfunc=np.mean).plot(kind='bar')
![在这里插入图片描述](https://img-blog.csdnimg.cn/becb17deb8d0452db62b0436dd44cfd4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_20,color_FFFFFF,t_70,g_se,x_16)
1.2.5 时间序列——双轴图
按年度汇总GDP,计算GDP增长率。GDP为柱子,GDP增长率为线 导入gdp数据
gdp=pd.read_csv('gdp_gdpcr.csv',encoding='gbk')
![在这里插入图片描述](https://img-blog.csdnimg.cn/853595a1c08442dc92d0d5c8927b9f93.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_12,color_FFFFFF,t_70,g_se,x_16)
x=list(gdp.year)
GDP=list(gdp.GDP)
GDPCR=list(gdp.GDPCR)
fig=plt.figure()
ax1=fig.add_subplot(111)
ax1.bar(x,GDP)
ax1.set_ylabel('GDP')
ax1.set_title("GDP of China(2000-2017)")
ax1.set_xlim(2000,2018)
ax2=ax1.twinx()
ax2.plot(x,GDPCR,'r')
ax2.set_ylabel('Increase Ratio')
ax2.set_xlabel('Year')
![在这里插入图片描述](https://img-blog.csdnimg.cn/de675259f7ae4a739e754bc9928855d9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATHVtaW5pdGFfbXls,size_14,color_FFFFFF,t_70,g_se,x_16) ##所有代码要写在一个cell,否则得不到图
附: 若横坐标乱码,显示出方块,可能原因是默认字体不能打印汉字,修改字体加入以下代码
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
snd.district.value_counts().plot(kind='bar')
2 绘图原理
数据->信息->相对关系->图像
表达关联性的图标 一个分类一个连续:盒须图 多分类:堆叠柱形图 两个连续变量:散点图
|