csv文件中一年中的平均月数

2024-09-27 23:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个csv文件,如下所示:

GL000004250,1958.0833333333333,-1.4821428571428572
GL000004250,1958.1666666666667,-2.586206896551724
GL000004250,1958.25,-1.5733333333333333
GL000004250,1958.3333333333333,4.680000000000001
GL000004250,1958.4166666666667,9.944827586206895
GL000004250,1958.5,12.874193548387098
GL000004250,1958.5833333333333,12.21290322580645
GL000004250,1958.6666666666667,7.18148148148148
GL000004250,1958.75,2.187096774193549
GL000004250,1958.8333333333333,-0.9066666666666666
GL000004250,1958.9166666666667,0.3777777777777777
GL000004250,1959.0,0.43214285714285744
GL000004250,1959.0833333333333,-6.432142857142857
GL000004250,1959.1666666666667,-6.806451612903226
GL000004250,1959.25,0.6933333333333334
GL000004250,1959.3333333333333,5.780645161290322
GL000004250,1959.4166666666667,8.343333333333332
GL000004250,1959.5,10.71935483870968
GL000004250,1959.5833333333333,10.216129032258062

其中第二列为十进制形式的年份,第三列为数据。我想让程序找出1958年的所有值,然后取平均值,然后是1959年,然后取平均值,等等


Tags: 文件csv数据程序形式平均值年份gl000004250
1条回答
网友
1楼 · 发布于 2024-09-27 23:20:07

如果你是初学者,从基础开始。尝试使用循环和字典来更好地处理Python

import numpy as np
with open(csvfile,'r') as f:
    yearAvgs = dict()
    data = f.read().split('\n')
    for line in data:
        if line:
            year = int(float(line.split(',')[1]))
            val = float(line.split(',')[2])
            if year not in yearAvgs:
                yearAvgs[year] = []
            yearAvgs[year].append(val)

for k, v in yearAvgs.items():
    avg = np.mean(v)
    print ("Year = ",k,": Mean = ",avg)

编辑:如果您正在寻找使用熊猫的解决方案:

import pandas as pd
df = pd.read_csv(csvfile,names=['ID','Year','Value'])
df['Year'] = df['Year'].astype(int)
df.groupby(['Year']).mean()

相关问题 更多 >

    热门问题