用于大规模Excel数据的预处理,通过统计总行数判断是否转换为Parquet格式以提升读写效率,并使用正则表达式清洗指定文本列(如仅保留中文字符),最后导出清洗后的文件并提供下载链接。
58
66%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skills/sn-da-excel-workflow/capability/excel-data-cleaning/invalid-data-cleaning/SKILL.mdThis sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 根据总行数判断是否数据量过大,若满足条件,则将 Excel 文件转换为 Parquet 格式提升读写效率,再读取数据进行后续分析。
import pandas as pd
file_path = "input_data.xlsx"
parquet_path = "temp_data.parquet"
# 读取 Excel 文件并转换为 Parquet 格式
xls = pd.ExcelFile(file_path)
dfs = []
for sheet in xls.sheet_names:
df_sheet = pd.read_excel(xls, sheet_name=sheet)
dfs.append(df_sheet)
# 合并所有 sheet 数据并写入 Parquet 文件
if dfs:
df_all = pd.concat(dfs, ignore_index=True)
df_all.to_parquet(parquet_path, engine='pyarrow', index=False)
# 读取 Parquet 文件用于后续处理
df = pd.read_parquet(parquet_path)Step2 对目标文本字段中的特殊字符(如 #、-、数字)进行清洗,使用正则表达式仅保留中文字符。
import pandas as pd
import re
target_col = 'target_column' # 替换为实际需要清洗的列名
# 定义清洗函数
def clean_chinese_text(text):
if pd.isna(text):
return text
s = str(text)
# 提取所有中文字符(Unicode 范围:[一-鿿])
chinese_chars = re.findall(r'[一-鿿]', s)
cleaned = ''.join(chinese_chars)
return cleaned if cleaned else ''
# 应用清洗函数
if target_col in df.columns:
df[target_col] = df[target_col].apply(clean_chinese_text)Step3 将清洗后的数据保存为表格文件(.xlsx),并在报告中提供本地下载链接。
import pandas as pd
# 保存清洗后的数据为 .xlsx 文件
output_path = "cleaned_data.xlsx"
df.to_excel(output_path, index=False)
print("清洗后的数据已保存至:", output_path)
# 生成本地文件下载链接
print("下载链接:", f"file://{output_path}")179fea1
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.