python数据特征分析--分布分析

44 篇文章 4 订阅
9 篇文章 3 订阅

介绍:分布分析 → 研究数据的分布特征和分布类型,分定量数据、定性数据区分基本统计量

数据读取,查看数据类型

import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline

# 数据读取
data = pd.read_csv('二手房信息.csv',engine = 'python', encoding='GBK')
data
print(data.dtypes)
print('-------\n数据长度为%i条' % len(data))
data.head()

*

在这里插入图片描述
在这里插入图片描述

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

定量数据分析

绘制散点图,查看房屋价格的大致分布

plt.scatter(data['经度'],data['纬度'],  # 按照经纬度显示
            s = data['房屋单价']/500,  # 按照单价显示大小
            c = data['参考总价'],  # 按照总价显示颜色
            alpha = 0.4, cmap = 'Reds')  
plt.grid()
print(data.dtypes)
print('-------\n数据长度为%i条' % len(data))
data.head()

*

在这里插入图片描述

说明:点的大小越大,单价越高、,颜色越深,参考单价越高
针对定量字段计算极差:max-min,通过极差可以看出二手房价格的稳定程度

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


参考首付极差为 52.500000 
参考总价极差为 175.000000

使用直方图对定量字段进行分组分析,查看参考总价的数据分布

data[key2].hist(bins=10)
plt.ylabel('价格')
plt.xlabel('参考总价分布')

*

在这里插入图片描述

使用cut、gcut函数,对参考总价进行分组并应用到总数据中,计算出每一个二手房的参考总价所属的价格区间。

# 频率分布情况 - 定量字段
# ② 求出分组区间
# right 是否包含末尾值
# pd.cut(x, bins, right):按照组数对x分组,且返回一个和x同样长度的分组dataframe,right → 是否右边包含,默认True
# 通过groupby查看不同组的数据频率分布
# 给源数据data添加“分组区间”列
gcut = pd.cut(data[key2],10,right=False)
gcut_count = gcut.value_counts(sort=False)  # 不排序
gcut_count
data['%s分组区间' % key2] = gcut.values
print(gcut.head(),'\n------')
print(gcut_count)
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=['频率','累计频率'], color='green',width=100)
# 可视化显示

*

在这里插入图片描述

绘制参考总价分布频率直方图

# 频率分布情况 - 定性字段
# ④ 绘制频率直方图

r_zj['频率'].plot(kind = 'bar',
                 width = 0.8,
                 figsize = (12,2),
                 rot = 0,
                 color = 'k',
                 grid = True,
                 alpha = 0.5)
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')
# 绘制饼图

*

在这里插入图片描述
在这里插入图片描述

  • python 数据特征分析

1. Python数据特征分析-分布分析
2. Python数据特征分析-对比分析
3. Python数据特征分析-统计分析
4. Python数据特征分析-帕累托分析
5. Python数据特征分析-正态性检验
6. Python数据特征分析-相关性分析

  • 7
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值