按国家聚合指定年份数据并计算均值的技术问询
没问题!要按国家计算lgaspcar和lincomep的均值,用常用的数据处理工具就能轻松搞定。我给你准备了Python(Pandas)和R(dplyr)两种主流方案,你可以根据自己的习惯选:
方案一:Python + Pandas
Pandas是Python生态里处理表格数据的神器,用groupby分组后直接计算均值就行:
import pandas as pd # 如果你是从CSV文件读取数据,替换成 pd.read_csv("你的数据文件路径.csv") data = pd.DataFrame({ 'country': ['AUSTRIA', 'AUSTRIA', 'AUSTRIA', 'AUSTRIA', 'AUSTRIA', 'AUSTRIA', 'BELGIUM', 'BELGIUM', 'BELGIUM'], 'year': [1960, 1961, 1965, 1966, 1967, 1968, 1960, 1961, 1962], 'lgaspcar': [4.173244195, 4.1009891049, 4.033983285, 4.0475365589, 4.0529106939, 4.045507048, 4.16401597, 4.124355641, 4.075], 'lincomep': [-6.474277179, -6.426005835, -6.294667914, -6.252545451, -6.234580709, -6.206894403, -6.215091247, -6.176842928, None] }) # 按国家分组,计算指定字段的均值,reset_index让结果更易读 country_avg = data.groupby('country')[['lgaspcar', 'lincomep']].mean().reset_index() # 输出结果 print(country_avg)
运行后会得到每个国家两个字段的均值,reset_index()是把分组的国家从索引变回普通列,方便查看和后续处理。
方案二:R + dplyr
如果你习惯用R,dplyr的管道语法写起来非常直观:
library(dplyr) # 从CSV读取数据的话,替换成 read.csv("你的数据文件路径.csv") data <- data.frame( country = c('AUSTRIA', 'AUSTRIA', 'AUSTRIA', 'AUSTRIA', 'AUSTRIA', 'AUSTRIA', 'BELGIUM', 'BELGIUM', 'BELGIUM'), year = c(1960, 1961, 1965, 1966, 1967, 1968, 1960, 1961, 1962), lgaspcar = c(4.173244195, 4.1009891049, 4.033983285, 4.0475365589, 4.0529106939, 4.045507048, 4.16401597, 4.124355641, 4.075), lincomep = c(-6.474277179, -6.426005835, -6.294667914, -6.252545451, -6.234580709, -6.206894403, -6.215091247, -6.176842928, NA) ) # 按国家分组,计算均值,na.rm=TRUE用来忽略缺失值 country_avg <- data %>% group_by(country) %>% summarise( avg_lgaspcar = mean(lgaspcar, na.rm = TRUE), avg_lincomep = mean(lincomep, na.rm = TRUE) ) # 查看结果 print(country_avg)
这里na.rm = TRUE很重要,因为你的数据里可能存在缺失值(比如示例中BELGIUM 1962的lincomep没写完),加上这个参数会自动跳过缺失值计算均值。
内容的提问来源于stack exchange,提问作者Hisham
相关产品推荐
相关产品推荐

