【趙強老師】利用Python完成資料分佈特徵的分析

趙強老師發表於2021-11-23

 title=

在對資料的質量進行分析後,接下來就可以對資料的特徵進行分析和計算,也可以通過繪製圖表對資料的特徵進行展示。資料的特徵分析通過有以下幾種方式:分佈分析、對比分析、統計量分析、週期性分析、貢獻度分析(帕累託分析)、相關性分析、正態性檢驗。

分佈分析能揭示資料的分佈特徵和分佈型別。

  • 對於定量資料,想要了解其分佈形式是對稱的還是非對稱的,發現某些特大或特小的可以值,可以通過繪製頻率分佈直方圖、莖葉圖進行直觀分析;
  • 對於定性資料,可用餅圖和條形圖直觀的顯示分佈情況。

下面我們通過具體的示例來演示如何對資料 進行定量和定性的分佈情況進行分析。下面是需要用到的測試資料。這是數位相機在1998年整年的銷售訂單資料。下面是前10條資料:
圖片.png

  • 對於定量資料分析

對資料進行定量分析,展示其分佈情況最常用的方法就是直方圖(Histogram)。這種圖又稱質量分佈圖,是一種統計報告圖,由一系列高度不等的縱向條紋或線段表示資料分佈的情況。一般用橫軸表示資料型別,縱軸表示分佈情況。

繪製直方圖一般可以按照下面的步驟進行:

  1. 求極差。針對同一指標,極差越大,資料越不穩定
  2. 分組資料,並決定分點
  3. 繪製頻率分佈直方表
  4. 繪製頻率分佈直方圖

    import pandas as pd
    import matplotlib.pyplot as plt
    
    data = pd.read_csv("/root/data/數位相機訂單資料.csv")
    
    # 求訂單金額的極差。針對同一指標,極差越大,資料越不穩定
    dr = data['訂單金額'].max() - data['訂單金額'].min()
    print("訂單金額極差為:",dr)
    
    # 繪製直方圖,顯示該年每一個月的訂單總額
    # 將資料轉換為DatFrame。這裡我們只需要訂單時間和訂單金額
    df = pd.DataFrame({"datetime":data["訂單時間"],"amount":data["訂單金額"]})
    
    # 取出訂單時間中的月份
    df['datetime'] = pd.to_datetime(df['datetime'])
    df['month'] = df['datetime'].dt.month.fillna(0).astype("int")
    
    # 按月計算每月的訂單總額,並用直方圖進行展示
    result = df.groupby('month').sum('amount')
    #輸出資料分佈直方表
    print(result)
    
    # 繪製資料分佈直方圖
    result.plot(kind='bar')
    
    plt.xlabel('Month')
    plt.ylabel('Total Sales')
    plt.show()

    繪製出的直方圖如下所示。
    圖片.png

  5. 對於定性資料分析

對資料的定性分析常常根據變數的分類型別來分組,展示其分佈情況最常用的方法就是餅圖或者條形圖來描述定性變數的分佈。例如,餅圖顯示一個資料系列中各項的大小與各項總和的比例。餅圖中的資料點顯示為整個餅圖的百分比。
 title=
下面以餅圖舉例說明,只需要將上面直方圖程式碼中最後生成的DataFrame(result)直接使用餅圖繪製出,即可。如下所示。

# 繪製資料的餅圖
result.plot.pie(subplots=True,figsize=(11, 11))
plt.show()

#注意:這裡的餅圖是以1月~12月進行分類的。

繪製出的餅圖如下所示。
圖片.png

相關文章