Python 将txt文件和日志文件导入Jupyter笔记本
我刚开始使用Jupyter笔记本和Python。在课程期间,我有一个学习任务,我应该: 我想知道data_log.log中最常见的10个小时 数据看起来像这样,日期戳在括号[]中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
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文件吗?如果是,我如何处理这个问题?