前回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
以上