借网站日记分析~普及一下Pandas基础
对网站日记分析其实比较常见,今天模拟演示一下一些应用场景,也顺便说说Pandas,图示部分也简单分析了下
1.数据清洗¶
一般数据都不可能直接拿来用的,或多或少都得清理一下,我这边就模拟一下清洗完的数据
In [1]:
%%time
import numpy as np
import pandas as pd
In [2]:
%%time
# 生成一个2017年的所有时间点(分钟为单位)
datetime_index = pd.date_range("2017-01-01","2018-01-01",closed="left",freq="min")
In [3]:
%%time
# 简单查看一下
datetime_index # 如果你不想取到2018.01.01 00:00:00就设置~闭区间closed="left"
Out[3]:
In [4]:
%%time
# 查看多少元素
datetime_index.size # 用len()也一样
Out[4]:
In [5]:
%%time
# 创建一个DataFrame,以时间轴为index
log_df = pd.DataFrame(index=datetime_index)
In [6]:
%%time
# 随机生成一波访问人数
log_df["访问人数"] = np.random.randint(10,50,size=datetime_index.size)
# 随机生成一波注册人数
log_df["注册人数"] = np.random.randint(3,size=datetime_index.size)
In [7]:
# 查看前10条
log_df.head(10)
Out[7]:
In [8]:
# 查看后10条
log_df.tail(10)
Out[8]:
2.粗略统计¶
In [9]:
# 查看有多少数据
log_df.size
Out[9]:
In [10]:
# 矩阵形状
log_df.shape # 525601行,2列
Out[10]:
In [11]:
%%time
# 简明摘要
log_df.info()
In [12]:
%%time
# 初略统计一下
log_df.describe()
Out[12]:
3.分析绘图¶
来个简单版,主要学会方法,数据用真实数据后显示会更人性化,比如可以看到哪几个月份增长比较快,那几个月比较慢
然后还可以运用于公司花钱弄推广,以前是听别的公司忽悠,可能找了很多僵尸用户,数据貌似上去了,但是你做个年度统计,看看真实活跃的用户就知道推广的成效究竟几何了
某月份¶
In [13]:
%%time
from matplotlib import pyplot as plt
In [14]:
%%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
In [15]:
day_df.head(10)
Out[15]:
In [16]:
# 快速查看一下2017年1月份的统计
day_df["2017-01"]
Out[16]:
In [17]:
day_df["2017-01"].index
Out[17]:
In [18]:
# 比如绘制一份1月份的访问人数一览表
plt.plot(day_df["2017-01"].index,day_df["2017-01"]["访问人数"])
plt.show()
按照图看,15号这天用户数陡然增加,然后第二天用户骤降。
可以看看是不是被DDOS了,或者有没有用户恶意刷单 or 是不是爬虫,这时候可以采取对应的措施
In [19]:
# 比如绘制一份1月份的注册人数一览表
plt.plot(day_df["2017-01"].index,day_df["2017-01"]["注册人数"])
plt.show()
In [20]:
%%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
In [21]:
month_df.tail(10)
Out[21]:
In [22]:
# 具体项你可以指定
plt.plot(month_df.index,month_df["visitors"])
plt.show() # 图中3月是低谷
In [23]:
%%time
# 默认是折线图
month_df.plot()
# 密度图
month_df.plot.density()
# 柱形图(叠图,可以计算百分比)
month_df.plot.bar(stacked=True)
# 水平柱形图
month_df.plot.barh() # stacked=True
# 显示一下
plt.show()
某季度¶
In [24]:
%%time
# 季度统计
quarter_df = pd.DataFrame()
quarter_df["visitors"] = log_df["访问人数"].resample("Q").sum()
quarter_df["register"] = log_df["注册人数"].resample("Q").sum()
In [25]:
# 饼状图
quarter_df.plot.pie(subplots=True,labels=["Spr","Sum","Aut","Win"])
plt.show()
从图片来看,基本均匀的
作者:毒逆天
打赏:18i4JpL6g54yAPAefdtgqwRrZ43YJwAV5z