資料分析 | Numpy實戰(三) - 分析各類使用者佔比

鹹魚普拉思發表於2019-01-21

資料分析 | Numpy實戰(三) - 分析各類使用者佔比

本次複習的知識點如下:

  • numpy的reshape以及shape在實戰中的運用

  • matplotlib餅圖繪製

分析目標

觀察上次的資料,資料中有的資料有會員與非會員兩種使用者類別。
這次我們主要分析一下兩種類別使用者在資料中佔比。

資料讀取與資料清洗

根據流程示意圖我們主要遵循下面幾個步驟:

資料分析 | Numpy實戰(三) - 分析各類使用者佔比

在過去兩次的文章中已經有關於資料讀取和資料分析操作的詳細程式碼講解,所以不再贅述。

此處程式碼為:

# 資料讀取,資料清洗
def read_clean_data():
    clndata_arr_list = []
    for data_filename in data_filenames:
        file = os.path.join(data_path, data_filename)
        data_arr = np.loadtxt(file, skiprows=1, delimiter=',', dtype=bytes).astype(str)
        cln_arr = np.core.defchararray.replace(data_arr[:, -1], '"''')
        cln_arr = cln_arr.reshape(-1,1)
        clndata_arr_list.append(cln_arr)
    year_cln_arr = np.concatenate(clndata_arr_list)
    return year_cln_arr

這裡需要注意兩點:

  • 因為資料較大,我們沒有資料檔案具體資料量,所以在使用numpy.reshape時我們可以使用numpy.reshape(-1,1)這樣numpy可以使用統計後的具體數值替換-1

  • 我們對資料的需求不再是獲取時間的平均值,只需獲取資料最後一列並使用concatenate方法堆疊到一起以便下一步處理。

資料分析

根據這次的分析目標,我們取出最後一列Member type

在上一步我們已經獲取了全部的數值,在本部只需篩選統計出會員與非會員的數值就可以了。

我們可以先看下完成後的這部分程式碼:

# 資料分析
def mean_data(year_cln_arr):
    member = year_cln_arr[year_cln_arr == 'Member'].shape[0]
    casual = year_cln_arr[year_cln_arr == 'Casual'].shape[0]
    users = [member,casual]
    print(users)
    return users

同樣,這裡使用numpy.shape獲取使用者分類的具體資料。

結果展示

生成的餅圖:

資料分析 | Numpy實戰(三) - 分析各類使用者佔比

下面是生成餅圖的程式碼:

# 結果展示
plt.figure()
    plt.pie(users, labels=['Member''Casual'], autopct='%.2f%%', shadow=True, explode=(0.050))
    plt.axis('equal')
    plt.tight_layout()
    plt.savefig(os.path.join(output_path, './piechart.png'))
    plt.show()

總結

關於之前文章中numpy的大部分用法在這三篇的實戰中都有提及,接下來還剩一篇numpy實戰總結全文,之後會進入pandas的複習

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556785/viewspace-2564293/,如需轉載,請註明出處,否則將追究法律責任。

相關文章