Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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 将txt文件和日志文件导入Jupyter笔记本_Python_Pandas_Jupyter Notebook - Fatal编程技术网

Python 将txt文件和日志文件导入Jupyter笔记本

Python 将txt文件和日志文件导入Jupyter笔记本,python,pandas,jupyter-notebook,Python,Pandas,Jupyter Notebook,我刚开始使用Jupyter笔记本和Python。在课程期间,我有一个学习任务,我应该: 我想知道data_log.log中最常见的10个小时 数据看起来像这样,日期戳在括号[]中 64.242.88.10 - - [07/Mar/2004:16:05:49 -0800] "GET /twiki/bin/edit/Main/ouble_bounce_sender?topicparent=Main.ConfigurationVariable HTTP/1.1" 401 12846

我刚开始使用Jupyter笔记本和Python。在课程期间,我有一个学习任务,我应该:

我想知道data_log.log中最常见的10个小时

数据看起来像这样,日期戳在括号[]中

    64.242.88.10 - - [07/Mar/2004:16:05:49 -0800] "GET /twiki/bin/edit/Main/ouble_bounce_sender?topicparent=Main.ConfigurationVariable HTTP/1.1" 401 12846
        64.242.88.10 - - [07/Mar/2004:19:03:58 -0800] "GET /twiki/bin/edit/Main/Message_size_limit?topicparent=Main.ConfigurationVariable HTTP/1.1" 401 12846
        206-15-133-154.dialup.ziplink.net - - [11/Mar/2004:16:33:23 -0800] "HEAD /twiki/bin/view/Main/SpamAssassinDeleting HTTP/1.1" 200 0
我从以下几点开始:

import pandas as pd 
    dataset= pd.read_fwf('data_log.log')
如何访问括号中:后的前两个数字

在那之后我该怎么计算呢?我在一张有小时的表格中打印出前10名,并作为表格标题计算

计时

105

143


10 2这最好用正则表达式来解决。有关适合数据的语法,请参见。这将允许程序从模式中提取部分数据。

模拟文本文件:

file_data = """
64.242.88.10 - - [07/Mar/2004:16:05:49 -0800] "GET 
/twiki/bin/edit/Main/ouble_bounce_sender?topicparent=Main.ConfigurationVariable 
HTTP/1.1" 401 12846
64.242.88.10 - - [07/Mar/2004:19:03:58 -0800] "GET 
/twiki/bin/edit/Main/Message_size_limit?topicparent=Main.ConfigurationVariable 
HTTP/1.1" 401 12846
206-15-133-154.dialup.ziplink.net - - [11/Mar/2004:16:33:23 -0800] "HEAD 
/twiki/bin/view/Main/SpamAssassinDeleting HTTP/1.1" 200 0"""
使用
pandas.read_csv
导入文件:

import pandas as pd
df = pd.read_csv(pd.compat.StringIO(file_data), names=[0, 'hour', 2, 3], sep=':', engine='python')
这会产生一个混乱的数据帧,但您只关心小时列:

                                                   0  hour   2  \
0                      64.242.88.10 - - [07/Mar/2004    16   5   
1                      64.242.88.10 - - [07/Mar/2004    19   3   
2  206-15-133-154.dialup.ziplink.net - - [11/Mar/...    16  33   

                                                   3  
0  49 -0800] "GET /twiki/bin/edit/Main/ouble_boun...  
1  58 -0800] "GET /twiki/bin/edit/Main/Message_si...  
2  23 -0800] "HEAD /twiki/bin/view/Main/SpamAssas...  
获取小时计数:

df['hour'].value_counts()
Out[141]: 
16    2
19    1

谢谢但是它说我的文件没有定义。我犯了什么样的错误?df=pd.read\u csv(pd.compat.StringIO(data\u log.log),name=[0',hour',2,3],sep=':',engine='python')name错误:name'access\u log'没有定义我想我明白了为什么没有定义,因为我没有定义它。然而,当我尝试用logg=pd.read\u csv('data\u log.log')定义它时,它说TypeError:initial\u值必须是str或None,而不是DataFrame。我该怎么解决呢?@John我没有你的输入文件,所以我使用了你随StringIO对象提供的文本。您必须用文件路径替换函数调用的该部分。谢谢您的帮助。我真的不确定该换什么。df=pd.read_csv('/Users/john/Desktop/data_log.log'),name=[0',hour',2,3],sep=':',engine='python')不工作。是因为它是csv文件吗?如果是,我如何处理这个问题?