数据处理需求:从smu获取的约为5000个点的电流数据中,为了清理掉可能混入的分时开启的点,需要去除掉瞬时电流过大过小的点,去除的数量可以配置。
例如:current2 = data_process(current =[],ratio=0.01)
参数:current待处理的电流值列表
ratio 去掉点的比例
返回值:current2 处理后的电流值列表
import pandas as pd
#定义过滤函数
def filter_current_values(current_values sigma_factor=3,iterations=3):
for_in range(iterations):
mean = current_values.mean()
std = current_values.std()
if std == θ:
break
lower_bound = mean-sigma_factor*std
upper_bound = mean + sigma_factor*std
current_values current_values[(current_values > lower_bound)&(current_values < upper_bound)]
return current_values#返回过滤后的值,而不是平均值
#设置Excel文件路径
input_file_path ='C:\\test\15555.xlsx'#替换为您的Excel文件路径output_file_path ='C:\\test\\6666.xlsx'#輸出文件的路径
#读取Excel文件中的特定列数据
df = pd.read_excel(input_file_path,usecols='B',skiprows=1,nrows=5004,engine='openpyxl'
#将数据转换为数值类型,忽略非数值值
current_values = pd.to_numeric(df.iloc[:,0],errors='coerce').dropna()
#过滤数据,得到一个Series
filtered_values = filter_current_values(current_values)
#准备一个新的DataFrame,其索引与过滤后的数据的索引相同
output_df = pd.DataFrame(index=filtered_values.index)
output_df['B']= filtered_values#将过滤后的数据放到'B'列
#将新DataFrame写入到新的Excel文件中
output_df.to_excel(output_file_path,index=False)