1. 程式人生 > >數據特征分析:1.分布分析

數據特征分析:1.分布分析

分享 ini zip 返回 二手 sort label cat width

幾個基礎分析思路:

分布分析、對比分析、統計分析、帕累托分析、正態性檢測、相關性分析

分布分析

分布分析是研究數據的分布特征和分布類型,分定量數據定性數據區分基本統計量。

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.分布分析