如何导入Eurostat提供的TSV格式环境废水数据集?
导入Eurostat TSV数据集的方法
Eurostat的这份TSV文件结构特殊:首列包含5个用逗号分隔的维度字段(freq, ww_gtd, substance, unit, geo),后续列是年份,值中:代表缺失数据,e代表估计值。以下是几种主流工具的导入及清洗方法:
1. Python(Pandas)
import pandas as pd # 读取TSV文件,指定制表符为分隔符 df = pd.read_csv('env_ww_genp.tsv', sep='\t', header=0) # 拆分首列的维度字段 df[['freq', 'ww_gtd', 'substance', 'unit', 'geo']] = df['freq,ww_gtd,substance,unit,geo\\TIME_PERIOD'].str.split(',', expand=True) # 删除原始合并列 df = df.drop('freq,ww_gtd,substance,unit,geo\\TIME_PERIOD', axis=1) # 清洗数值:移除估计标记"e",将缺失值":"转为NaN并转为数值类型 year_columns = df.columns[:-5] df[year_columns] = df[year_columns].apply(lambda x: x.str.replace(' e', '').astype(float, errors='coerce')) # 可选:转为长格式(年份作为单独列) df_long = df.melt(id_vars=['freq', 'ww_gtd', 'substance', 'unit', 'geo'], var_name='year', value_name='value')
2. R语言
# 读取TSV文件 df <- read.delim("env_ww_genp.tsv", sep = "\t", header = TRUE, stringsAsFactors = FALSE) # 拆分首列的维度字段 dimensions <- strsplit(df$freq.ww_gtd.substance.unit.geo.TIME_PERIOD, ",") df <- cbind(do.call(rbind, dimensions), df[, -1]) colnames(df)[1:5] <- c("freq", "ww_gtd", "substance", "unit", "geo") # 清洗数值:移除"e",将":"转为NA并转为数值类型 year_cols <- colnames(df)[6:ncol(df)] df[year_cols] <- lapply(df[year_cols], function(x) { x <- gsub(" e", "", x) x[x == ":"] <- NA as.numeric(x) }) # 可选:转为长格式 library(tidyr) df_long <- pivot_longer(df, cols = year_cols, names_to = "year", values_to = "value")
3. Excel
- 直接打开TSV文件,Excel会自动识别制表符分隔列
- 选中首列,点击「数据」选项卡→「分列」,选择「分隔符号」→「逗号」完成维度字段拆分
- 使用「查找和替换」将所有
:替换为空,将e替换为空 - 选中年份列,设置单元格格式为「数值」
内容的提问来源于stack exchange,提问作者TranDzung
相关产品推荐
相关产品推荐

