Python读取许多文件后,会将某些任务输出到Excel文件

问题描述

我对Python有点熟悉,所以我想用Python解决以下问题。但是也欢迎使用其他语言的现成解决方案。

我有以下问题。我必须分析318个数据日志文件,每个文件总共2.6GB的数据约为8.2MB。该数据日志文件包含相隔3秒的测量值,请参见下面的(简化)示例。

Time     Time Nr:    Date    System state    System state Nr:    Temp._01    Temp._02
0:05:09 309  1-1-2020   0       " 7,4 " " 7,5 "
0:05:12 312  1-1-2020   0       " 7,5 " " 7,5 "

每个文件包含一天的测量值,但是有时一天有多个文件。可能还存在一些空白,没有任何记录。

我想执行一些简单的计算。给定无限的资源,我只需要对每个时间步进行计算。但是我认为我最好将结果转换为每小时数据,以保持可管理性。接下来,我想将每小时结果写入Excel文件。

一个想法是首先从318个文件中提取所有数据,然后将其写入SQL数据库。接下来进行计算,最后将每小时数据写入Excel文件。但是我没有使用SQL数据库的经验。解决此问题的最佳方法是什么?使用什么数据库?

解决方法

我会用熊猫。首先使用pip安装它:

pip安装熊猫

我假设您的数据具有制表符(\ t)作为分隔符。如果是这样,您可以使用pandas.read_csv

进行阅读

您可以遍历所有日志文件,并将它们与pandas.concat连接起来

import pandas
df = pandas.concat(
    [pd.read_csv(file,sep="\t") for file in list_of_files],axis=0,ignore_index=True)

现在您有了一个包含所有日志数据的数据框。您可以提取每条日志消息的小时数。

df["hour"] = df["Time"].str.split(":").str[0]

    Time    Time Nr:    Date    System state    System state Nr:    Temp._01    Temp._02    hour
0   0:05:09 309 1-1-2020    0   7,4 7,5 NaN 0
1   0:05:12 312 1-1-2020    0   7,5 7,5 NaN 0

要获取每小时的统计信息,您可以按“日期”和“小时”使用分组依据。

例如:提取不同的“系统状态”及其每小时被触发的次数。

df.groupby(["Date","hour"])["System state"].value_counts()

Date      hour  System state
1-1-2020  0     0               2

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...