Python-深入浅出数据分析-数据图形化

在阅读前,读一下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)) 

posted @ 2020-08-21 21:59  duohappy  阅读(489)  评论(0编辑  收藏  举报