日常数据清理中,这些操作我用得最频繁。代码尽量短小,直接粘到项目里就能复用。
合并多个 Excel 文件
需要把当前目录下所有 xlsx 文件的所有工作表合并成一个 DataFrame 时,glob 配合 pd.concat 很顺手。
import pandas as pd
import glob
df = pd.DataFrame()
# 获取当前目录下所有 xlsx 文件路径并排序
dir_filenames = sorted(glob.glob('./*.xlsx'))
for dir_file in dir_filenames:
# sheet_name=None 返回字典,key 是 sheet name,value 是工作表数据
dict_xlsx = pd.read_excel(dir_file, sheet_name=None)
# 为每个 sheet 添加来源列,然后纵向合并
workbook = pd.concat(
[v_df.assign(Sheet=k) for k, v_df in dict_xlsx.items()],
ignore_index=True
)
df = pd.concat([df, workbook], ignore_index=True)
print(f'merged files shape: {df.shape}')
glob.glob() 搜文件,sorted() 保持顺序。sheet_name=None 是关键,一次性读入所有工作表。最后用 assign 标记来源,合并后方便追溯数据从哪个 Sheet 来。
查看和处理缺失值
先看缺失情况再决定怎么补。统计每列的空值数量和占比,心里有数。
# 统计缺失值数量
count_null_series = df.isnull().sum()
count_null_df = pd.DataFrame(data=count_null_series, columns=['Num_Nulls'])
# 计算缺失值占比
pct_null_df = pd.DataFrame(data=count_null_series/len(df), columns=['Pct_Nulls'])
# 合并显示
null_stats = pd.concat([count_null_df, pct_null_df], axis=1)
print(null_stats)
补缺失值的方法按场景选:
- 时间序列常用前向填充:
df[col_name].fillna(method='ffill', inplace=True) - 不同列补不同值:
df.fillna(value={'col1':50, 'col2':67}, inplace=True)


