300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 学习Python处理Excel 难度1级别 多表合并 数据透视表 拆分合并单元格并获得一维表

学习Python处理Excel 难度1级别 多表合并 数据透视表 拆分合并单元格并获得一维表

时间:2024-06-01 07:52:40

相关推荐

学习Python处理Excel 难度1级别 多表合并 数据透视表 拆分合并单元格并获得一维表

#本代码要点:多表合并、数据透视表、拆分合并单元格并获得一维表

#主题:各门店合并,计算各店当月回店做服务2次+的客人数量

#EXCEL工作表:存在合并单元格

#备注

import pandas as pd

import os

#多表合并

inputdir=r’C:\Users\HW\Desktop\新建文件夹’

df_empty=pd.DataFrame(columns=[‘开单分店’,‘顾客姓名’,‘手机号’,‘指标值’])

for parents,dirnames,filenames in os.walk(inputdir):

for filename in filenames:

df=pd.read_excel(os.path.join(parents,filename))

df_empty=df_empty.append(df,ignore_index=True)

#数据分组:数据透视表

#备注:数据分组之后会存在合并单元格

df_new=df_empty[‘指标值’].groupby([df_empty[‘开单分店’],df_empty[‘顾客姓名’]]).sum()

#数据拆分:拆分合并单元格

#为了满足数据分析的要求,需要将一列中多行合并单元格拆分成一个个的观测,并且每个观测的值与原来合并的值相等。

import openpyxl

#加载已数据分组的工作表(存在合并单元格)

workbook = openpyxl.load_workbook(r’C:\Users\HW\Desktop\练习.xlsx’)

name_list = workbook.sheetnames

worksheet = workbook[name_list[0]]

合并单元格的位置信息,可迭代对象(单个是一个’openpyxl.worksheet.cell_range.CellRange’对象),print后就是excel坐标信息

m_list = worksheet.merged_cells

cr = []

for m_area in m_list:

#合并单元格的起始行坐标、终止行坐标

r1, r2, c1, c2 = m_area.min_row, m_area.max_row, m_area.min_col, m_area.max_col

#纵向合并单元格的位置信息提取出

if r2 - r1 > 0:

cr.append((r1, r2, c1, c2))

print(‘符合条件%s’ % str(m_area))

#这里注意需要把合并单元格的信息提取出再拆分

for r in cr:

worksheet.unmerge_cells(start_row=r[0], end_row=r[1],

start_column=r[2], end_column=r[3])

for row in range(r[0], r[1]):

worksheet.cell(row=row+1, column=r[3], value=worksheet.cell(r[0], r[3]).value)

#获得一维表

workbook.save(‘data.xlsx’)

file_path=r’C:\Users\HW\Desktop\data.xlsx’

df=pd.read_excel(file_path)

df1=df[(df[‘开单分店’]==‘门店A’)&(df[‘指标值’]>1)]

df1.to_excel(“练习2.xls”)

感谢:/weixin_44788825/article/details/104526131?spm=1001..3001.5506

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。