Python-深入淺出資料分析-資料圖形化
阿新 • • 發佈:2020-08-21
目錄
在閱讀前,讀一下Python-深入淺出資料分析-總結會更好點,以後遇到問題比如程式碼執行不了,再讀讀也行,>-_-<
問題的起源
為了比較3個主頁的好壞,收集了很多資料,以便用資料說話。這些資料實在太多,告訴我們的資訊很多但是卻多到難以捕捉。
圖形化是不是會好點
利用書中提供的xls資料,來進行一下視覺化,我們想知道Revenue和其他因素的關係,嗯,那就來探索性分析一下。
import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline df = pd.read_csv('./hfda_ch04_home_page1.csv').iloc[:, 1:] fig = plt.figure(figsize=(8, 6)) ax = fig.add_subplot(1,1,1) ax.axvline(x= 10, linestyle= '--') ax.axhline(y= 40, linestyle= '--') ax.axvline(x= df.TimeOnSite.mean()) ax.axhline(y= df.Revenue.mean()) ax.scatter(df.TimeOnSite.values, df.Revenue.values, s= 72, facecolors='none', edgecolors='r', linewidth= 2) ax.set_xticks(np.arange(0, 50, 10)) ax.set_yticks(np.arange(0, 120, 20)) ax.set_xlabel('TimeOnSite') ax.set_ylabel('Revenue') ax.set_title('page1')
三種不同的主頁表現
我們想知道三種不同主頁的Revenue和其他因素的間的關係,以便我們可以挑選出好的主頁。
由於官網只提供了page1的檔案下載,所以自己造一些資料,這樣就可以把自己的思路實現,這些資料已經放到了我的github上
# plt.style.use('ggplot') # 取消註釋試試看 fig = plt.figure(figsize=(20, 20)) def plot_var_revenue(df_var, df_revenue, ax, ax_title): ax.axvline(x= df_var.mean()) ax.axhline(y= df_revenue.mean()) ax.scatter(df_var.values, df_revenue.values, s= 72, facecolors='none', edgecolors='r', linewidth= 2) ax.set_xlabel(df_var.name, fontsize= 12) ax.set_ylabel(df_revenue.name, fontsize= 12) ax.set_title(ax_title, fontsize= 12) all_pic_num = np.arange(1, 10).reshape((3,3)) for row_index, col_index in enumerate(all_pic_num): str_page = 'page{}'.format(row_index + 1) df = pd.read_csv('./hfda_ch04_home_{}.csv'.format(str_page)).iloc[:, 2:] for index in col_index: ax = fig.add_subplot(3, 3, index) col_index_real = index - row_index*3 plot_var_revenue(df.iloc[:, col_index_real], df.Revenue, ax, str_page) if col_index_real == 1: ax.axvline(x= 10, linestyle= '--') ax.axhline(y= 40, linestyle= '--') ax.set_xticks(np.arange(0, 60, 10)) ax.set_yticks(np.arange(0, 140, 20)) elif col_index_real == 2: ax.axvline(x= 40, linestyle= '--') ax.axhline(y= 40, linestyle= '--') ax.set_xticks(np.arange(0, 140, 20)) ax.set_yticks(np.arange(0, 140, 20)) else: ax.axvline(x= 10, linestyle= '--') ax.axhline(y= 40, linestyle= '--') ax.set_xticks(np.arange(0, 40, 5)) ax.set_yticks(np.arange(0, 140, 20))