码迷,mamicode.com
首页 > 其他好文 > 详细

数据特征分析:1.分布分析

时间:2018-09-17 00:32:50      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:dataframe   end   title   style   val   users   grid   包含   分享   

 

几个基础分析思路:

分布分析、对比分析、统计分析、帕累托分析、正态性检测、相关性分析

分布分析

分布分析是研究数据的分布特征和分布类型,分定量数据定性数据区分基本统计量。

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline
#读取数据
data = pd.read_csv(rC:\Users\Administrator\Desktop\python数据分析\深圳罗湖二手房信息.csv,
                   engine = ‘python‘)
data.head()

技术分享图片

plt.scatter(data[经度], data[纬度], #做个简单的三角图,按照经纬度作为它的X Y轴
                s = data[房屋单价]/500, #按照房屋的单价来控制图形的大小
                c = data[参考总价], cmap = Reds,#按照参考总价来显示颜色
                alpha = 0.4)        #########plt.scatter()散点图

技术分享图片

 如果有底图就可以把它的位置给分布出来;点越大代表房屋的单价越高,颜色越深代表总价越高;

通过数据可见,一共8个字段
 定量字段:房屋单价,参考首付,参考总价,*经度,*纬度,*房屋编码
 定性字段:小区,朝向

 1.极差 

#极差
def d_range(df, *cols):
    krange = [] #空列表,为了保持它的值
    for col in cols:
        crange = df[col].max() - df[col].min()
        krange.append(crange)
    return (krange)  ##创建函数求极差
key1 = "参考总价"
key2 = "参考首付"
dr = d_range(data, key1, key2)
print("%s极差为:%f \n%s极差为:%f"% ( key1, dr[0], key2, dr[1])) #求出数据对应列的极差
参考总价极差为:175.000000 
参考首付极差为:52.500000

从极差中看到销售的稳定程度

2. 频率分布情况:定量字段(① 通过直方图直接判断分组组数)

#频率分布情况(通过直方图直接判断分组组数)
data[key1].hist(bins = 8) #简单查看数据分组,确定分组组数 --->>一般8-16组,这里按照8组为参考

技术分享图片

可以看出主要集中在160万以上,60万以下。

 频率分布的划分方式:直方图可以快速的看到它的排列情况,把它拆分:分组划分

 

频率分布情况:定量字段(②求出分组区间)

#频率分布情况,分组区间 
gcut = pd.cut(data[key1], 10, right = False) #分成10份,是否包含末端值选False
gcut
gcut_count = gcut.value_counts(sort = False) #做一个统计,不排序
gcut_count

# pd.cut(x, bins, right):按照组数对x分组,且返回一个和x同样长度的分组dataframe,right → 是否右边包含,默认True
# 通过groupby查看不同组的数据频率分布

技术分享图片

data[%s分组区间% key1] = gcut.values  
data.head()

技术分享图片

 

频率分布情况:定量字段(③ 求出目标字段下频率分布的其他统计量 → 频数,频率,累计频率)

 分组情况,做累计频率的分组情况

#区间出现频率
r_zj = pd.DataFrame(gcut_count)
r_zj.rename(columns = {gcut_count.name:频数}, inplace = True) #重命名下,修改频数字段名
r_zj[频率] = r_zj[频数]/r_zj[频数].sum()       #计算频率
r_zj[累计频率] = r_zj[频率].cumsum()     #计算累计频率     
r_zj[频率%] = r_zj[频率].apply(lambda x:"%.2f%%"% (x*100)) #以百分比显示频率
r_zj[累计频率%] = r_zj[累计频率].apply(lambda x:"%.2f%%"% (x*100)) #以百分比显示累计频率
r_zj.style.bar(subset = [频率, 累计频率]) #可视化显示

技术分享图片

 

频率分布情况:定量字段(④ 绘制频率直方图)

#直方图
r_zj[频率].plot(kind = bar,
                figsize = (12, 2),
                grid = True,
                color = k,
                alpha = 0.4 ) #plt.title(‘参考总价分布频率直方图‘)
x = len(r_zj)
y = r_zj[频率]
m = r_zj[频数]

for i, j, k in zip(range(x), y, m):
    plt.text(i - 0.1, j + 0.01, %i% k, color = k)
#添加频率标签

技术分享图片

 

 

频率分布情况 - 定性字段( ① 通过计数统计判断不同类别的频率)

# 频率分布情况 - 定性字段
# ① 通过计数统计判断不同类别的频率
cx_g = data[朝向].value_counts(sort = True)
print(cx_g)
# 可视化显示
r_cx = pd.DataFrame(cx_g)
r_cx.rename(columns ={cx_g.name:频数}, inplace = True)  # 修改频数字段名
r_cx[频率] = r_cx / r_cx[频数].sum()  # 计算频率
r_cx[累计频率] = r_cx[频率].cumsum()  # 计算累计频率
r_cx[频率%] = r_cx[频率].apply(lambda x: "%.2f%%" % (x*100))  # 以百分比显示频率
r_cx[累计频率%] = r_cx[累计频率].apply(lambda x: "%.2f%%" % (x*100))  # 以百分比显示累计频率
r_cx.style.bar(subset=[频率,累计频率], color=#d65f5f,width=100)

技术分享图片

 

频率分布情况 - 定量字段( ② 绘制频率直方图、饼图)

# 频率分布情况 - 定量字段
# ② 绘制频率直方图、饼图

plt.figure(num = 1,figsize = (12,2))
r_cx[频率].plot(kind = bar,
                 width = 0.8,
                 rot = 0,
                 color = k,
                 grid = True,
                 alpha = 0.5)
plt.title(参考总价分布频率直方图)
# 绘制直方图

plt.figure(num = 2)
plt.pie(r_cx[频数],
       labels = r_cx.index,
       autopct=%.2f%%,
       shadow = True)
plt.axis(equal)
# 绘制饼图

 技术分享图片

 

数据特征分析:1.分布分析

标签:dataframe   end   title   style   val   users   grid   包含   分享   

原文地址:https://www.cnblogs.com/shengyang17/p/9625403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!