python Pandas를 사용하여 Excel 대량 분할 및 Excel 병합

1. 실례 프레젠테이션


1. 큰 엑셀 하나를 여러 엑셀로 분리
2. 여러 개의 작은 Excel을 하나의 큰 Excel로 결합하고 소스를 표시합니다.

work_dir="./course_datas/c15_excel_split_merge"
splits_dir=f"{work_dir}/splits"

import os
if not os.path.exists(splits_dir):
    os.mkdir(splits_dir)

둘째, Pandas에서 소스 Excel 읽기


import pandas as pd
No output

df_source = pd.read_excel(f"{work_dir}/crazyant_blog_articles_source.xlsx")
No output

df_source.head()

id	title	tags
0	2585	Tensorflow 	python,tensorflow, 
1	2583	Pandas concat	pandas,python, 
2	2574	Pandas Index ?	pandas,python, 
3	2564	 	python, 
4	2561	 	 

df_source.index

RangeIndex(start=0, stop=258, step=1)

df_source.shape
(258, 3)

total_row_count = df_source.shape[0]
total_row_count
258

3. 하나의 큰 Excel 등분을 여러 개의 Excel로 분해


1. df를 사용한다.iloc 방법, 큰 데이터 프레임을 여러 개의 작은 데이터 프레임으로 나누기
2. 데이터 프레임을 사용합니다.to_excel 각 작은 Excel 저장
1. 분할된 각 excel의 줄 수 계산

#  excel, 
user_names = ["xiao_shuai", "xiao_wang", "xiao_ming", "xiao_lei", "xiao_bo", "xiao_hong"]
No output

#  
split_size = total_row_count // len(user_names)
if total_row_count % len(user_names) != 0:
    split_size += 1

split_size
43
2. 여러 개의 데이터 프레임으로 분할

df_subs = []
for idx, user_name in enumerate(user_names):
    # iloc 
    begin = idx*split_size
    # iloc 
    end = begin+split_size
    #  df iloc 
    df_sub = df_source.iloc[begin:end]
    #  df 
    df_subs.append((idx, user_name, df_sub))
No output
3. 모든 데이터fame를 excel에 저장

for idx, user_name, df_sub in df_subs:
    file_name = f"{splits_dir}/crazyant_blog_articles_{idx}_{user_name}.xlsx"
    df_sub.to_excel(file_name, index=False)
No output

4. 여러 개의 작은 Excel을 하나의 큰 Excel로 결합


1. 병합할 Excel 파일 목록을 보려면 폴더를 반복합니다.
2. 각각 데이터 프레임에 읽고 df마다 표시된 원본에 열을 추가합니다
3. pd를 사용한다.concat df 대량 합병 진행
4. 통합된 데이터 프레임을 excel로 출력하기
1. 병합할 Excel 이름 목록을 보려면 폴더를 반복합니다.

import os
excel_names = []
for excel_name in os.listdir(splits_dir):
    excel_names.append(excel_name)
excel_names
['crazyant_blog_articles_0_xiao_shuai.xlsx',
 'crazyant_blog_articles_1_xiao_wang.xlsx',
 'crazyant_blog_articles_2_xiao_ming.xlsx',
 'crazyant_blog_articles_3_xiao_lei.xlsx',
 'crazyant_blog_articles_4_xiao_bo.xlsx',
 'crazyant_blog_articles_5_xiao_hong.xlsx']
2. 데이터 프레임에 각각 읽기
df_list = []

for excel_name in excel_names:
    #  excel df
    excel_path = f"{splits_dir}/{excel_name}"
    df_split = pd.read_excel(excel_path)
    #  username
    username = excel_name.replace("crazyant_blog_articles_", "").replace(".xlsx", "")[2:]
    print(excel_name, username)
    #  df 1 , 
    df_split["username"] = username
    
    df_list.append(df_split)
crazyant_blog_articles_0_xiao_shuai.xlsx xiao_shuai
crazyant_blog_articles_1_xiao_wang.xlsx xiao_wang
crazyant_blog_articles_2_xiao_ming.xlsx xiao_ming
crazyant_blog_articles_3_xiao_lei.xlsx xiao_lei
crazyant_blog_articles_4_xiao_bo.xlsx xiao_bo
crazyant_blog_articles_5_xiao_hong.xlsx xiao_hong
3. pd를 사용한다.concat 병합

df_merged = pd.concat(df_list)
No output

df_merged.shape
(258, 4)

df_merged.head()
id title tags username
0 2585 Tensorflow 변장 목록 특징 python,tensorflow, 특징 공정xiao_shuai
1 2583 Pandas 데이터의 통합을 실현하는 concat pandas,python, 데이터 분석xiao_shuai
2 2574 Pandas의 Index 색인은 어떤 용도로 사용됩니까?pandas,python, 데이터 분석xiao_shuai
3 2564 머신러닝 상용 데이터 세트 대전체python, 머신러닝xiao_shuai
4 2561 데이터 과학자의 수련 경로 데이터 분석xiao_shuai

df_merged["username"].value_counts()
xiao_hong     43
xiao_bo       43
xiao_shuai    43
xiao_lei      43
xiao_wang     43
xiao_ming     43
Name: username, dtype: int64
xiao_hong     43xiao_bo       43xiao_shuai    43xiao_lei      43xiao_wang     43xiao_ming     43Name: username, dtype: int64
4. 통합된 데이터 프레임을 excel로 출력하기

df_merged.to_excel(f"{work_dir}/crazyant_blog_articles_merged.xlsx", index=False)
이는python Pandas를 이용하여 Excel과 Excel을 대량으로 분할하는 것에 관한 글을 소개합니다. 더 많은 관련 Pandas Excel과 Excel을 대량으로 분할하는 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기