当前位置:   article > 正文

python操作excel_先读取整个工作表的数据到一个dataframe中, 然后在python中对数据进行处理,

先读取整个工作表的数据到一个dataframe中, 然后在python中对数据进行处理,

1. 引言

数据处理和自动化办公领域,Python以其简洁的语法和强大的库,成为许多数据科学家和开发者的首选语言。本文将带你一步步学习如何使用Python操作Excel。

2. 环境准备

在开始之前,请确保你的环境中安装了Python和以下库:

  • pandas:用于数据分析和操作。
  • openpyxl:用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件。

安装命令:

pip install pandas openpyxl
  • 1

3. 示例表格介绍

假设我们有一个名为sales_data.xlsx的Excel文件,其中包含以下数据:

序号产品名称销售量单价总金额
1产品A100101000
2产品B50201000

4. 读取Excel文件

在这一节中,我们将通过几个具体的示例来展示如何使用Python读取Excel文件中的数据。

4.1 读取整个工作簿

首先,让我们读取整个Excel文件到一个DataFrame:

import pandas as pd

# 读取Excel文件
df = pd.read_excel('sales_data.xlsx')

# 显示整个DataFrame
print(df)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4.2 读取特定的工作表

如果Excel文件包含多个工作表,我们可以指定读取特定的工作表:

# 读取名为'January'的工作表
df_january = pd.read_excel('sales_data.xlsx', sheet_name='January')

# 显示该工作表的数据
print(df_january)
  • 1
  • 2
  • 3
  • 4
  • 5

4.3 指定列的读取

如果我们只对某些列感兴趣,可以指定列来读取:

# 只读取'产品名称'和'总金额'两列
df_selected_columns = pd.read_excel('sales_data.xlsx', usecols=['产品名称', '总金额'])

# 显示选中列的数据
print(df_selected_columns)
  • 1
  • 2
  • 3
  • 4
  • 5

4.4 跳过行和列

在读取时,我们可能需要跳过文件开头的一些行或列:

# 跳过前两行,只读取'产品名称'和'总金额'列
df_skipped_rows = pd.read_excel('sales_data.xlsx', skiprows=2, usecols=['产品名称', '总金额'])

# 显示跳过行后的数据
print(df_skipped_rows)
  • 1
  • 2
  • 3
  • 4
  • 5

4.5 使用不同的数据类型

Excel文件中的列可能需要被读取为不同的数据类型,例如日期或数值:

# 将'日期'列读取为日期类型
df_date_type = pd.read_excel('sales_data.xlsx', dtype={'日期': 'datetime64'})

# 显示数据,注意日期列的格式
print(df_date_type)
  • 1
  • 2
  • 3
  • 4
  • 5

4.6 处理缺失数据

在读取Excel文件时,可能会遇到缺失数据:

# 读取数据,并将缺失值显示为NaN
df_with_na = pd.read_excel('sales_data.xlsx', na_values=['NA', 'N/A'])

# 显示包含缺失值的数据
print(df_with_na)
  • 1
  • 2
  • 3
  • 4
  • 5

4.7 读取大型Excel文件

对于大型Excel文件,可以使用openpyxl库来逐块读取数据,以节省内存:

from openpyxl import load_workbook

# 加载工作簿
wb = load_workbook('large_sales_data.xlsx')

# 逐块读取数据
for sheet in wb.sheetnames:
    ws = wb[sheet]
    for row in ws.iter_rows(min_row=1, values_only=True):
        print(row)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4.8 读取带有公式的Excel文件

如果Excel文件中包含公式,我们可能需要读取公式的结果:

# 读取Excel文件,并将公式的结果作为数值读取
df_formulas = pd.read_excel('sales_data.xlsx', engine='openpyxl', dtype=object)

# 显示数据,注意公式列的格式
print(df_formulas)
  • 1
  • 2
  • 3
  • 4
  • 5

4.9 保存读取的数据

最后,我们可以将读取的数据保存为新的Excel文件或覆盖原文件:

# 将读取的数据保存为新的Excel文件
df.to_excel('read_sales_data.xlsx', index=False)

# 或者覆盖原文件
df.to_excel('sales_data.xlsx', index=False)
  • 1
  • 2
  • 3
  • 4
  • 5

5. 修改Excel数据

在这一节中,我们将通过几个具体的示例来展示如何使用Python对Excel中的数据进行修改。

5.1 更新单个单元格的值

假设我们需要更新产品B的单价为25:

# 定位产品B并更新单价
df.loc[df['产品名称'] == '产品B', '单价'] = 25

# 显示更新后的数据
print(df)
  • 1
  • 2
  • 3
  • 4
  • 5

5.2 批量更新数据

如果我们需要将所有产品的单价提高10%:

# 计算新的单价并更新
df['单价'] = df['单价'] * 1.1

# 显示更新后的数据
print(df)
  • 1
  • 2
  • 3
  • 4
  • 5

#.3 插入新行

假设我们需要在表格末尾添加一个新的产品:

# 创建新行的数据字典
new_product = {'序号': df['序号'].max() + 1, '产品名称': '产品C', '销售量': 150, '单价': 15, '总金额': 150 * 15}

# 将新行添加到DataFrame中
df = df.append(new_product, ignore_index=True)

# 显示添加新行后的数据
print(df)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5.4 删除行

如果某个产品不再销售,我们需要从表格中删除该行:

# 定位并删除产品B的行
df = df[df['产品名称'] != '产品B']

# 显示删除行后的数据
print(df)
  • 1
  • 2
  • 3
  • 4
  • 5

5.5 计算新列

假设我们需要添加一个新列来显示每个产品的总利润(假设利润率为20%):

# 计算总金额和利润
df['总利润'] = df['总金额'] * 0.2

# 显示添加新列后的数据
print(df)
  • 1
  • 2
  • 3
  • 4
  • 5

5.6 替换数据

如果需要将所有销售量低于50的产品的销售量更新为50:

# 替换销售量
df.loc[df['销售量'] < 50, '销售量'] = 50

# 显示替换后的数据
print(df)
  • 1
  • 2
  • 3
  • 4
  • 5

5.7 使用条件表达式更新数据

假设我们需要将单价高于平均单价的产品的总金额增加10%:

# 计算平均单价
average_price = df['单价'].mean()

# 增加总金额
df.loc[df['单价'] > average_price, '总金额'] = df['总金额'] * 1.1

# 显示更新后的数据
print(df)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5.8 保存修改

最后,将修改后的数据保存回Excel文件:

# 将修改后的DataFrame写入新的Excel文件
df.to_excel('modified_sales_data.xlsx', index=False)
  • 1
  • 2

6. 写入和创建Excel文件

将更新后的数据写入新的Excel文件:

# 写入Excel文件
df.to_excel('updated_sales_data.xlsx', index=False)
  • 1
  • 2

7. 高级操作:数据筛选和排序

筛选销售量大于50的所有产品,并按总金额降序排序:

# 数据筛选和排序
filtered_sorted_df = df[(df['销售量'] > 50)].sort_values(by='总金额', ascending=False)

# 显示筛选和排序后的数据
print(filtered_sorted_df)
  • 1
  • 2
  • 3
  • 4
  • 5

8. 错误处理与最佳实践

在操作Excel文件时,可能会遇到文件不存在、权限问题等错误。使用try-except语句来处理这些异常:

try:
    # 尝试读取Excel文件
    df = pd.read_excel('non_existent_file.xlsx')
except FileNotFoundError:
    print("文件不存在,请检查文件路径。")
  • 1
  • 2
  • 3
  • 4
  • 5

欢迎关注VX公众号:行动圆周率
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/936225
推荐阅读
相关标签
  

闽ICP备14008679号