Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python分析Apache日志文件数据_Python_Apache_Pandas - Fatal编程技术网

用python分析Apache日志文件数据

用python分析Apache日志文件数据,python,apache,pandas,Python,Apache,Pandas,我的问题有点难以解释。我正在分析一个Apache日志文件,下面是其中的一行 112.135.128.20 - [13/May/2013:23:55:04 +0530] "GET /SVRClientWeb/ActionController HTTP/1.1" 302 2 "https://www.example.com/sample" "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTM

我的问题有点难以解释。我正在分析一个Apache日志文件,下面是其中的一行

112.135.128.20 - [13/May/2013:23:55:04 +0530] "GET /SVRClientWeb/ActionController HTTP/1.1" 302 2 "https://www.example.com/sample" "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329" GET /SVRClientWeb/ActionController - HTTP/1.1 www.example.com
我的代码中的某些部分:

df = df.rename(columns={'%>s': 'Status', '%b':'Bytes Returned', 
                        '%h':'IP', '%l':'Username', '%r': 'Request', '%t': 'Time', '%u': 'Userid', '%{Referer}i': 'Referer', '%{User-Agent}i': 'Agent'})
df.index = pd.to_datetime(df.pop('Time'))
test = df.groupby(['IP', 'Agent']).size()
test.sort()
print test[-20:]
我将日志文件读取到一个数据帧,并通过点击次数和用户代理获得以下输出

IP               Agent                                                                                                 
74.86.158.106    Mozilla/5.0+(compatible; UptimeRobot/2.0; http://www.uptimerobot.com/)                                     369
203.81.107.103   Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0                                          388
173.199.120.155  Mozilla/5.0 (compatible; AhrefsBot/4.0; +http://ahrefs.com/robot/)                                         417
124.43.84.242    Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31      448
112.135.196.223  Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36      454
124.43.155.138   Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0                                   461
124.43.104.198   Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0                                          467
那我就要拿到

  • 最多3次命中次数(其IP),并查找其发生频率(如每次命中之间的时间差) (知识产权法)
  • 如何查找单个IP是否有不同的代理

  • 至少请向我解释如何解决上述问题?

    要完成第一部分,您只需对数据帧进行排序(按计数)并取前三行:

    In [11]: df.sort('Count', ascending=False).head(3)
    Out[11]:
                    IP                                              Agent  Count
    6   124.43.104.198  Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20...    467
    5   124.43.155.138  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) G...    461
    4  112.135.196.223  Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.3...    454
    
    要测试单个IP是否有多行(代理),可以使用groupby:

    In [12]: g = df.groupby('IP')
    
    In [13]: repeated = g.count().Count != 1
    
    In [14]: repeated
    Out[14]:
    IP
    112.135.196.223    False
    124.43.104.198     False
    124.43.155.138     False
    124.43.84.242      False
    173.199.120.155    False
    203.81.107.103     False
    74.86.158.106      False
    Name: Count, dtype: bool
    
    In [15]: repeated[repeated]
    Out[15]: Series([], dtype: bool)
    
    在这个例子中没有

    为了避免对整个数据帧进行排序,可以并且可以更有效地(更新:不是这样)使用(我认为熊猫中没有最大的):


    谢谢安迪,你已经知道我的项目的大部分内容:)。那么,如何计算头(3)IP的时差呢?例如,124.43.104.198首先出现在06.05.02,然后再次出现在06.10.03。请仅为一个IP解释一下这个问题?这有点棘手,tbh不是100%确定您到底想要什么,我认为作为一个单独的问题(然后您可以进入更多细节):)好的,非常感谢!:)
    In [21]: from heapq import nlargest
    
    In [22]: top_3 = nlargest(3, df.iterrows(), key=lambda x: x[1]['Count'])
    
    In [23]: pd.DataFrame.from_items(top_3).T
    Out[23]:
                    IP                                              Agent Count
    6   124.43.104.198  Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20...   467
    5   124.43.155.138  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) G...   461
    4  112.135.196.223  Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.3...   454