Python/CSV解析/搜索值

2024-06-16 14:12:31 发布

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

我用熊猫来解析CSV文件。CSV文件包含过去10年中每天的值。你知道吗

CSV如下所示:

production,day,year
5.0,50,2015
80.0,51,2015
190.0,52,2015
10.0,53,2015
.
.
.
2.0,50,2016
2.0,51,2016
40.0,52,2016
20.0,53,2016
.
.

我使用以下代码:

def calcAverageFirstYears(productionCSV):

    myFile = pd.read_csv(productionCSV)

    result = myFile[myFile['day']==52]
    print(result)

所以我得到这个结果:

   production   day    year
2       190.0  52.0  2015.0
9        40.0  52.0  2016.0
16       60.0  52.0  2017.0
23        6.0  52.0  2018.0

如何计算这些值的平均值? 如何计算2015年和2016年的平均值?你知道吗

谢谢你的帮助


Tags: 文件csv代码readdefresultmyfileyear
3条回答

describe给出所有列的平均值、中位数等。你知道吗

result.describe()

如果你想要每年的平均数,那么就用groupby

result.groupby('year').mean()

用途:

#if want mean of column production
print(result['production'].mean())

以及:

#if want mean of filtered year - 2015 and 2016 only
print (result.loc[result['year'].isin([2015, 2016]), 'production'].mean())

所有值:

#if want mean of all years of filtered df
print (result.groupby('year')['production'].mean())


#if want mean of all years of original df
print (df.groupby('year')['production'].mean())

编辑:

^{}^{}过滤,然后得到mean

print (df)
   production  day  year
0         5.0   50  2010
1        80.0   51  2011
2       190.0   52  2012
3        10.0   52  2013
4         2.0   52  2014
5         2.0   51  2015
6        40.0   52  2016
7        20.0   53  2017

#get minimal year
min_year = df['year'].min()
s = df.loc[df['year'].between(min_year, min_year + 5) & (df['day'] == 52), 'production'] 

print (s)
2    190.0
3     10.0
4      2.0
Name: production, dtype: float64

a = s.mean()
print (a)
67.33333333333333

您可以使用groupby和mean(我假设您需要列production的平均值)

result[['day','production']].groupby('day').mean()

或者

result[['year','production']].groupby('year').mean()

您也可以对整个数据帧使用相同的方法,您将看到所有天数/年的平均值:

myFile[['day','production']].groupby('day').mean()

或者

myFile[['year','production']].groupby('year').mean()

相关问题 更多 >