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

文章未经允许,不可转载
在阅读前,读一下Python-深入浅出数据分析-总结会更好点,以后遇到问题比如代码运行不了,再读读也行,>-_-<

问题的起源

为了比较3个主页的好坏,收集了很多数据,以便用数据说话。这些数据实在太多,告诉我们的信息很多但是却多到难以捕捉。

图形化是不是会好点

利用书中提供的xls数据,来进行一下可视化,我们想知道Revenue和其他因素的关系,嗯,那就来探索性分析一下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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))

您的支持将鼓励我继续创作!