数据分析之数据特征分析(一)

33 篇文章 19 订阅
33 篇文章 25 订阅

数据分析之数据特征分析(一)

:本篇数据来源:提取码:xthm

一、分布分析

  • 分布分析 → 研究数据的分布特征和分布类型,分定量数据、定性数据区分基本统计量
  • 极差 / 频率分布情况 / 分组组距及组数
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
# 注:因为csv中含有中文所以先加encoding="unicode_escape"发现打印出的数据是乱码,采用gb2312数据正常
data=pd.read_csv('..\data\second_house\second_hand_house.csv',encoding = "gb2312")
plt.scatter(data['经度'],data['纬度'],#按照经纬度显示
            s=data['房屋单价']/500,#按照单价先是大小
            c=data['参考总价'],#按照总价显示颜色
            alpha=0.4,cmap='autumn')
plt.grid()
#检查数据
print(data.dtypes)
print("----------------\n数据长度为%i条\n----------------" % len(data))
print(data.head())
plt.show()

运行结果
在这里插入图片描述

#极差: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\n'%(key1,dr[0],key2,dr[1]))
#求出数据对应的极差

运行结果
在这里插入图片描述

# 频率分布情况-------定量字段
#通过直方图直接判断分组组数
data[key2].hist(bins=10)#简单查看数据分布,确定分布组数(一般8-16)
plt.show()

在这里插入图片描述

# 求出目标字段下频率分布的其他统计量:频数,频率,累计频率
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=r_zj.style.bar(subset=['频率','累计频率'],color='pink',width=100)#可视化显示

运行结果
在这里插入图片描述
注:此处要使用jupyter

# 绘制频率直方图
x=len(r_zj)
y=r_zj['频率']
m=r_zj['频数']
plt.figure(figsize=(15,4))
plt.grid=True
plt.bar([p for p in range(x)],r_zj['频率'],
        width=0.8,
        color='k',
        alpha=0.5)
plt.title('参考总价分布频率直方图')
for i,j,k in zip(range(x),y,m):
    plt.text(i-0.1,j+0.01,'%i'%k,color='k')#添加频数标签
plt.xticks([p for p in range(x)],[r'$(24.825, 42.5]$', r'$(42.5, 60.0]$',
                                  r'$(60.0, 77.5]$', r'$(77.5, 95.0]$',
                                  r'$(95.0, 112.5]$',r'$(112.5, 130.0]$',
                                  r'$(130.0, 147.5]$',r'$(147.5, 165.0]$',
                                  r'$(165.0, 182.5]$',r'$(182.5, 200.0]$'])
plt.show()

运行结果
在这里插入图片描述

# 频率分布情况——定性字段
# 通过计数统计判断不同类别的频率
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='green',width=100)

运行结果
在这里插入图片描述
自学自用,希望可以和大家积极沟通交流,小伙伴们加油鸭,如有错误还请指正,不喜勿喷

:cmap的类型

'Accent', 'Accent_r', 
'Blues', 'Blues_r', 'BrBG', 'BrBG_r', 'BuGn', 'BuGn_r', 'BuPu', 'BuPu_r', 
'CMRmap', 'CMRmap_r', 
'Dark2', 'Dark2_r',
'GnBu', 'GnBu_r', 'Greens', 'Greens_r', 'Greys', 'Greys_r', 
'OrRd', 'OrRd_r', 'Oranges', 'Oranges_r', 
'PRGn', 'PRGn_r', 'Paired', 'Paired_r', 'Pastel1', 'Pastel1_r', 'Pastel2', 'Pastel2_r', 'PiYG', 'PiYG_r', 'PuBu', 'PuBuGn', 'PuBuGn_r', 'PuBu_r', 'PuOr', 'PuOr_r', 'PuRd', 'PuRd_r', 'Purples', 'Purples_r', 
'RdBu', 'RdBu_r', 'RdGy', 'RdGy_r', 'RdPu', 'RdPu_r', 'RdYlBu', 'RdYlBu_r', 'RdYlGn', 'RdYlGn_r', 'Reds', 'Reds_r', 
'Set1', 'Set1_r', 'Set2', 'Set2_r', 'Set3', 'Set3_r', 'Spectral', 'Spectral_r', 
'Wistia', 'Wistia_r', 
'YlGn', 'YlGnBu', 'YlGnBu_r', 'YlGn_r', 'YlOrBr', 'YlOrBr_r', 'YlOrRd', 'YlOrRd_r', 
'afmhot', 'afmhot_r', 'autumn', 'autumn_r', 
'binary', 'binary_r', 'bone', 'bone_r', 'brg', 'brg_r', 'bwr', 'bwr_r', 
'cividis', 'cividis_r', 'cool', 'cool_r', 'coolwarm', 'coolwarm_r', 'copper', 'copper_r', 'cubehelix', 'cubehelix_r', 
'flag', 'flag_r', 
'gist_earth', 'gist_earth_r', 'gist_gray', 'gist_gray_r', 'gist_heat', 'gist_heat_r', 'gist_ncar', 'gist_ncar_r', 'gist_rainbow', 'gist_rainbow_r', 'gist_stern', 'gist_stern_r', 'gist_yarg', 'gist_yarg_r', 'gnuplot', 'gnuplot2', 'gnuplot2_r', 'gnuplot_r', 'gray', 'gray_r', 
'hot', 'hot_r', 'hsv', 'hsv_r', 
'inferno', 'inferno_r', 
'jet', 'jet_r', 
'magma', 'magma_r', 
'nipy_spectral', 'nipy_spectral_r', 
'ocean', 'ocean_r', 
'pink', 'pink_r', 'plasma', 'plasma_r', 'prism', 'prism_r', 
'rainbow', 'rainbow_r', 
'seismic', 'seismic_r', 'spring', 'spring_r', 'summer', 'summer_r', 
'tab10', 'tab10_r', 'tab20', 'tab20_r', 'tab20b', 'tab20b_r', 'tab20c', 'tab20c_r', 'terrain', 'terrain_r', 'turbo', 'turbo_r', 'twilight', 'twilight_r', 'twilight_shifted', 'twilight_shifted_r', 
'viridis', 'viridis_r', 
'winter', 'winter_r'

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柚子味的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值