数据分析之数据特征分析(一)
注:本篇数据来源:提取码: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'