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))
写出生活