Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.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读取多个文件并将一些任务输出到(Excel文件)_Python_Sql_Large Data - Fatal编程技术网

Python读取多个文件并将一些任务输出到(Excel文件)

Python读取多个文件并将一些任务输出到(Excel文件),python,sql,large-data,Python,Sql,Large Data,我对Python有点熟悉,所以我想用Python解决以下问题。但其他语言的现成解决方案也很受欢迎 我有以下问题。我必须分析318个数据日志文件,每个文件大约有8,2MB,总共有2,6GB的数据。此数据日志文件包含相隔3秒的测量值,请参见下面的(简化)示例 每个文件包含一天的测量值,但有时一天有多个文件。也可能存在短间隙,没有记录任何内容 我想做一些简单的计算。如果有无限的资源,我只需计算每个时间步。然而,我认为我最好将结果转换成每小时的数据,以保持事情的可管理性。接下来,我想将每小时的结果写入E

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

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

每个文件包含一天的测量值,但有时一天有多个文件。也可能存在短间隙,没有记录任何内容

我想做一些简单的计算。如果有无限的资源,我只需计算每个时间步。然而,我认为我最好将结果转换成每小时的数据,以保持事情的可管理性。接下来,我想将每小时的结果写入Excel文件


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

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

安装熊猫

我假设您的数据有制表符(\t)作为分隔符。如果是这样,你可以和熊猫一起阅读

您可以循环所有日志文件,并将它们与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

大家好,欢迎!请给我们看一些代码,或者至少告诉我们一些你打算做的计算。而且,这个数据量似乎不太多,整个东西应该放在普通pc的内存中。使用什么数据库?在堆栈溢出中,这不是一个恰当的问题。请阅读,和。你好,Ronkov,谢谢你非常清晰的回答,熊猫似乎是一条路要走。谢谢,你可以点击我答案左边的复选标记来验证它是好的
df.groupby(["Date", "hour"])["System state"].value_counts()

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