有一批excel表格,里面有很多列数据,第一行是列名。希望用python写代码,对每一列数据进行排序,降序。然后对每一列进行数据筛选,从每列数据最小值开始,去掉总数据的25%,保留最大值那部分75%,最终输出一个新表格,表格里的数据是排序(降序)好的,去掉下最小的25%的数值,列名与原名数据表格表头一致。去除数据的比例的参数可以让我自行
调整。
有一批excel表格,里面有很多列数据,第一行是列名。希望用python写代码,对每一列数据进行排序,降序。然后对每一列进行数据筛选,从每列数据最小值开始,去掉总数据的25%,保留最大值那部分75%,最终输出一个新表格,表格里的数据是排序(降序)好的,去掉下最小的25%的数值,列名与原名数据表格表头一致。去除数据的比例的参数可以让我自行
参考GPT和自己的思路,你可以使用pandas和numpy库来完成这个任务。以下是一个可能的解决方案:
import os
import pandas as pd
# 指定文件夹路径
folder_path = '/path/to/folder/'
# 获取文件夹中所有Excel文件
excel_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]
# 定义去除数据比例
data_percentage = 0.25
# 循环处理每个Excel文件
for file_name in excel_files:
# 读取Excel文件
df = pd.read_excel(os.path.join(folder_path, file_name))
# 对每一列进行排序
sorted_df = df.apply(lambda x: x.sort_values(ascending=False).values)
# 去除每一列的最小25%数据
filtered_df = sorted_df.apply(lambda x: x[int(len(x)*data_percentage):])
# 将处理后的数据保存到新的Excel文件中
new_file_name = 'sorted_filtered_' + file_name
filtered_df.to_excel(os.path.join(folder_path, new_file_name), index=False)
首先使用pandas的read_excel函数读取原始表格数据,然后使用apply函数对每一列数据进行排序(使用numpy的sort函数实现),并将结果保存在df_sorted中。
接下来,使用apply函数和numpy的min和max函数分别计算每列数据的最小值和最大值,然后使用一个自定义的lambda函数,对每列数据进行筛选,去掉最小的25%的数据,将结果保存在df_filtered中。
最后,使用DataFrame函数构建一个新的表格,并将df_filtered的数据倒置后,赋值给新表格的各列,最后使用pandas的to_excel函数将新表格输出到一个excel文件中。