有一批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文件中。
“Devil组”引证GPT后的撰写:
用 Pandas 库来读取 Excel 表格数据,排序数据,筛选数据并输出新的 Excel 表格。
import os
import pandas as pd
# 定义数据文件夹路径
data_dir = 'data'
# 定义去除数据的比例
cut_percent = 0.25
# 遍历数据文件夹中的 Excel 文件
for filename in os.listdir(data_dir):
if filename.endswith('.xlsx'):
# 读取 Excel 文件
filepath = os.path.join(data_dir, filename)
data = pd.read_excel(filepath)
# 对每一列数据进行排序(降序)
sorted_data = data.apply(lambda x: x.sort_values(ascending=False).values)
# 对每一列数据进行筛选,去掉总数据的25%
cut_data = pd.DataFrame(columns=data.columns)
for col in data.columns:
col_data = sorted_data[col]
q1 = col_data.quantile(0.25)
q3 = col_data.quantile(0.75)
cut_data[col] = col_data[col_data >= q1][col_data <= q3].values
# 输出新的 Excel 文件
new_filepath = os.path.join(data_dir, f'new_{filename}')
cut_data.to_excel(new_filepath, index=False)