python - Python读入许多文件做一些任务输出到(Excel文件)
问题描述
我对Python有些熟悉,所以我想用Python解决以下问题。但其他语言的现成解决方案也受到赞赏。
我有以下问题。我要分析 318 个数据日志文件,每个文件大约 8.2MB,总共 2.6GB 数据。此数据日志文件包含相隔 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 安装它:
点安装熊猫
我假设您的数据有制表符 (\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
要获取每小时统计信息,您可以按“日期”和“小时”使用 groupby。
例如:提取不同的“系统状态”以及每小时触发的次数。
df.groupby(["Date", "hour"])["System state"].value_counts()
Date hour System state
1-1-2020 0 0 2
推荐阅读
- r - 将用户制作的函数应用于带有其他参数的向量
- reactjs - 我们如何将 Material-UI 中的所有 useStyles 放到一个文件中
- c++ - 带有空白的 std::vector
- google-cloud-platform - 通过 API 列出 Google Cloud 的项目特定区域
- git - 如何重命名拉取请求中使用的 git 分支 Github
- java - 你能帮我使用 ArrayList 获得 MergeSort 的正确输出吗
- wpf - 如何在 WPF TabControl 中修复此行为?
- http - 如何在 NestJS 中使用多个全局拦截器
- java - Scanner.nextInt,NoSuchElementException
- javascript - MermaidJs - 来自某个节点的单击事件错误