哈喽,大家好!我是风哥,一个资深Python工程师。今天要给大家介绍一个超强的数据处理库——pandas!
还在为Excel数据处理烦恼吗?还在苦苦编写VBA宏吗?来试试pandas吧!它能让你的Excel数据处理效率提升10倍!
1. 基础操作
环境准备
1# pip install pandas openpyxl
2import pandas as pd
3import numpy as np
读取Excel文件
1# 读取Excel
2df = pd.read_excel('data.xlsx')
3
4# 读取指定sheet
5df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
6
7# 读取多个sheet
8all_sheets = pd.read_excel('data.xlsx', sheet_name=None)
保存Excel
1# 保存为Excel
2df.to_excel('output.xlsx', index=False)
3
4# 保存多个sheet
5with pd.ExcelWriter('output.xlsx') as writer:
6 df1.to_excel(writer, sheet_name='Sheet1')
7 df2.to_excel(writer, sheet_name='Sheet2')
2. 数据处理神器
数据筛选
1# 条件筛选
2df_filtered = df[df['年龄'] > 25]
3
4# 多条件筛选
5df_filtered = df[(df['年龄'] > 25) & (df['工资'] > 10000)]
6
7# 值筛选
8df_filtered = df[df['部门'].isin(['技术部', '市场部'])]
数据统计
1# 基础统计
2summary = df.describe()
3
4# 分组统计
5group_stats = df.groupby('部门')['工资'].agg(['mean', 'sum', 'count'])
6
7# 透视表
8pivot_table = pd.pivot_table(
9 df,
10 values='工资',
11 index='部门',
12 columns='职级',
13 aggfunc='mean'
14)
3. 数据清洗利器
缺失值处理
1# 检查缺失值
2missing_data = df.isnull().sum()
3
4# 填充缺失值
5df['工资'].fillna(df['工资'].mean(), inplace=True)
6
7# 删除缺失行
8df.dropna(inplace=True)
重复值处理
1# 检查重复值
2duplicates = df.duplicated().sum()
3
4# 删除重复行
5df.drop_duplicates(inplace=True)
6
7# 特定列去重
8df.drop_duplicates(subset=['员工编号'], keep='first', inplace=True)
4. 数据转换高手
数据类型转换
1# 转换数据类型
2df['入职日期'] = pd.to_datetime(df['入职日期'])
3df['工资'] = df['工资'].astype(float)
4
5# 时间格式化
6df['入职年份'] = df['入职日期'].dt.year
7df['入职月份'] = df['入职日期'].dt.month
数据重塑
1# 列重命名
2df.rename(columns={'name': '姓名', 'age': '年龄'}, inplace=True)
3
4# 行列转换
5df_melted = pd.melt(df, id_vars=['员工编号'], value_vars=['Q1', 'Q2', 'Q3', 'Q4'])
5. 实用案例
自动化报表生成
1def generate_monthly_report(file_path):
2 # 读取数据
3 df = pd.read_excel(file_path)
4
5 # 数据处理
6 summary = pd.pivot_table(
7 df,
8 values='销售额',
9 index='部门',
10 columns='月份',
11 aggfunc='sum'
12 )
13
14 # 计算环比
15 summary['环比增长'] = summary['12月'] / summary['11月'] - 1
16
17 # 保存结果
18 with pd.ExcelWriter('月度报表.xlsx') as writer:
19 summary.to_excel(writer, sheet_name='汇总')
20 df.groupby('部门')['销售额'].sum().to_excel(writer, sheet_name='部门统计')
数据合并处理
1def merge_excel_files(folder_path):
2 import os
3
4 # 获取所有Excel文件
5 all_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]
6
7 # 合并数据
8 combined_df = pd.DataFrame()
9 for file in all_files:
10 df = pd.read_excel(os.path.join(folder_path, file))
11 combined_df = pd.concat([combined_df, df])
12
13 # 去重和排序
14 combined_df.drop_duplicates(inplace=True)
15 combined_df.sort_values('日期', inplace=True)
16
17 # 保存结果
18 combined_df.to_excel('合并结果.xlsx', index=False)
6. 高级技巧
数据分析
1# 相关性分析
2correlation = df.corr()
3
4# 描述性统计
5stats = df.describe(include='all')
6
7# 数据采样
8sample_df = df.sample(n=100)
自定义函数应用
1# 应用自定义函数
2def bonus_calc(salary):
3 return salary * 0.1 if salary < 10000 else salary * 0.2
4
5df['奖金'] = df['工资'].apply(bonus_calc)
实战小贴士:
大文件处理时使用chunksize参数分批读取
注意数据类型转换提高性能
善用索引加速查询
定期释放内存
掌握这些pandas技巧,Excel数据处理就再也不是难题!学会这些,你就是办公室效率担当!
下期预告:《Python自动化办公系列之PDF处理》,想学习的朋友记得关注!
我是风哥,让我们一起用Python提高工作效率!我们下期再见!