對網站日記分析其實比較常見,今天模擬演示一下一些應用場景,也順便說說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