【问题标题】:Python, Calculation of average/mean from many csv file having corresponding valuesPython,从具有相应值的许多 csv 文件中计算平均值/平均值
【发布时间】:2021-04-06 02:13:19
【问题描述】:

我有 csv 文件(假设 = 30),我想使用相应的值计算所有 30 个 csv 的平均值并创建一个新的 output.csv 文件。

示例 csv 文件:(我有 13 列和 16 行)

| Dataset | VALUE1 | VALUE2 |
|:---- |:------:| -----:|
| Name1  | 2.4    | 4.2 |
| Name2  | 3.5    | 9.3 |
| Name3  | 4.6    | 11.5 |

现在我有 30 个这样的 csv 文件,其中第一行是标题,第一列也包含字符串名称。

我想要做的是取 30 个 csv 文件的所有 30 个 csv 文件(例如,添加 value1,name1)的平均值,并在输出文件中平均这 30 个值,这应该针对每个位置进行(除了肯定的第一行和第一列)因为它们包含字符串值。

我尝试过使用 pandas 和 numpy,但直到现在都没有运气。

我的代码:

import pandas as pd
from pathlib2 import Path
import numpy as np

root = '../Dataset'
#print(tool_files_path)

file_names_list = []
ls=[]
entries = Path(root)
for entry in entries.iterdir():
    if entry.is_dir():
        for file in entry.iterdir():
            if file.is_file():
                if  file.name == 'summary_x.csv':
                    file_names_list.append(file)
                    #print(file)
                    #file = pd.read_csv(file)
                    #print file
                    #all_files_default = pd.concat(file))

print file_names_list
df_final = pd.DataFrame()
range = [i for i in range(1,13)]
for file_name in file_names_list:
    df = pd.read_csv(file_name, skiprows=0, usecols=range)
    print df
    df_final = df_final.add(df.reset_index(), fill_value=0)

#print df_final
#print os.getcwd()
df_final.to_csv('output.csv')

编辑:使用更新的代码,添加了数据框,但列的索引与原始文件中不同,并且有空单元格,我想是因为0.0 添加了很多次

【问题讨论】:

  • 您的代码不完整?为什么不将文件导入数据框并在获取文件名列表时执行计算?
  • @C.Cooney。我使用 pd.concat() 尝试了许多代码,但它在输出中显示 NaN 尽管 csv 文件中的所有索引都包含值
  • 您可能需要研究 pandas “reset_index()”,这是新 NaN​​ 列的常见原因。

标签: python pandas numpy average


【解决方案1】:

您可以使用DataFrame.add 添加DataFrames 的值,如here 所示,然后使用DataFrame.applymap 根据您在结果DataFrame 中添加的DataFrames 的数量来偏离每个值,如here 所示。

当你分解你的问题时,找到答案并不难:)

【讨论】:

  • 花了一些时间,但你的想法确实奏效了 :) 谢谢。如您所见,我接受了您的回答
猜你喜欢
  • 2017-02-06
  • 1970-01-01
  • 2015-01-08
  • 2013-01-12
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 2012-06-19
相关资源
最近更新 更多