本文介绍基于Python语言,对一个或多个表格文件中多列数据分别计算平均值与标准差,随后将多列数据对应的这2
个数据结果导出为新的表格文件的方法。
首先,来看一下本文的需求。现有2
个.csv
格式的表格文件,其每1
列表示1
个变量,每1
行则表示1
个样本;其中1
个表格文件如下图所示。
我们现在需要分别对这2
个表格文件执行如下操作:计算出其中部分变量(部分列)在所有样本(所有行)中的平均值与标准差数据,然后将这些数据结果导出到一个新的.csv
格式文件中。
需求也很简单。明确了需求,接下来就可以开始代码的撰写;本文所用代码如下。
# -*- coding: utf-8 -*-
"""
Created on Sun Mar 10 17:59:23 2024
@author: fkxxgis
"""
import pandas as pd
data = pd.read_csv(r"F:\Data_Reflectance_Rec\Train_data\Train_Model_0715_Main_Over_B_New.csv")
data_nir = pd.read_csv(r"F:\Data_Reflectance_Rec\Train_data\Train_Model_0715_Main_Over_NIR_New.csv")
column_need = ["blue", "green", "red", "inf", "NDVI", "NDVI_dif", "days", "sola", "temp", "prec", "soil", "blue_h", "green_h", "red_h", "inf_h", "ndvi_h", "blue_h_dif", "green_h_dif", "red_h_dif", "inf_h_dif", "ndvi_h_dif"]
mean_value = data[column_need].mean()
std_value = data[column_need].std()
mean_value_nir = data_nir[column_need].mean()
std_value_nir = data_nir[column_need].std()
data_new = pd.DataFrame({"mean_RGB": mean_value, "std_RGB": std_value, "mean_NIR": mean_value_nir, "std_NIR": std_value_nir})
data_new.to_csv(r"F:\Data_Reflectance_Rec\Train_data\mean_std.csv", index = True)
上述代码具体含义如下。
首先,使用pandas
库导入了pd
模块。
其次,使用pd.read_csv()
函数从2
个.csv
格式表格文件中读取数据。其中,因为本文需要读取的是2
个文件,所以分别用data
变量与data_nir
变量读取这2
个不同路径的表格文件。
接下来,定义了一个column_need
列表,其中包含了需要计算平均值和标准差的列名。
随后,使用mean()
函数和std()
函数分别计算了data
和data_nir
中指定列的平均值和标准差,并将结果分别赋值给mean_value
、std_value
、mean_value_nir
和std_value_nir
变量。
然后,使用pd.DataFrame
创建了一个新的数据框data_new
,其中包含了4
列数据:mean_RGB
列存储了data
中计算得到的平均值,std_RGB
列存储了data
中计算得到的的标准差;mean_NIR
列存储了data_nir
中计算得到的平均值,std_NIR
列存储了data_nir
中计算得到的标准差。
最后,使用to_csv()
函数将data_new
保存到文件路径为mean_std.csv
的.csv
格式文件中,设置index=True
表示将索引列也保存到文件中。
运行上述代码,即可在结果文件夹中找到对应的结果.csv
格式文件;如下图所示,其已经是我们需要的形式了——每1
列表示1
种对应的结果,每1
行表示1
种变量。
至此,大功告成。
欢迎关注:疯狂学习GIS