◀ 왼쪽에 있는 엑셀표는 임시로 만든 예시이다. 프로젝트를 진행하기 위해 왼쪽 엑셀처럼 정리된 데이터를 받았기 때문에 어떤 식으로 데이터를 가공하고 전처리하면 좋을 지 팀원들에 의견을 나누며 고민했다.
대학교 칼럼을 기본키로 정해 첫번째 셀 값에 해당하는 행들을 컬럼별로 한쪽로 정리하는 방향으로 진행하기로 했다.
(예) {'대학교': 공대, '전공': 전자공학, 컴퓨터공학, 건축공학, 건축공학, '인원': 50, 34, 15}
1. 파이썬에 엑셀 파일을 불러오기
import pandas as pd
xlsx_name = 'C:\\Users\\...\\ooo.xlsx' # 엑셀 파일 예시
data = pd.read_excel(xlsx_name) # 판다스에서 excel 파일 읽어오기
data.columns = ['college', 'major', 'personnel'] # column명 지정
data
2. 데이터 프레임을 딕셔너리로 변경
키와 값을 분류하기 위해 딕셔너리로 변경한다.
data.to_dict('records')
.to_dict('records') : 각 행을 사전형으로 변환한다는 의미
3. 첫번째 컬럼을 키로 사용하여 저장하고 NaN인 경우 이전 키에 저장, NaN이 아니면 새로운 키 생성
result_dict = {} # 'college'를 키로 사용하여 결과를 저장할 딕셔너리 생성
# 데이터를 순회하면서 딕셔너리 생성
for _, row in data.iterrows():
college = row['college']
# 오류 발생으로 인해 문자열로 변환하여 통일
major = str(row['major'])
personnel = str(row['personnel'])
# 'college' 값이 NaN이 아닌 경우
if not pd.isna(college):
# 새로운 딕셔너리 생성하고 딕셔너리에 추가
result_dict[college] = {'college' : college, 'major' : major, 'personnel' : personnel}
# NaN인 경우
else:
# result_dict가 데이터가 있는 경우
if result_dict:
# result_dict의 키인 'college'을 리스트로 반환하고 그 리스트에서 마지막에 해당하는 요소 저장
prev_college = list(result_dict.keys())[-1]
# 'college'값 prev_college데 해당하는 딕셔너리의 'major' 키에 ,와 'major' 추가
result_dict[prev_college]['major'] += ', ' + major
result_dict[prev_college]['personnel'] += ', '+ personnel
#딕셔너리 값을 리스트로 변환하여 최종 결과 얻음
result_list = list(result_dict.values())
print(result_list)
iterrows() : 데이터프레임의 각 행의 정보를 담는 객체(데이터프레임의 행 반복)
4. 다시 데이터프레임으로 변경
data_result = pd.DataFrame(result_list)
data_result
5. 엑셀 파일로 저장
data_result.to_excel('re_college.xlsx')
'Project > 23.07~08 AI' 카테고리의 다른 글
정규 표현식을 사용해 정리되지 않은 데이터 정리 (0) | 2023.08.01 |
---|---|
파이썬 OPEN API 가져오기 (0) | 2023.08.01 |
머신러닝_5. 단순회귀분석_규제 (0) | 2023.07.11 |
머신러닝_4. 모델링 (0) | 2023.07.11 |
머신러닝_3. 데이터 분리 (0) | 2023.07.11 |