【全网最全】50个Python处理Excel示例代码,覆盖95%日常使用场景

Python处理Excel数据的方法 当Excel中有大量需要进行处理的数据时,使用Python不失为一种便捷易学的方法。接下来,本文将详细介绍多种Python方法来处理Excel数据。 阅读详情
AI摘要

本文整理了50个Python处理Excel的示例代码,涵盖基础操作、样式美化、数据分析、图表可视化和高级功能等常见场景。还提供工具选择指南,如不同场景适用的库,以及性能优化要点,包括大文件处理、数据类型优化等,可直接使用或按需调整。

前言

上篇文章主讲的是在不同场景下如何选择合适的Python工具来处理Excel文件,起因是女友单位的OA系统导出来的Excel格式太拉,她跟OA的技术人员磨了半天嘴皮子也没给她解决。她回来一肚子气自然的就撒到了我头上[坚强的微笑],我用Python几分钟就帮她解决。于是决定写一些Python相关的内容。

为了彻底解决这个问题,不吃这种二手气,必须让她快速掌握Python来处理Excel文档,想着找些例子让她练练手,网上找了一圈硬是没找到足够全面合适的,于是花了一整天整理了50个Python处理Excel的示例。每个示例都写了详细注释,并逐一运行确保无误,且附带了运行效果图。


准备工作

首先,请确保你的Python版本是3系列的(我的版本是3.12.7,Python的安装这里就不赘述了)。确保已安装了必要的库:

# 或者用 pip3 install pandas openpyxl xlsxwriter xlrd xlwt xlwings tablib numpy
pip install pandas openpyxl xlsxwriter xlrd xlwt xlwings tablib numpy

然后,创建一个demo.py文件,把下面的示例代码复制粘贴进去运行即可。

# 或者用 python3 demo.py 
python demo.py 

功能分类

  • 基础操作 (1-10): 读写、格式处理、大文件处理
  • 样式美化 (11-20): 字体、颜色、边框、保护等
  • 数据分析 (21-35): 筛选、排序、分组、透视表等
  • 图表可视化 (36-42): 各类图表创建和自定义
  • 高级功能 (43-50): 批处理、验证、公式、性能优化

这50个示例涵盖了Python处理Excel的各种常见场景:


基础操作 (1-10)

1. 创建并写入新的Excel文件

使用 openpyxl 创建一个全新的Excel工作簿,并向默认工作表中写入数据。

import openpyxl

# 创建一个新的工作簿
wb = openpyxl.Workbook()

# 获取活动的工作表
sheet = wb.active
sheet.title = "基础信息"

# 写入数据到单元格
sheet['A1'] = '姓名'
sheet['B1'] = '年龄'
sheet.cell(row=2, column=1, value='小虫')
sheet.cell(row=2, column=2, value=25)

# 保存Excel文件
wb.save("openpyxl_new.xlsx")

print("文件 'openpyxl_new.xlsx' 创建成功。")

创建并写入新的Excel文件-效果图

2. 读取现有Excel文件的数据

使用 openpyxl 打开一个已存在的Excel文件,并读取指定单元格的数据。

import openpyxl

# 准备一个用于读取的Excel文件
# (您可以先运行上一个示例来创建此文件)
try:
    # 加载已存在的工作簿
    wb = openpyxl.load_workbook("openpyxl_new.xlsx")

    # 选择要操作的工作表
    sheet = wb["基础信息"]

    # 读取单元格数据
    name = sheet['A2'].value
    age = sheet['B2'].value

    print(f"从 'openpyxl_new.xlsx' 中读取到数据: 姓名={name}, 年龄={age}")

except FileNotFoundError:
    print("错误: 'openpyxl_new.xlsx' 文件未找到。请先运行上一个示例创建它。")

读取现有Excel文件的数据-运行效果图

3. 向现有Excel文件追加数据

加载一个Excel文件,并在工作表的末尾添加新的数据行。

import openpyxl

# 假设 'append_sheet.xlsx' 已存在且包含一些数据
# 为了示例可独立运行,我们先创建它
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(['产品', '销量'])
sheet.append(['A', 100])
wb.save('append_sheet.xlsx')

# 加载工作簿并追加数据
wb = openpyxl.load_workbook('append_sheet.xlsx')
sheet = wb.active

# 追加一行数据
new_data = ['B', 150]
sheet.append(new_data)

# 保存更改
wb.save('append_sheet.xlsx')

print("数据已成功追加到 'append_sheet.xlsx'。")

向现有Excel文件追加数据-效果图

4. 使用Pandas读取Excel数据

pandas 提供了更便捷的方式将整个工作表或指定范围的数据读入一个DataFrame,便于分析。

import pandas as pd
import os

# 准备数据文件 data.xlsx
# 为了示例可独立运行,我们先创建它
data = {'姓名': ['小红', '小刚'], '分数': [95, 88]}
df_to_write = pd.DataFrame(data)
df_to_write.to_excel("data.xlsx", index=False)

# 使用pandas读取Excel文件
if os.path.exists("data.xlsx"):
    df = pd.read_excel("data.xlsx")
    print("使用Pandas读取 'data.xlsx' 的内容:")
    print(df)
else:
    print("文件 'data.xlsx' 不存在.")

使用Pandas读取Excel数据-运行效果图

5. 将Pandas DataFrame写入Excel文件

将 pandas 的DataFrame数据结构轻松导出为Excel文件,index=False 参数可以避免将DataFrame的索引写入文件。

import pandas as pd

# 创建一个DataFrame
data = {
    'ID': [1, 2, 3, 4],
    'Product': ['Apple', 'Banana', 'Cherry', 'Date'],
    'Price': [0.5, 0.3, 2.5, 1.8]
}
df = pd.DataFrame(data)

# 将DataFrame写入Excel文件
# index=False表示不把DataFrame的索引写入Excel
df.to_excel("products.xlsx", sheet_name="ProductList", index=False)

print("DataFrame已成功写入 'products.xlsx'。")

将Pandas DataFrame写入Excel文件-效果图

6. 读取Excel文件中的特定工作表

当一个Excel文件包含多个工作表时,可以指定工作表的名称或索引来读取。

import pandas as pd

# 创建一个包含多个工作表的Excel文件
with pd.ExcelWriter('multi_sheet_data.xlsx') as writer:
    pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]}).to_excel(writer, sheet_name='SheetA', index=False)
    pd.DataFrame({'colA': [5, 6], 'colB': [7, 8]}).to_excel(writer, sheet_name='SheetB', index=False)

# 通过名称读取第二个工作表 'SheetB'
df_b = pd.read_excel('multi_sheet_data.xlsx', sheet_name='SheetB')
print("读取工作表 'SheetB' 的内容:")
print(df_b)

# 通过索引读取第一个工作表 (索引从0开始)
df_a = pd.read_excel('multi_sheet_data.xlsx', sheet_name=0)
print("\n读取第一个工作表 (索引0) 的内容:")
print(df_a)

读取Excel文件中的特定工作表-运行效果图

7. 遍历工作表中的行和列

使用 openpyxl 可以方便地逐行或逐列遍历数据,适用于需要对每个单元格进行处理的场景。

import openpyxl

# 准备数据文件
wb = openpyxl.Workbook()
sheet = wb.active
for i in range(1, 6):
    sheet.append([f'Row{i}ColA', f'Row{i}ColB', f'Row{i}ColC'])
wb.save('iteration_data.xlsx')

# 加载工作簿
wb = openpyxl.load_workbook('iteration_data.xlsx')
sheet = wb.active

# 遍历行
print("遍历所有行:")
for row in sheet.iter_rows(values_only=True):
    print(row)

# 遍历列
print("\n遍历第一列:")
for cell in sheet['A']:
    print(cell.value)

遍历工作表中的行和列-运行效果图

8. 获取工作簿中所有工作表的名称

快速列出Excel文件中所有的工作表名称。

import openpyxl

# 使用上一个示例创建的文件 'multi_sheet_data.xlsx'
# 如果文件不存在,则创建一个
try:
    wb = openpyxl.load_workbook('multi_sheet_data.xlsx')
except FileNotFoundError:
    wb = openpyxl.Workbook()
    wb.create_sheet("SheetA")
    wb.create_sheet("SheetB")
    wb.save('multi_sheet_data.xlsx')

# 获取所有工作表名称
sheet_names = wb.sheetnames
print(f"'multi_sheet_data.xlsx' 中的工作表有: {sheet_names}")

获取工作簿中所有工作表的名称-运行效果图

9. 在工作簿中创建新的工作表

在现有工作簿中动态添加新的工作表,并可以指定其名称和位置。

import openpyxl

# 加载或创建工作簿
try:
    wb = openpyxl.load_workbook('workbook_with_new_sheets.xlsx')
except FileNotFoundError:
    wb = openpyxl.Workbook()

# 创建一个名为 'NewSheet' 的新工作表
if 'NewSheet' not in wb.sheetnames:
    new_sheet = wb.create_sheet(title="NewSheet")
    new_sheet['A1'] = '这是新的工作表'

# 在指定位置(第一个)创建工作表
if 'FirstSheet' not in wb.sheetnames:
    first_sheet = wb.create_sheet(title="FirstSheet", index=0)
    first_sheet['A1'] = '这是第一个工作表'

wb.save('workbook_with_new_sheets.xlsx')
print("新的工作表已创建并保存到 'workbook_with_new_sheets.xlsx'。")
print(f"当前所有工作表: {wb.sheetnames}")

在工作簿中创建新的工作表-运行效果图

在工作簿中创建新的工作表-文件效果图

10. 处理大型Excel文件(只读模式)

当处理非常大的Excel文件时,为了节省内存,可以使用 openpyxl 的只读模式。这会以流的方式读取数据,而不会将整个文件加载到内存中。

import openpyxl

# 创建一个模拟的大型文件
print("正在创建一个模拟的大型文件 'large_file.xlsx'...")
wb = openpyxl.Workbook()
sheet = wb.active
# 写入10万行数据
for i in range(1, 100001):
    sheet.append([f'ID_{i}', i*10, f'Data-{i}'])
wb.save('large_file.xlsx')
print("大型文件创建完毕。")

# 使用只读模式高效读取
wb_read = openpyxl.load_workbook('large_file.xlsx', read_only=True)
sheet_read = wb_read.active

print("\n以只读模式开始处理大型文件...")
row_count = 0
# iter_rows() 在只读模式下是高效的
for row in sheet_read.iter_rows():
    row_count += 1
    # 这里可以添加处理每一行数据的逻辑
    # 为了演示,我们只打印前5行和最后5行
    if row_count <= 5 or row_count > 99995:
        print(f"读取行 {row_count}: {[cell.value for cell in row]}")

print(f"...处理完成,共读取 {row_count} 行。")

处理大型Excel文件(只读模式)-运行效果图


样式美化 (11-20)

11. 设置单元格字体样式(字体、大小、粗体、斜体)

使用 openpyxl.styles.Font 来定义并应用字体样式到单元格。

import openpyxl
from openpyxl.styles import Font

wb = openpyxl.Workbook()
sheet = wb.active

# 定义不同的字体样式
font_bold = Font(name='Calibri', size=12, bold=True)
font_italic_color = Font(name='Arial', size=10, italic=True, color='FF0000') # 红色

# 应用样式
sheet['A1'].value = '粗体文本'
sheet['A1'].font = font_bold

sheet['B2'].value = '红色斜体'
sheet['B2'].font = font_italic_color

wb.save('font_styles.xlsx')
print("已应用字体样式并保存到 'font_styles.xlsx'。")

设置单元格字体样式-效果图

12. 设置单元格背景填充颜色

使用 openpyxl.styles.PatternFill 可以为单元格设置纯色或图案填充。

import openpyxl
from openpyxl.styles import PatternFill

wb = openpyxl.Workbook()
sheet = wb.active

# 定义填充样式
fill_green = PatternFill(start_color='00FF00', end_color='00FF00', fill_type='solid')
fill_yellow = PatternFill(fill_type='solid', fgColor='FFFF00')

# 应用填充
sheet['A1'].value = '绿色背景'
sheet['A1'].fill = fill_green

sheet.cell(row=2, column=2, value='黄色背景').fill = fill_yellow

wb.save('fill_style.xlsx')
print("已应用背景填充并保存到 'fill_style.xlsx'。")

设置单元格背景填充颜色-效果图

13. 设置单元格边框

通过 openpyxl.styles.Border 和 Side 对象可以精细控制单元格的每个边框。

import openpyxl
from openpyxl.styles import Border, Side

wb = openpyxl.Workbook()
sheet = wb.active

# 定义边框样式
thin_border = Border(
    left=Side(style='thin'), 
    right=Side(style='thin'), 
    top=Side(style='thin'), 
    bottom=Side(style='thin')
)
double_border_bottom = Border(bottom=Side(style='double', color='0000FF'))

# 应用边框
sheet['A1'].value = '四边框'
sheet['A1'].border = thin_border

sheet['B2'].value = '蓝色双下划线'
sheet['B2'].border = double_border_bottom

wb.save('border_styles.xlsx')
print("已应用边框样式并保存到 'border_styles.xlsx'。")

设置单元格边框-效果图

14. 设置单元格对齐方式

使用 openpyxl.styles.Alignment 控制文本在单元格内的水平和垂直对齐以及文本换行。

import openpyxl
from openpyxl.styles import Alignment

wb = openpyxl.Workbook()
sheet = wb.active

# 设置列宽和行高以便观察效果
sheet.column_dimensions['A'].width = 20
sheet.row_dimensions[1].height = 40

# 定义对齐样式
align_center_wrap = Alignment(horizontal='center', vertical='center', wrap_text=True)

# 应用对齐
sheet['A1'].value = '这是一个需要换行并居中对齐的长文本。'
sheet['A1'].alignment = align_center_wrap

wb.save('alignment_style.xlsx')
print("已应用对齐样式并保存到 'alignment_style.xlsx'。")

设置单元格对齐方式-效果图

15. 合并与拆分单元格

merge_cells() 用于合并一个矩形区域的单元格,unmerge_cells() 用于拆分。

import openpyxl
from openpyxl.styles import Alignment, Font

wb = openpyxl.Workbook()
sheet = wb.active

# 合并单元格 A1到C1
sheet.merge_cells('A1:C1')
merged_cell = sheet['A1']
merged_cell.value = '合并后的标题'
merged_cell.alignment = Alignment(horizontal='center', vertical='center')
merged_cell.font = Font(bold=True)

# 写入一些其他数据
sheet['A2'] = '数据1'
sheet['B2'] = '数据2'
sheet['C2'] = '数据3'

# 拆分单元格 (示例)
# sheet.unmerge_cells('A1:C1')

wb.save('merge_cells.xlsx')
print("已合并单元格并保存到 'merge_cells.xlsx'。")

合并单元格-效果图

解开# sheet.unmerge_cells('A1:C1') 代码注释,再运行上述代码:
拆分单元格-效果图

16. 设置行高和列宽

可以精确地调整特定行的高度和特定列的宽度。

import openpyxl

wb = openpyxl.Workbook()
sheet = wb.active

# 写入数据
sheet['A1'] = '自定义列宽'
sheet['B1'] = '自定义行高'
sheet['B2'] = '高单元格'

# 设置A列的宽度为25
sheet.column_dimensions['A'].width = 25

# 设置第2行的高度为50
sheet.row_dimensions[2].height = 50

wb.save('dimensions.xlsx')
print("已设置行高和列宽并保存到 'dimensions.xlsx'。")

设置行高和列宽-效果图

17. 冻结窗格

冻结窗格可以在滚动表格时保持指定的行和列可见,便于查看大型数据集。

import openpyxl

wb = openpyxl.Workbook()
sheet = wb.active

# 冻结首行
sheet.freeze_panes = 'A2'

# 填充数据以演示滚动效果
sheet.append(['Header1', 'Header2', 'Header3'])
for i in range(1, 51):
    sheet.append([f'Data{i}-1', f'Data{i}-2', f'Data{i}-3'])

wb.save('freeze_panes.xlsx')
print("已冻结首行并保存到 'freeze_panes.xlsx'。打开文件滚动查看效果。")

冻结窗格-效果图

18. 设置数字格式

控制单元格中数字的显示格式,如货币、百分比、日期等。

import openpyxl
from datetime import datetime

wb = openpyxl.Workbook()
sheet = wb.active

# 写入不同类型的数据
sheet['A1'] = 0.123
sheet['A2'] = 1500.50
sheet['A3'] = datetime.now()

# 应用数字格式
sheet['A1'].number_format = '0.00%'  # 百分比
sheet['A2'].number_format = '$#,##0.00' # 货币
sheet['A3'].number_format = 'YYYY-MM-DD HH:MM:SS' # 日期时间

sheet.column_dimensions['A'].width = 25

wb.save('number_formats.xlsx')
print("已设置数字格式并保存到 'number_formats.xlsx'。")

设置数字格式-效果图

19. 使用Pandas Styler进行样式设置

Pandas的 Styler 对象提供了一种更“数据驱动”的方式来设置Excel样式,例如根据值高亮显示单元格。

import pandas as pd

# 创建DataFrame
data = {'科目': ['语文', '数学', '英语'], '分数': [85, 98, 78]}
df = pd.DataFrame(data)

# 定义样式函数:分数低于80的标为红色
def highlight_low_score(s):
    return ['background-color: #FFCDD2' if v < 80 else '' for v in s]

# 应用样式
styler = df.style.apply(highlight_low_score, subset=['分数'])

# 导出到Excel
styler.to_excel('styled_scores.xlsx', engine='openpyxl', index=False)

print("使用Pandas Styler设置样式并保存到 'styled_scores.xlsx'。")

使用Pandas Styler进行样式设置-效果图

20. 保护工作表

可以锁定工作表以防止意外修改,同时可以设置密码。

import openpyxl

wb = openpyxl.Workbook()
sheet = wb.active

sheet['A1'] = '这是受保护的数据'
sheet['B1'] = '此单元格可编辑'

# 锁定A1单元格(默认所有单元格都是锁定的)
sheet['A1'].protection = openpyxl.styles.Protection(locked=True)
# 解锁B1单元格
sheet['B1'].protection = openpyxl.styles.Protection(locked=False)

# 启用工作表保护,可以设置密码
sheet.protection.sheet = True
sheet.protection.password = 'password123' # 设置密码

wb.save('protected_sheet.xlsx')
print("已保护工作表并保存到 'protected_sheet.xlsx'。密码是 'password123'。")

保护工作表-效果图


数据分析 (21-35)

这部分主要利用 pandas 库的强大功能,它极大地简化了数据处理和分析的流程。

首先,我们创建一个通用的数据集用于本节的多数示例。

import pandas as pd
import numpy as np

# 创建一个示例销售数据DataFrame
data = {
    'Date': pd.to_datetime(['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-03', '2023-01-03', '2023-01-01']),
    'Region': ['East', 'West', 'East', 'West', 'East', 'South', 'East'],
    'Product': ['A', 'A', 'B', 'A', 'B', 'C', 'A'],
    'Sales': [100, 150, 200, 50, 120, 80, 100],
    'Quantity': [10, 15, 20, 5, 12, 8, 10]
}
df_sales = pd.DataFrame(data)

# 增加一些缺失值用于后续演示
df_sales.loc[5, 'Sales'] = np.nan

# 保存到Excel文件
df_sales.to_excel('sales_data.xlsx', index=False)

print("销售数据已创建并保存到 'sales_data.xlsx'。")

创建的销售数据文件
21. 根据条件筛选数据

使用 pandas 可以轻松地根据列值筛选出符合条件的行。

import pandas as pd

# 读取数据
df = pd.read_excel('sales_data.xlsx')

# 筛选出 'Region' 为 'East' 且 'Sales' 大于 100 的数据
filtered_df = df[(df['Region'] == 'East') & (df['Sales'] > 100)]

print("筛选结果 (Region为East且Sales > 100):")
print(filtered_df)

filtered_df.to_excel('filtered_sales.xlsx', index=False)

根据条件筛选数据-运行效果图

22. 按列排序数据

按一列或多列对数据进行升序或降序排序。

import pandas as pd

# 读取数据
df = pd.read_excel('sales_data.xlsx')

# 按 'Region' 升序,然后按 'Sales' 降序排序
sorted_df = df.sort_values(by=['Region', 'Sales'], ascending=[True, False])

print("排序结果:")
print(sorted_df)

sorted_df.to_excel('sorted_sales.xlsx', index=False)

按列排序数据-运行效果图

23. 删除重复数据

识别并移除数据集中的重复行。

import pandas as pd

# 读取数据 (sales_data.xlsx 中有重复行)
df = pd.read_excel('sales_data.xlsx')

# 删除基于所有列都重复的行
df_no_duplicates = df.drop_duplicates()

print("原始数据行数:", len(df))
print("去重后数据行数:", len(df_no_duplicates))
print("\n去重后的数据:")
print(df_no_duplicates)

df_no_duplicates.to_excel('deduplicated_sales.xlsx', index=False)

删除重复数据-运行效果图

24. 分组聚合数据

按某个或多个分类列对数据进行分组,然后计算每组的统计量(如总和、平均值等)。

import pandas as pd

# 读取数据
df = pd.read_excel('sales_data.xlsx')

# 按 'Region' 分组,计算每个区域的销售总额和平均数量
region_summary = df.groupby('Region').agg(
    Total_Sales=('Sales', 'sum'),
    Avg_Quantity=('Quantity', 'mean')
).reset_index()

print("按区域分组聚合的结果:")
print(region_summary)

region_summary.to_excel('region_summary.xlsx', index=False)

分组聚合数据-运行效果图

25. 创建数据透视表

数据透视表是数据汇总的强大工具,可以灵活地重塑数据以进行多维度分析。

import pandas as pd

# 读取数据
df = pd.read_excel('sales_data.xlsx')

# 创建数据透视表:以 'Region' 为行,'Product' 为列,值为 'Sales' 的总和
pivot_table = df.pivot_table(index='Region', columns='Product', values='Sales', aggfunc='sum', fill_value=0)

print("数据透视表结果:")
print(pivot_table)

pivot_table.to_excel('sales_pivot_table.xlsx')

创建数据透视表-运行效果图

26. 基于现有列计算新列

通过对现有列进行算术运算或其他转换来创建新的数据列。

import pandas as pd

# 读取数据
df = pd.read_excel('sales_data.xlsx')

# 计算新列 'Price_Per_Unit' (单价)
df['Price_Per_Unit'] = df['Sales'] / df['Quantity']

print("添加了 'Price_Per_Unit' 列后的数据:")
print(df)

df.to_excel('sales_with_price.xlsx', index=False)

基于现有列计算新列-运行效果图

27. 模拟Excel的VLOOKUP功能

使用 pandas.merge 可以实现类似Excel中VLOOKUP的功能,用于合并两个相关联的数据集。

import pandas as pd

# 主数据表 (sales_data.xlsx)
df_sales = pd.read_excel('sales_data.xlsx')

# 创建一个产品信息查找表
product_info = pd.DataFrame({
    'Product': ['A', 'B', 'C'],
    'Category': ['Fruit', 'Vegetable', 'Fruit']
})

# 使用 merge 实现 VLOOKUP
merged_df = pd.merge(df_sales, product_info, on='Product', how='left')

print("合并了产品类别信息后的数据:")
print(merged_df)

merged_df.to_excel('sales_with_category.xlsx', index=False)

模拟Excel的VLOOKUP-运行效果图

28. 对列应用自定义函数

使用 .apply() 方法可以将一个自定义函数应用到DataFrame的某一列或多列。

import pandas as pd

# 读取数据
df = pd.read_excel('sales_data.xlsx')

# 定义一个函数,根据销售额给产品评级
def get_sales_level(sales):
    if pd.isna(sales):
        return 'Unknown'
    if sales > 150:
        return 'High'
    elif sales > 80:
        return 'Medium'
    else:
        return 'Low'

# 应用函数创建新列 'Sales_Level'
df['Sales_Level'] = df['Sales'].apply(get_sales_level)

print("添加了销售评级列的数据:")
print(df)

df.to_excel('sales_with_level.xlsx', index=False)

对列应用自定义函数-运行效果图

29. 处理缺失值

数据分析前通常需要处理缺失值(NaN),可以选择填充一个特定值,或直接删除含有缺失值的行。

import pandas as pd

# 读取含有缺失值的数据
df = pd.read_excel('sales_data.xlsx')

# 填充缺失的 'Sales' 值为该列的平均值
mean_sales = df['Sales'].mean()
df_filled = df.fillna({'Sales': mean_sales})

print("用平均值填充缺失值后的数据:")
print(df_filled)

# 或者,删除含有任何缺失值的行
df_dropped = df.dropna()
print("\n删除缺失值行后的数据:")
print(df_dropped)

df_filled.to_excel('sales_filled_na.xlsx', index=False)

处理缺失值-运行效果图

30. 获取描述性统计信息

快速生成数值列的摘要统计信息,如计数、均值、标准差、最小值、最大值和四分位数。

import pandas as pd

# 读取数据
df = pd.read_excel('sales_data.xlsx')

# 获取数值列的描述性统计
stats = df.describe()

print("销售数据的描述性统计:")
print(stats)

stats.to_excel('sales_statistics.xlsx')

获取描述性统计信息-运行效果图

31. 添加自动筛选器

使用 openpyxl 为表格的标题行添加自动筛选功能,就像在Excel中手动操作一样。

import openpyxl

# 使用之前创建的 'sorted_sales.xlsx' 文件
file_path = 'sorted_sales.xlsx'

# 加载工作簿和工作表
wb = openpyxl.load_workbook(file_path)
sheet = wb.active

# 为整个数据范围添加自动筛选器
sheet.auto_filter.ref = sheet.dimensions

wb.save(file_path)
print(f"已为 '{file_path}' 添加自动筛选器。")

添加自动筛选器-运行效果图-1

添加自动筛选器-运行效果图-2

添加自动筛选器-运行效果图-3

添加自动筛选器-运行效果图-4

32. 设置条件格式

根据单元格的值动态改变其样式,例如将高于平均值的销售额标绿。

import openpyxl
from openpyxl.styles import PatternFill
from openpyxl.formatting.rule import CellIsRule

# 使用 'sales_with_price.xlsx' 文件
file_path = 'sales_with_price.xlsx'
wb = openpyxl.load_workbook(file_path)
sheet = wb.active

# 定义样式:绿色填充
green_fill = PatternFill(start_color='C6EFCE', end_color='C6EFCE', fill_type='solid')

# 定义规则:单元格值大于150
rule = CellIsRule(operator='greaterThan', formula=[150], fill=green_fill)

# 应用规则到 'Sales' 列 (D列)
sheet.conditional_formatting.add('D2:D100', rule)

wb.save('sales_conditional_formatting.xlsx')
print("已添加条件格式并保存到 'sales_conditional_formatting.xlsx'。")

设置条件格式-运行效果图

33. 将一列拆分为多列

当一个单元格内包含多个信息时(例如用逗号分隔),可以将其拆分到不同的列中。

import pandas as pd

# 创建一个包含复合列的DataFrame
df = pd.DataFrame({
    'ID': [1, 2, 3],
    'Name_City': ['John-NewYork', 'Anna-London', 'Peter-Tokyo']
})

# 按 '-' 拆分 'Name_City' 列
df[['Name', 'City']] = df['Name_City'].str.split('-', expand=True)

# 删除原始列
df = df.drop('Name_City', axis=1)

print("拆分列后的数据:")
print(df)

df.to_excel('split_column_data.xlsx', index=False)

将一列拆分为多列-运行效果图

34. 合并多个Excel文件

将多个结构相同的Excel文件中的数据合并到一个文件中。

import pandas as pd
import os

# 创建两个模拟的月度销售文件
df1 = pd.DataFrame({'Month': ['Jan'], 'Sales': [1000]})
df2 = pd.DataFrame({'Month': ['Feb'], 'Sales': [1200]})
df1.to_excel('sales_jan.xlsx', index=False)
df2.to_excel('sales_feb.xlsx', index=False)

# 获取所有要合并的文件列表
files_to_merge = ['sales_jan.xlsx', 'sales_feb.xlsx']

# 读取并合并
all_data = pd.concat((pd.read_excel(f) for f in files_to_merge), ignore_index=True)

print("合并后的数据:")
print(all_data)

all_data.to_excel('yearly_sales_summary.xlsx', index=False)

# 清理临时文件
os.remove('sales_jan.xlsx')
os.remove('sales_feb.xlsx')

合并多个Excel文件-运行效果图

35. 将数据写入多个工作表

将不同的DataFrame写入同一个Excel文件的不同工作表中。

import pandas as pd

# 准备两个不同的DataFrame
df_east = pd.DataFrame({'Product': ['A', 'B'], 'Sales': [200, 250]})
df_west = pd.DataFrame({'Product': ['A', 'C'], 'Sales': [300, 150]})

# 使用 ExcelWriter 将它们写入不同的工作表
with pd.ExcelWriter('regional_sales_report.xlsx') as writer:
    df_east.to_excel(writer, sheet_name='East_Region', index=False)
    df_west.to_excel(writer, sheet_name='West_Region', index=False)

print("已将不同区域的数据写入到 'regional_sales_report.xlsx' 的不同工作表中。")

将数据写入多个工作表-效果图-1

将数据写入多个工作表-效果图-2


图表可视化 (36-42)

这部分将展示如何使用 openpyxl 在Excel中创建和定制各种图表。

首先,我们创建一个通用的数据文件,用于本节的所有图表示例。

import openpyxl

# 创建一个工作簿和工作表
wb = openpyxl.Workbook()
sheet = wb.active
sheet.title = 'ChartData'

# 添加数据
headers = ['Category', 'Series 1', 'Series 2', 'Scatter X', 'Scatter Y']
sheet.append(headers)
data = [
    ('A', 20, 30, 1, 5),
    ('B', 40, 60, 2, 10),
    ('C', 50, 70, 3, 7),
    ('D', 30, 50, 4, 15),
    ('E', 25, 45, 5, 8)
]
for row in data:
    sheet.append(row)

# 保存文件
wb.save('chart_data.xlsx')
print("图表数据已创建并保存到 'chart_data.xlsx'。")

创建的图表数据文件

36. 创建柱状图/条形图

柱状图是比较不同类别数据量的常用图表。

import openpyxl
from openpyxl.chart import BarChart, Reference

# 加载工作簿
wb = openpyxl.load_workbook('chart_data.xlsx')
sheet = wb['ChartData']

# 创建一个柱状图对象
chart = BarChart()
chart.type = "col" # 'col' 是柱状图, 'bar' 是条形图
chart.title = "柱状图示例"
chart.x_axis.title = "类别"
chart.y_axis.title = "数值"

# 选择数据范围
data = Reference(sheet, min_col=2, min_row=1, max_col=3, max_row=6)
cats = Reference(sheet, min_col=1, min_row=2, max_row=6)

# 将数据添加到图表
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)

# 将图表添加到工作表的位置 E2
sheet.add_chart(chart, "E2")

wb.save('bar_chart_report.xlsx')
print("柱状图已创建并保存到 'bar_chart_report.xlsx'。")

柱状图效果

37. 创建折线图

折线图适合展示数据随时间或连续间隔变化的趋势。

import openpyxl
from openpyxl.chart import LineChart, Reference

# 加载工作簿
wb = openpyxl.load_workbook('chart_data.xlsx')
sheet = wb['ChartData']

# 创建一个折线图对象
chart = LineChart()
chart.title = "折线图示例"
chart.x_axis.title = "类别"
chart.y_axis.title = "数值"

# 选择数据范围
data = Reference(sheet, min_col=2, min_row=1, max_col=3, max_row=6)
cats = Reference(sheet, min_col=1, min_row=2, max_row=6)

# 将数据添加到图表
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)

# 将图表添加到工作表的位置 G2
sheet.add_chart(chart, "G2")

wb.save('line_chart_report.xlsx')
print("折线图已创建并保存到 'line_chart_report.xlsx'。")

折线图效果

38. 创建饼图

饼图用于显示各部分占总体的百分比。

import openpyxl
from openpyxl.chart import PieChart, Reference

# 加载工作簿
wb = openpyxl.load_workbook('chart_data.xlsx')
sheet = wb['ChartData']

# 创建一个饼图对象
chart = PieChart()
chart.title = "饼图示例 (Series 1)"

# 选择数据范围 (只使用 Series 1)
labels = Reference(sheet, min_col=1, min_row=2, max_row=6)
data = Reference(sheet, min_col=2, min_row=1, max_row=6)

chart.add_data(data, titles_from_data=True)
chart.set_categories(labels)

# 将图表添加到工作表的位置 G2
sheet.add_chart(chart, "G2")

wb.save('pie_chart_report.xlsx')
print("饼图已创建并保存到 'pie_chart_report.xlsx'。")

饼图效果

39. 创建散点图

散点图用于展示两个数值变量之间的关系。

import openpyxl
from openpyxl.chart import ScatterChart, Reference, Series

# 加载工作簿
wb = openpyxl.load_workbook('chart_data.xlsx')
sheet = wb['ChartData']

# 创建一个散点图对象
chart = ScatterChart()
chart.title = "散点图示例"
chart.x_axis.title = "X 值"
chart.y_axis.title = "Y 值"

# 设置散点图样式
chart.style = 2  # 设置图表样式

# 定义X和Y轴的数据
x_values = Reference(sheet, min_col=4, min_row=2, max_row=6)
y_values = Reference(sheet, min_col=5, min_row=2, max_row=6)

# 创建一个数据系列并添加到图表
series = Series(y_values, x_values, title="观测点")
# 设置散点图的标记样式
series.marker.symbol = "circle"
series.marker.size = 7
series.graphicalProperties.line.noFill = True  # 不显示连接线
chart.series.append(series)

# 将图表添加到工作表的位置 G2
sheet.add_chart(chart, "G2")

wb.save('scatter_chart_report.xlsx')
print("散点图已创建并保存到 'scatter_chart_report.xlsx'。")

散点图效果

40. 创建面积图

面积图类似于折线图,但线下方的区域被填充,强调数量随时间变化的程度。

import openpyxl
from openpyxl.chart import AreaChart, Reference

# 加载工作簿
wb = openpyxl.load_workbook('chart_data.xlsx')
sheet = wb['ChartData']

# 创建一个面积图对象
chart = AreaChart()
chart.title = "面积图示例"
chart.x_axis.title = "类别"
chart.y_axis.title = "数值"

# 选择数据范围
data = Reference(sheet, min_col=2, min_row=1, max_col=3, max_row=6)
cats = Reference(sheet, min_col=1, min_row=2, max_row=6)

# 将数据添加到图表
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)

# 将图表添加到工作表的位置 G2
sheet.add_chart(chart, "G2")

wb.save('area_chart_report.xlsx')
print("面积图已创建并保存到 'area_chart_report.xlsx'。")

面积图效果

41. 自定义图表样式(标题、图例、颜色)

可以对图表的各个元素进行详细的定制,以满足报告的美观要求。

import openpyxl
from openpyxl.chart import LineChart, Reference
from openpyxl.chart.shapes import GraphicalProperties
from openpyxl.drawing.line import LineProperties

# 加载工作簿
wb = openpyxl.load_workbook('chart_data.xlsx')
sheet = wb['ChartData']

# 创建折线图
chart = LineChart()

# 自定义标题
chart.title = "自定义图表"
chart.style = 13 # 选择一个内置样式

# 自定义坐标轴
chart.y_axis.title = 'Y-Axis'
chart.x_axis.title = 'X-Axis'

# 自定义图例位置
chart.legend.position = 'b' # 'b' for bottom

# 选择数据
data = Reference(sheet, min_col=2, min_row=1, max_col=3, max_row=6)
cats = Reference(sheet, min_col=1, min_row=2, max_row=6)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)

# 自定义数据系列颜色
s1 = chart.series[0]
s1.graphicalProperties = GraphicalProperties(ln=LineProperties(solidFill="FF0000")) # 红色
s2 = chart.series[1]
s2.marker.symbol = "triangle" # 改变数据点标记
s2.graphicalProperties = GraphicalProperties(ln=LineProperties(solidFill="00B050")) # 绿色

# 添加图表
sheet.add_chart(chart, "G2")

wb.save('custom_chart_report.xlsx')
print("自定义图表已创建并保存到 'custom_chart_report.xlsx'。")

自定义图表效果

42. 创建带有次坐标轴的组合图

当需要比较两个单位和量级差异很大的数据系列时,组合图和次坐标轴非常有用。

import openpyxl
from openpyxl.chart import BarChart, LineChart, Reference

# 准备数据
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(['Month', 'Sales (Units)', 'Avg Temperature (°C)'])
for i in range(1, 7):
    sheet.append([f'Month {i}', 100 + i*20, 15 + i*2])

# 创建主图(柱状图)
bar_chart = BarChart()
data1 = Reference(sheet, min_col=2, min_row=1, max_row=7)
cats = Reference(sheet, min_col=1, min_row=2, max_row=7)
bar_chart.add_data(data1, titles_from_data=True)
bar_chart.set_categories(cats)
bar_chart.y_axis.title = "销量 (单位)"

# 创建次坐标轴的图(折线图)
line_chart = LineChart()
data2 = Reference(sheet, min_col=3, min_row=1, max_row=7)
line_chart.add_data(data2, titles_from_data=True)
line_chart.y_axis.axId = 200 # 设置为次坐标轴ID
line_chart.y_axis.title = "平均温度 (°C)"

# 将折线图的Y轴移到次坐标轴
bar_chart.y_axis.crosses = "max"
bar_chart += line_chart # 将折线图叠加到柱状图上

# 添加图表
sheet.add_chart(bar_chart, "E2")

wb.save('combo_chart_report.xlsx')
print("组合图已创建并保存到 'combo_chart_report.xlsx'。")

组合图效果


功能分类:高级功能 (43-50)

43. 批量处理文件夹中的所有Excel文件

自动化处理一个文件夹内的所有Excel文件,例如,为每个文件的特定列计算总和。

import pandas as pd
import os

# 创建一个临时文件夹和一些示例文件
if not os.path.exists('temp_excel_folder'):
    os.makedirs('temp_excel_folder')

pd.DataFrame({'Data': [10, 20]}).to_excel('temp_excel_folder/test1.xlsx', index=False)
pd.DataFrame({'Data': [30, 40]}).to_excel('temp_excel_folder/test2.xlsx', index=False)

# 目标文件夹
folder_path = 'temp_excel_folder'

# 遍历文件夹中的所有 .xlsx 文件
for filename in os.listdir(folder_path):
    if filename.endswith('.xlsx'):
        file_path = os.path.join(folder_path, filename)
        
        # 读取文件
        df = pd.read_excel(file_path)
        
        # 计算'Data'列的总和
        total = df['Data'].sum()
        
        print(f"文件 '{filename}' 的 'Data' 列总和是: {total}")

print("\n批量处理完成。")

批量处理文件夹中的所有Excel文件-运行效果图

44. 添加数据验证

为单元格设置数据验证规则,限制用户输入的数据类型或范围,例如,只允许输入列表中的特定值。

import openpyxl
from openpyxl.worksheet.datavalidation import DataValidation

wb = openpyxl.Workbook()
sheet = wb.active

# 创建数据验证对象
# 允许列表中的值
dv = DataValidation(type="list", formula1='"男,女"', allow_blank=True)

# 添加提示信息
dv.prompt = '请从列表中选择'
dv.promptTitle = '性别选择'

# 将验证规则添加到工作表
sheet.add_data_validation(dv)

# 将规则应用到B列的所有单元格
dv.add('B1:B1048576')

sheet['A1'] = '姓名'
sheet['B1'] = '性别 (请点击选择)'

wb.save('data_validation_example.xlsx')
print("已添加数据验证并保存到 'data_validation_example.xlsx'。")

添加数据验证-效果图

45. 写入和读取Excel公式

可以直接向单元格写入Excel公式,openpyxl 在读取时可以通过 data_only=False 来获取公式本身,或 data_only=True 来获取公式计算后的结果。

import openpyxl

wb = openpyxl.Workbook()
sheet = wb.active

# 写入数据和公式
sheet['A1'] = 10
sheet['A2'] = 20
sheet['A3'] = '=SUM(A1:A2)'

# 保存文件
wb.save('formula_example.xlsx')
print("文件 'formula_example.xlsx' 已保存,A3包含公式。")

# --- 读取公式和结果 ---

# 读取公式本身
wb_formula = openpyxl.load_workbook('formula_example.xlsx', data_only=False)
sheet_formula = wb_formula.active
formula_in_a3 = sheet_formula['A3'].value
print(f"读取到的公式是: {formula_in_a3}")

# 读取公式计算出的值
wb_value = openpyxl.load_workbook('formula_example.xlsx', data_only=True)
sheet_value = wb_value.active
value_in_a3 = sheet_value['A3'].value
print(f"读取到的计算结果是: {value_in_a3}")

写入和读取Excel公式-运行效果

46. 将Excel表格转换为HTML

pandas 可以轻松地将DataFrame转换为HTML表格,便于在网页上展示。

import pandas as pd

# 创建一个DataFrame
data = {'排名': [1, 2, 3], '城市': ['上海', '北京', '深圳'], 'GDP (万亿)': [4.32, 3.99, 3.07]}
df = pd.DataFrame(data)

# 将DataFrame转换为HTML字符串
html_table = df.to_html(index=False, classes='table table-striped', justify='center')

# 将HTML保存到文件
with open('table.html', 'w', encoding='utf-8') as f:
    f.write(html_table)

print("Excel数据已转换为HTML并保存到 'table.html'。")

将Excel表格转换为HTML-效果图

47. 从网页抓取表格并存入Excel

pandas 的 read_html 功能非常强大,可以自动识别并读取网页中的表格数据。

import pandas as pd

# 这是一个包含表格的示例URL 
# 注意:此功能需要安装 lxml 库 (pip install lxml)
url = 'https://www.bigbug.net/table.html'

try:
    # read_html 返回一个DataFrame的列表
    tables = pd.read_html(url)
    
    # 通常第一个或第二个表格是我们需要的
    df_population = tables[0]

    #print(df_population)
    
    # 清理和重命名列
    df_population = df_population.iloc[:, [1, 2]] # 选择需要的列
    df_population.columns = ['新标题1', '新标题2']
    
    # 保存到Excel
    df_population.head(2).to_excel('new_table.xlsx', index=False)
    
    print("已成功从网页中获取到数据并保存前2条到 'new_table.xlsx'。")

except Exception as e:
    print(f"抓取失败,可能是网络问题或网页结构已改变: {e}")

从网页抓取表格并存入Excel-获取到的数据效果图

48. 性能优化:使用 openpyxl 的 write_only 模式

对于生成非常大的Excel文件,write_only 模式可以显著降低内存消耗,因为它以流式方式写入数据,不会在内存中保留整个工作簿结构。

import openpyxl

# 创建一个只写模式的工作簿
wb = openpyxl.Workbook(write_only=True)
ws = wb.create_sheet()

print("开始以只写模式生成大型文件 'large_write_only.xlsx'...")

# 写入标题行
ws.append(['ID', 'Value1', 'Value2'])

# 写入大量数据(10万行)
for i in range(100000):
    ws.append([i, i*2, i*3])

# 保存文件
wb.save('large_write_only.xlsx')

print("大型文件生成完毕。")

大型文件生成效果图

49. 将Excel转换为CSV

将Excel文件转换为CSV(逗号分隔值)格式,这是一种更通用、更轻量级的数据存储格式。

import pandas as pd

# 准备一个Excel文件
pd.DataFrame({'A': [1, 2], 'B': ['x', 'y']}).to_excel('data_to_convert.xlsx', index=False)

# 读取Excel
df = pd.read_excel('data_to_convert.xlsx')

# 保存为CSV
# index=False 避免写入pandas的索引
# encoding='utf-8-sig' 确保中文字符在Excel中正确显示
df.to_csv('converted_data.csv', index=False, encoding='utf-8-sig')

print("文件 'data_to_convert.xlsx' 已成功转换为 'converted_data.csv'。")

将Excel转换为CSV-效果图

50. 从CSV读取数据并存入Excel

与上一个示例相反,将CSV文件的数据读入并保存为具有更多格式化选项的Excel文件。

import pandas as pd

# 准备一个CSV文件
csv_data = "col1,col2\n10,20\n30,40"
with open('data.csv', 'w') as f:
    f.write(csv_data)

# 读取CSV
df = pd.read_csv('data.csv')

# 保存为Excel
df.to_excel('from_csv.xlsx', index=False, sheet_name='MyData')

print("文件 'data.csv' 已成功转换为 'from_csv.xlsx'。")

从CSV读取数据并存入Excel-效果图


总结

至此,这些示例代码已经涵盖了50个从基础到高级的Python处理Excel的常见场景。你可以直接使用或根据具体需求进行调整。

工具选择指南:

  1. 数据清洗分析 → pandas

    • 适用于筛选、排序、聚合、处理缺失值、数据透视等复杂的数据操作。
  2. 格式控制/公式/图表 → openpyxl / xlsxwriter

    • openpyxl 擅长对现有 .xlsx 文件进行精细的格式修改。
    • xlsxwriter 专注于从头创建格式复杂的报告,尤其在图表和高级功能方面表现出色。
  3. 大文件处理 → openpyxl (read_only模式) 或 pandas 分块

    • openpyxl 的只读模式能显著降低大文件读取时的内存消耗。
    • pandas 通过分块读取,可以处理超出内存大小的数据集。
  4. Excel 自动化 → xlwings

    • 能与正在运行的 Excel 应用程序进行实时交互,适合需要VBA式自动化的场景。
  5. 旧版 .xls 文件 → xlrd / xlwt

    • 这两个库是处理 Excel 2003 及更早版本 .xls 格式的标准选择。
  6. 格式转换 → Tablib

    • 轻量级库,可以方便地在 Excel, CSV, JSON, HTML 等多种格式间进行数据转换。
  7. 混合场景 → pandas + openpyxl 组合

    • 这是最强大和灵活的组合:利用 pandas 进行高效的数据分析,然后借助 openpyxl 引擎进行精美的格式化输出。

性能优化要点

  1. 大文件优先使用 read_only=True 或分块处理:避免一次性将大文件全部加载到内存中,这是处理大数据的关键。

  2. 数据类型优化减少内存占用:在 pandas 中,使用 astype() 将列转换为更节省空间的类型(如将 float64 转为 float32,或将数字列转为 category 类型)可以有效减少内存占用。

  3. 及时释放不需要的对象:在处理完大型数据对象(如 DataFrame)后,使用 del 关键字并调用垃圾回收 (import gc; gc.collect()) 可以帮助及时释放内存。

  4. 批处理时注意内存管理:在循环处理多个文件或数据块时,确保在每次迭代结束时清理不再需要的变量,防止内存泄漏。

希望这些示例能对您有所帮助!(* ̄︶ ̄)

VBA Excel入门:零基础实现办公自动化 Excel VBA是一种嵌入式自动化技术,依托Excel原生环境运行,无需额外安装依赖,具备即写即跑、调试直观、权限友好等工程优势。其核心在于对象模型(Workbook/Worksheet/Range)与事件驱动机制,适用于财务、供应链、教务等高频表格处理场景。相比Python或Power Automate,VBA在中小组织中仍具不可替代性——尤其当用户需‘零学习成本’快速解决重复操作,如自动填充编号、跨表核对、一键导出PDF等。本文聚焦真实工位需求,从激活开发工具、录制宏逆向学代码,到编写可落地的VBA脚 阅读详情

相关推荐

Excel版本历史失效原因与云协同恢复实战指南

Excel版本历史并非简单的本地备份功能,而是一种依赖云存储协议、AutoSave机制和权限体系的协同状态追踪技术。其底层基于Microsoft Graph API实现文件状态快照与编辑溯源,核心价值在于支持多人高频协作下的精准变更定位与非破坏性数据提取。该功能仅在OneDrive或SharePoint原生路径下启用,且必须开启AutoSave才能持续生成带时间戳和编辑者标签的版本链。常见失效场景包括本地保存路径误用、DLP软件锁文件、Mac钥匙串凭证过期及SharePoint库未启用版本控制等。本文结合银

weixin_30568591的博客 348

【学习笔记】python实现excel数据处理

概述 Excel固然功能强大,也有许多函数实现数据处理功能,但是Excel仍需大量人工操作,虽然能嵌入VB脚本宏,但也容易染上宏病毒。python作为解释性语言,在数据处理方面拥有强大的函数库以及第三方库,excel作为主要基础数据源之一,在利用数据进行分析前往往需要预先对数据进行整理。因此,本文就python处理excel数据进行了学习,主要分为python对excel数据处理的常用数据类型以及...

凌bb的笔记本 14万+

短视频直播自动化全攻略:十大场景效率翻倍秘籍

本文系统梳理短视频与直播运营的十大自动化场景,涵盖脚本生成、互动应答、情感分析、人设定位等核心环节。通过模板化流程与智能工具串联,实现内容生产效率提升60%以上,显著降低人力成本。结合Python代码示例,展示从主题输入到脚本/话术自动生成的完整链路,助力创作者聚焦创意与决策,真正实现“让机器跑流程,让人做创造”。

m0_73354873的博客 152

Python最详细的Excel操作方式,你值得拥有!

为什么要学会使用Excel 在机器学习模型的建立中,不得不借助于Excel强大的统计分析能力,这个时候就牵涉到了如何将python直接处理得到的数据存入excel表格当中以及获取表格的数据进行分析,简单的说,学会使用Python操作Excel文件后,可以运用到机器学习之中,也可以让平常生活中繁琐的工作自动化处理。 Excel的基本使用 Python处理Excel的包是openpyxl,如果你...

李元静 14万+

免激活码搭建Python开发环境:PyCharm社区版+Python配置指南

Python作为一种解释型高级编程语言,凭借简洁的语法和强大的第三方库生态,成为数据分析、爬虫开发及自动化脚本的热门选择。而PyCharm社区版作为完全免费的IDE,提供了代码补全、调试和虚拟环境管理等功能,与Python官方解释器结合即可构建稳定合规的开发环境。通过pip包管理器可以快速安装pandas、numpy等数据分析库,再借助PyInstaller工具将脚本打包成exe文件,方便在未安装Python的电脑上运行。掌握环境配置、包管理、虚拟环境隔离及常见报错排查,能显著降低新手入门门槛,并为后续数据

weixin_34212762的博客 526

Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!python操作Excel教程

0.Python Excel库对比 1.Python xlrd 读取 操作Excel 2.Python xlwt 写入 操作Excel 3.Python xlutils 修改 操作Excel 4.Python xlwings 读取 写入 修改 操作Excel 5.Python openpyxl 读取 写入 修改 操作Excel 6.Python xlswriter 写入 操作Excel 7.Python win32com 读取 写入 修改 操作Excel 8.Python pandas 读取 写入 操作Ex

超级大洋葱的博客 5万+

速学!4种Python处理Excel数据的方法!

xlwt模块只能写xls文件,不能写xlsx文件(写xlsx程序不会报错,但最后文件无法直接打开,会报错)。openpyxl模块可实现对excel文件的读、写和修改,只能处理xlsx文件,不能处理xls文件。CSV逗号分隔值文件格式,其以纯文本形式存储表格数据(数字和文本),可以用Excel软件打开。当收到的文件既有xls,又有xlsx时,先转换为统一格式再做统计修改更方便。与xls相比,它可以存储1048576行、16384列数据,存储相同数据,示例1:Python读取Excel文件特定数据。

m0_48891301的博客 1万+

Python 处理 Excel 表格的 14 个常用操作

从读取和写入Excel文件、创建和访问工作表,到单元格数据的读取和写入,再到数据的过滤、排序和汇总统计,这些操作涵盖了数据处理过程中的关键步骤。使用Python处理Excel,不仅能够提高工作效率,还能为数据处理提供更多的灵活性和定制化选项。同时要注意的是,这只是Excel处理中的冰山一角,Python在处理Excel方面还有更多强大的功能和库可供探索,例如xlrd、xlwt、xlsxwriter等。在工作中如果能够根据实际需求灵活运用这些技巧和工具,那么将大大提升数据处理的效率和质量。

这家伙很懒,什么都没有留下 4696

Python操作excel常用模块汇总

功能最全,可以作为以后学习的重点。这些都是网上收集相关信息。其中方式总体来说还是。2022年11月14日。

anlog的专栏 6158

【滚雪球学数学建模】第17.1节· 数据可视化与表达(图表制作(Excel / Python)+ 案例)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 1492

Python+openpyxl:Excel工作表保护与解除的自动化实战

在办公自动化和报表数据处理场景中,Excel 文件的安全管理与权限控制是高频需求。无论是防止他人误改公式,还是批量分发带保护的工作簿,仅靠手动操作效率低下。openpyxl 作为 Python 操作 Excel 的主流库,无需安装 Office 即可实现工作表保护、锁定公式区域、限制编辑权限,也能对已授权文件解除工作表保护。其原理基于 OOXML 结构中的 protection 标记与单元格 locked 状态,通过代码即可精准控制可编辑范围。技术价值在于能无缝嵌入报表生成、数据清洗和模板分发流程,支持多文

weixin_34224941的博客 408

【Linux】常见指令的使用

Linux常用指令

qq_74897518的博客 1479

Excel置信区间实战指南:业务人员也能懂的误差范围计算

置信区间是统计推断的基础概念,用于量化样本估计值的不确定性。其核心原理基于抽样分布与中心极限定理,通过临界值(Z值或t值)乘以标准误,构建包含总体参数的可信范围。这一技术具有关键工程价值:避免将随机波动误判为真实变化,支撑A/B测试、用户调研、运维监控等高风险决策。典型应用场景包括电商转化率分析、APP崩溃率评估、NPS满意度报告及时间序列异常预警。本文聚焦Excel中CONFIDENCE.NORM与CONFIDENCE.T函数的差异辨析、小样本t值校正、标准误显式计算等实操要点,帮助业务人员绕过‘95%概

weixin_30635053的博客 467

双目相机测距原理

普通双目相机具有如下特点:左右两个相机位于同一平面(光轴平行),且相机参数(焦距f)一致。其原理图如下:如图所示,P点为相应的物体位置,CL和CR为左右相机光心位置,PL和PR分别为左相机和右相机拍摄的P点成像结果。f为相机焦距,Z为物体距相机的深度距离,b为左右相机基线距离根据几何关系有:则相应的深度信息计算公式为:(1)其中XL-XR为视差。其余在两侧的情况同样可以用几何关系分析得到该表达式(1),即对于普通双目相机测距可以直接通过公式(1)得到深度结果。

doudou2weiwei的博客 4541

伯德图详解:从传递函数到系统稳定性的频域分析

在自动控制与控制系统设计中,理解系统对不同频率输入信号的响应特性,是分析和设计稳定系统的核心基础。频率响应描述了系统对正弦输入的幅值增益与相位变化规律,而伯德图作为最直观的频域分析工具,通过对数坐标将宽频带特性压缩成一条清晰曲线,让工程师无需复杂计算即可快速评估系统性能。从典型环节的渐近线绘制,到相位裕度、幅值裕度的读取,伯德图贯穿了系统稳定性判断、控制器参数整定及噪声抑制等关键场景。本文结合实际调试经验,系统讲解伯德图的绘制原理与读图方法,帮助读者快速掌握从传递函数到工程应用的核心技能。

weixin_34535286的博客 333

职场人Python高效入门:聚焦自动化办公的实战路径

Python作为通用编程语言,其核心价值在于将重复性办公任务转化为可复用的自动化流程。理解基础语法只是起点,真正提升效率的关键在于掌握pandas数据处理、Excel自动化与邮件推送等高频办公场景的技术原理。这类技术无需深厚算法背景,却能显著降低人工操作错误率、压缩事务处理时间,并支撑BI看板构建、销售日报生成、客服情绪分析等真实业务需求。本文基于三年带教27名转行学员的实战经验,提炼出一条以‘最小闭环—即学即用—稳定交付’为特征的Python学习路径,重点覆盖pandas数据清洗和Excel自动化两大核心

weixin_34408717的博客 451

【RV1126/RV1109学习笔记】#基础篇#(2)基础入门使用

一、调试方式 1、串口调试 2、ADB调试 3、网络调试 二、基础外设使用 音频使用(aplay,arecord,amixer) 三、WIFI连接 四、屏幕背光控制

丨晋丨 1854

毕设精品-基于 Python + 通义千问 API 的多模态数据清洗自动化系统

本文介绍了一个基于Python和通义千问API的多模态数据清洗自动化系统,旨在解决政企数据清洗中的效率低、准确率差和合规风险高等问题。系统融合Python生态的全栈数据处理能力和通义千问大模型的跨模态语义理解能力,提供多格式导入、多模态解析、语义级脏数据识别、交互式清洗和合规化存储的全流程解决方案。核心功能包括10+数据格式的原生解析、语义级脏数据识别、交互式可视化清洗以及国产化数据库适配。实测显示,该系统相比人工清洗效率提升80%以上,准确率达95%,可显著降低政企数据治理的人力成本和合规风险。

程序大全的博客 921

DO-178C详解:机载软件开发、验证与适航标准指南

DO-178C将软件划分为五个等级(A到E),这些等级是基于失效状态对航空器安全的影响而定。

qq_41854911的博客 2847

【ESP32设备通信】-LoRa通信

在本文中,我们将使用 Arduino IDE 将 ESP32 与 LoRa SX1278 (Ra-02) 模块连接起来。 我们将创建一个真实的示例项目,通过 LoRa 无线打开/关闭 LED 进行演示。

视觉与物联智能 1890

自由创新研究探索:青年研究者的50小时实践方法论

在科研与工程实践中,‘自由’与‘创新’并非抽象理念,而是可结构化设计的能力基础——自由体现为时间、资源与失败容错的三重保障机制,创新则需经由问题锚定、可证伪验证与跨场景复用的漏斗筛选。这种以自主性为起点、以知识操作系统为骨架的方法论,正成为高校青年教师、跨界产品经理及高年级本科生突破课题启动难、数据获取难、成果落地难的核心路径。它不依赖先验 expertise,而强调从第一个50小时开始,构建可生长、可协作、可反脆弱的个人研究基座。

unixboy 422

1 硬件工程师笔面试高频知识考点真题及解析——电阻

本文系统介绍了电阻的基础知识、选型要点及各类特殊电阻的应用。主要内容包括:1. 电阻选型需考虑阻值、封装、功率、精度、耐压等参数;2. 高频信号优先选用小封装电阻以减小寄生参数;3. 采样电阻需高精度、低温漂以保证测量准确性;4. 详细解析了上拉/下拉电阻、0欧电阻、磁珠等元件的特性与区别;5. 介绍了压敏电阻、热敏电阻等特殊电阻的工作原理及应用场景;6. 阐述了阻抗匹配的重要性及常见匹配方法。文章为电子工程师提供了全面的电阻选型与应用指南。

XU157303764的博客 2834

编程与数据处理核心:深入理解if与if嵌套的条件分支逻辑

条件分支是编程与数据处理中的基础概念,它通过“如果……那么……”的逻辑判断,控制程序或公式的执行路径。其核心原理在于根据特定条件的真假,选择不同的代码分支或计算结果,这是实现自动化决策和流程控制的技术基石。掌握条件分支对于编写清晰、可维护的代码至关重要,其技术价值在于构建了从简单判断到复杂业务逻辑的思维框架。在应用场景上,无论是Excel中的`SUMIFS`、`IF`函数进行数据筛选与计算,还是Python、JavaScript等编程语言中的流程控制,都深度依赖条件分支。理解`if`和`if嵌套`,正是掌握

weixin_34326558的博客 498

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SenseNova-Skills 大文件 Excel 高性能分析实战:流式读取、Parquet 加速与内存优化完全指南

> 本文以 SenseNova-Skills 仓库中 `sn-da-large-file-analysis` 技能文档为核心骨架,系统讲解面向 10 万行乃至 100 万行以上 Excel 数据集的高性能分析方案:从 openpyxl `read_only` 流式读取、Parquet 格式转换加速、类型降阶内存优化,到分块处理与大文件写出模式。读完本文,你将掌握一套可复制、可直接落地的"大文件 E

gitblog_00258的博客 393

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

电商Agent工程化落地:Skills契约化与三层解耦实践

在大模型应用向生产环境迁移的浪潮中,‘Agent’已从概念演示走向核心业务支撑。然而,真实电商场景要求的不仅是智能对话能力,更是状态一致性、服务可靠性与风控可审计性。本文围绕‘Skills’与‘状态机’两大关键技术要素展开,解析如何通过契约化封装(Schema定义、幂等声明、测试驱动)、确定性状态驱动(DFA控制流、影子验证)及协议适配与熔断(Adapter层安全网关),构建可验证、可回滚、可监控的电商Agent系统。内容覆盖技能设计原则、生产级硬性规范(如temperature=0调用、SLA动态熔断)及

weixin_34259232的博客 466

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 【速选指南】Python处理Excel数据 pandas和openpyxl哪家强?
下一篇: Node.js 是如何取代 PHP 上位的 ?
大虫小呓
博客等级 码龄7年 94粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值