Pyhton Apacheアクセスログを取り込んでグラフで表示する

前回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"]

↓アクセスログを1分ごとにカウントしたグラフ
figure_1

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

以上

関連する投稿:

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください