对网站日记分析其实比较常见,今天模拟演示一下一些应用场景,也顺便说说Pandas,图示部分也简单分析了下html
通常数据都不可能直接拿来用的,或多或少都得清理一下,我这边就模拟一下清洗完的数据前端
%%time
import numpy as np
import pandas as pd
%%time
# 生成一个2017年的全部时间点(分钟为单位)
datetime_index = pd.date_range("2017-01-01","2018-01-01",closed="left",freq="min")
%%time
# 简单查看一下
datetime_index # 若是你不想取到2018.01.01 00:00:00就设置~闭区间closed="left"
%%time
# 查看多少元素
datetime_index.size # 用len()也同样
%%time
# 建立一个DataFrame,以时间轴为index
log_df = pd.DataFrame(index=datetime_index)
%%time
# 随机生成一波访问人数
log_df["访问人数"] = np.random.randint(10,50,size=datetime_index.size)
# 随机生成一波注册人数
log_df["注册人数"] = np.random.randint(3,size=datetime_index.size)
# 查看前10条
log_df.head(10)
# 查看后10条
log_df.tail(10)
# 查看有多少数据
log_df.size
# 矩阵形状
log_df.shape # 525601行,2列
%%time
# 简明摘要
log_df.info()
%%time
# 初略统计一下
log_df.describe()
来个简单版,主要学会方法,数据用真实数据后显示会更人性化,好比能够看到哪几个月份增加比较快,那几个月比较慢python
而后还能够运用于公司花钱弄推广,之前是听别的公司忽悠,可能找了不少僵尸用户,数据貌似上去了,可是你作个年度统计,看看真实活跃的用户就知道推广的成效究竟几何了服务器
%%time
from matplotlib import pyplot as plt
%%time
p_s = log_df["访问人数"].resample("D").sum() # 平都可以看mean()
r_s = log_df["注册人数"].resample("D").sum()
day_df = pd.DataFrame()
day_df["访问人数"] = p_s
day_df["注册人数"] = r_s
day_df.head(10)
# 快速查看一下2017年1月份的统计
day_df["2017-01"]
day_df["2017-01"].index
# 好比绘制一份1月份的访问人数一览表
plt.plot(day_df["2017-01"].index,day_df["2017-01"]["访问人数"])
plt.show()
按照图看,15号这天用户数陡然增长,而后次日用户骤降。app
能够看看是否是被DDOS了,或者有没有用户恶意刷单 or 是否是爬虫,这时候能够采起对应的措施dom
# 好比绘制一份1月份的注册人数一览表
plt.plot(day_df["2017-01"].index,day_df["2017-01"]["注册人数"])
plt.show()
%%time
# 统计一下以月为单位的人数信息
p_s = log_df["访问人数"].resample("M").sum()
r_s = log_df["注册人数"].resample("M").sum()
month_df = pd.DataFrame()
month_df["visitors"] = p_s
month_df["register"] = r_s
month_df.tail(10)
# 具体项你能够指定
plt.plot(month_df.index,month_df["visitors"])
plt.show() # 图中3月是低谷
%%time
# 默认是折线图
month_df.plot()
# 密度图
month_df.plot.density()
# 柱形图(叠图,能够计算百分比)
month_df.plot.bar(stacked=True)
# 水平柱形图
month_df.plot.barh() # stacked=True
# 显示一下
plt.show()
%%time
# 季度统计
quarter_df = pd.DataFrame()
quarter_df["visitors"] = log_df["访问人数"].resample("Q").sum()
quarter_df["register"] = log_df["注册人数"].resample("Q").sum()
# 饼状图
quarter_df.plot.pie(subplots=True,labels=["Spr","Sum","Aut","Win"])
plt.show()
从图片来看,基本均匀的code