鱼C论坛

 找回密码
 立即注册
查看: 167|回复: 5

Python处理Excel表格数据

[复制链接]
发表于 2024-3-8 16:26:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Python处理表格文件,第一列字符串,第二三列为数值,
根据第一列的内容分组,相同字符串为同一组,
分组后对表格第二三列对应的数据分组求和,然后输出储存到第四第五列,要和前三列一一对应

感觉很简单,但是不知道怎么搞,描述的不清楚的话我可以再解释

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-8 16:26:41 | 显示全部楼层
没问题,我可以帮你解决这个问题。

首先,你需要安装一个Python库来处理Excel文件。推荐使用openpyxl库。

可以使用以下命令安装openpyxl库:

  1. pip install openpyxl
复制代码


接下来,你需要编写Python代码来实现你的需求。下面是一个示例代码:

  1. import openpyxl

  2. # 打开Excel文件
  3. workbook = openpyxl.load_workbook('your_file.xlsx')

  4. # 选择第一个工作表
  5. worksheet = workbook.active

  6. # 创建字典用于存储每组数据的和
  7. group_sums = {}

  8. # 遍历每一行数据
  9. for row in worksheet.iter_rows(min_row=2, values_only=True):
  10.     # 获取第一列、第二列和第三列的值
  11.     group = row[0]
  12.     value1 = row[1]
  13.     value2 = row[2]

  14.     # 检查当前组是否已经在字典中
  15.     if group in group_sums:
  16.         # 如果组已存在,则将当前行的值加到对应的和上
  17.         group_sums[group][0] += value1
  18.         group_sums[group][1] += value2
  19.     else:
  20.         # 如果组不存在,则创建一个新的键,并将当前行的值初始化为对应的和
  21.         group_sums[group] = [value1, value2]

  22. # 将和写入第四列和第五列
  23. for row in worksheet.iter_rows(min_row=2, values_only=True):
  24.     group = row[0]
  25.     value1 = row[1]
  26.     value2 = row[2]

  27.     # 获取当前组对应的和
  28.     group_sum = group_sums[group]

  29.     # 将和写入第四列和第五列
  30.     worksheet.cell(row=row[3], column=4, value=group_sum[0])
  31.     worksheet.cell(row=row[3], column=5, value=group_sum[1])

  32. # 保存文件
  33. workbook.save('your_output.xlsx')
复制代码


请将代码中的`your_file.xlsx`替换为你的Excel文件的路径。代码假设数据从第二行开始,第一行是标题。

运行代码后,将会生成一个新的Excel文件`your_output.xlsx`,其中第四列和第五列将包含分组求和的结果。

希望这个示例可以帮到你,如果还有其他问题,请随时向我提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2024-3-8 17:20:47 | 显示全部楼层
如果先将表格读取为元组呢,之后可以用什么函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-8 17:21:25 | 显示全部楼层
爱学习的蛋白质 发表于 2024-03-08 17:20
如果先将表格读取为元组呢,之后可以用什么函数


如果你把表格数据读取为元组,可以使用Python内置的collections模块中的defaultdict类来方便地进行分组和求和。以下是一个示例代码:

  1. import openpyxl
  2. from collections import defaultdict

  3. # 打开Excel文件
  4. workbook = openpyxl.load_workbook('your_file.xlsx')

  5. # 选择第一个工作表
  6. worksheet = workbook.active

  7. # 读取表格数据为元组
  8. data = tuple(worksheet.iter_rows(values_only=True))

  9. # 创建字典用于存储每组数据的和
  10. group_sums = defaultdict(lambda: [0, 0])

  11. # 遍历每一行数据
  12. for row in data[1:]:  # 从第二行开始,跳过表头
  13.     group = row[0]
  14.     value1 = row[1]
  15.     value2 = row[2]
  16.    
  17.     # 将当前行的值加到对应的和上
  18.     group_sums[group][0] += value1
  19.     group_sums[group][1] += value2

  20. # 将和写入第四列和第五列
  21. for i, row in enumerate(data, start=1):
  22.     group = row[0]
  23.     worksheet.cell(row=i, column=4, value=group_sums[group][0])
  24.     worksheet.cell(row=i, column=5, value=group_sums[group][1])

  25. # 保存文件
  26. workbook.save('your_output.xlsx')
复制代码


这段代码首先将表格数据读取为元组,然后使用`defaultdict`创建了一个字典`group_sums`,它的默认值是一个包含两个元素的列表,用于存储每组数据的和。接着,代码遍历每一行数据,将相同分组的数值累加到对应的和上。最后,将求和结果写入第四列和第五列。希望这个示例对你有帮助!如果还有其他问题,请随时向我提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-8 17:33:27 | 显示全部楼层
如果先将表格用pnadas.read_excel读取,之后可以用什么函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-8 17:33:50 | 显示全部楼层
爱学习的蛋白质 发表于 2024-03-08 17:33
如果先将表格用pnadas.read_excel读取,之后可以用什 ...


如果你使用`pandas.read_excel`方法将表格读取为DataFrame对象,可以使用pandas提供的强大函数和方法进行分组和求和操作。以下是一个示例代码:import pandas as pd# 使用pandas.read_excel读取表格数据df = pd.read_excel('your_file.xlsx')# 使用groupby函数进行分组,并对分组后的数值列进行求和grouped_df = df.groupby('column_name')['column_name2', 'column_name3'].sum()# 将求和结果添加为新的列df['new_column1'] = df['column_name'].map(grouped_df['column_name2'])df['new_column2'] = df['column_name'].map(grouped_df['column_name3'])# 将处理后的DataFrame保存到新的Excel文件df.to_excel('your_output.xlsx', index=False)这段代码中,首先使用`pandas.read_excel`方法将表格数据读取为DataFrame对象。然后,使用`groupby`函数根据第一列的值对DataFrame进行分组,并对分组后的第二列和第三列进行求和操作得到`grouped_df`。接下来,使用`map`方法将求和结果映射到原DataFrame的新列`new_column1`和`new_column2`中。最后,使用`to_excel`方法将处理后的DataFrame保存成新的Excel文件。请将代码中的`your_file.xlsx`替换为你的Excel文件路径,以及`column_name`、`column_name2`和`column_name3`替换为实际的列名。希望这个示例对你有帮助!如果还有其他问题,请随时向我提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 11:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表