【问题标题】:Read multiple CSVs, calculate Mean and write it into a new CSV读取多个 CSV,计算平均值并将其写入新的 CSV
【发布时间】:2017-01-25 14:34:11
【问题描述】:

我有多个 CSV,比如说 10 个

在每个 CSV 中有 2 个值(坐标)和最后一个值,例如。 -89 是一个测量值。

0,0,-89
1,0,-89
2,0,-89
3,0,-89
4,0,-89
5,0,-89
6,0,-88
7,0,-88
8,0,-88
9,0,-88
10,0,-88
11,0,-88
12,0,-88
13,0,-88

我想检查这 10 个 CSV,读取每一行的测量值,计算平均值并将其写入新的 CSV。所以程序应该像每一行一样读取并计算平均值并将平均值放入新的 CSV。例如,它应该看起来像 0,0,-87.99933。

一个 CSV 有 5356 行。

我目前正在努力编写一个程序来完成这项任务任何想法/提示如何做到这一点

所以我想做的是:读取文件 1 的第一行,读取文件 2 的第一行并计算测量值的平均值,例如。 -89

谢谢

【问题讨论】:

  • 那么你有什么尝试? (Stack Overflow 不是做你功课的神谕)
  • 到目前为止你有没有尝试过?请发布您尝试过的代码
  • 您是否只想将每个文件的第一个坐标作为输出坐标?
  • 查看pandas。您可以使用pd.read_csv() 读取每个CSV,计算平均值,然后使用to_csv() 方法保存。
  • 谢谢,我完全不知道 pandas 会研究一下

标签: python csv


【解决方案1】:
import pandas as pd
import numpy as np

csv_file_list = ["file1.csv", "file2.csv", "file3.csv"]
result_csv = "result.csv"

with open(result_csv, 'wb') as rf:
    for idx, csv_file in enumerate(csv_file_list):
        csv_data = pd.read_csv(csv_file).values
        mean_measured = np.mean(csv_data[:, 2])
        rf.write(','.join([str(0), str(idx), str(mean_measured)+"\n"]))

【讨论】:

  • 您好,感谢您的回答。该程序是否计算每个文件的平均值?因为我想做的是:读取文件1的第一行,读取文件2的第一行......然后计算平均值。那是 5356 行。我认为这个程序会为每个文件计算它?
  • 否,它计算每个文件的测量列的平均值并将其作为一行存储在结果文件中。从这个问题中很难理解你到底想做什么。在您的情况下,创建一个从 0 到 5356 的 for 循环,计算每行的平均值并将其写入结果文件。
  • 好的,但是如何为每一行计算呢?
  • 我猜mean_measured = np.mean(csv_data[:, 2]) 2 代表第三列对吧?
  • 是的,2代表第三列。
猜你喜欢
  • 1970-01-01
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
相关资源
最近更新 更多