前回ApacheアクセスログをCSVファイルに変換したので
グラフに表示してみます。
%pylab
import pandas as pd
# CSVファイルの取り込む。
df = pd.read_csv('test.csv', header=None, names=['ip', 'identd', 'user', 'datetime', 'method', 'request', 'status', 'size', 'referer', 'agent', 'other'])
# データが欠けているところを削除する。
df = df.dropna(subset=['datetime'])
# 時間でindex化する。
df.index = pd.to_datetime(df['datetime'], format='%d/%b/%Y:%H:%M:%S +0900')
# requestをカウントする。
request_counts = pd.value_counts(df['request'])
# 上位10件を横棒グラフにしてみる
request_counts[:10].plot(kind='barh', rot=0)
# iptをカウントして横棒グラフで表示する
ip_counts = pd.value_counts(df['ip'])
ip_counts[:10].plot(kind='barh', rot=0)
# アクセスログを1分ごとにカウントしてグラフで表示する
dfm = df.ip.resample('T', how='count')
dfm.plot()
# グラフを消す
plt.close()
# 不要なカラムの消し方
del df["identd"],df["user"],df["datetime"],df["method"],df["request"],df["status"],df["size"],df["referer"],df["agent"],df["other"]
resampleの引数は’T’を指定していますが
以下のようにいろいろとあります。
================================================================== B = business day frequency C = custom business day frequency (experimental) D = calendar day frequency W = weekly frequency M = month end frequency BM = business month end frequency MS = month start frequency BMS = business month start frequency Q = quarter end frequency BQ = business quarter endfrequency QS = quarter start frequency BQS = business quarter start frequency A = year end frequency BA = business year end frequency AS = year start frequency BAS = business year start frequency H = hourly frequency T = minutely frequency S = secondly frequency L = milliseonds U = microseconds ==================================================================
※参考
pandas.DataFrame.dropna
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.html
pandas.DataFrame.resample
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.resample.html
以上