상세 컨텐츠

본문 제목

[Pandas] pandas 설치 및 엑셀(excel) 데이터 처리 방법 소개

python/pandas

by 진실의종아울려라 2022. 8. 14. 00:02

본문

이번 글에서는 pandas 설치방법과 excel 데이터 처리 방법을 소개합니다.

 

1. Pandas 설치 및 업데이트
pip install pandas

 

터미널에 pip install pandas를 입력합니다. (Visual Studio Code에서 진행)

install

저의 경우, 이미 pandas가 설치되어 있기 때문에 Requirement already satisfied 라는 문구가 뜨네요.

대신 새로운 버전으로 업데이트가 가능하다고 알려줘서 초록색으로 표기된 명령어를 그대로 복사하여 실행합니다.

python.exe -m pip install --upgrade pip

upgrade

 

2. Excel 데이터 읽어오기

예를 들어 성적.xlsx 라는 파일이 있을 때, pandas를 활용해 데이터를 읽어와보도록 하겠습니다.

성적.xlsx

import pandas as pd

grade = pd.read_excel(r"C:\Users\Lenovo\Desktop\성적.xlsx")

우선, pandas를 import하고, grade 라는 변수에 pd.read_excel("엑셀 경로") 으로 엑셀파일을 데이터프레임(DataFrame) 타입으로 할당합니다.

 

이때, 경로를 쉽게 가져오는 방법은 파일을 클릭한 후에 Shift + F10 을 누르면 아래 사진처럼 경로로 복사할 수 있는 칸이 활성화 되고 A를 누르면 클립보드에 복사됩니다.

 

또 경로를 붙여넣을 때, ① 문자열 앞에 r을 적거나 ② 백슬래시(\)를 하나씩 더 붙여주면 됩니다.

경로 복사: Shift + F10 > A

경로에 변수명을 넣을 때는 f-string 으로 처리할 때가 많으므로 ②로 처리 후 f-string으로 변수를 입력해줍니다.

f"{desktop_path}\\..."

 

읽어온 후, 정상적으로 데이터가 불러와졌는지 테스트 해봅니다.

print(grade.head())
# grade에서 5번째 행까지의 데이터를 출력

   순번    이름 성별     성적
0   1   홍길동  남   80.0
1   2   김철수  남   70.0
2   3   김영희  여  100.0
3   4  강아무개  남   90.0
4   5   박이름  남    NaN

필드 데이터가 비어있는 경우에는 NaN 으로 데이터를 읽어옵니다.

 

import pandas as pd

grade = pd.read_excel(r"C:\Users\Lenovo\Desktop\성적.xlsx", sheet_name="sheet1")
# sheet_name = "열고자 하는 시트명"

※ Excel에 Sheet가 여러 개 있을 때, 특정 Sheet를 읽으려면 위와 같이 sheet_name = "열고자 하는 시트명"을 추가하면 됩니다.

 

3. 데이터 처리

저의 경우, 엑셀의 각 행(ROW) 별로 for문을 돌리면서 추출하고자 하는 조건에 해당하는 값들만 뽑아내는 식으로 데이터 처리를 하는데, 어떻게 필요한 값들을 추출하는지 예시를 보여드리겠습니다.

import pandas as pd

grade = pd.read_excel(r"C:\Users\Lenovo\Desktop\성적.xlsx")

grade_sum = 0

for i in grade.index:
    # grade.index → 0, 1, ... , 4
    if grade.at[i,"성별"] == '남' and str(grade.at[i,"성적"]) != 'nan':
        # 성별이 '남'이고, 성적이 비어있는 셀이 아닌 경우만 성적 합계
        grade_sum += grade.at[i,"성적"]

print(grade_sum)
# 240.0

 

  • grade.index 를 활용하면, [ 0 ~ 마지막 행 인덱스-1 ] 만큼 index를 생성해줍니다.
  • grade.at[index,"엑셀 필드명"] 을 활용하면 해당 index와 엑셀 필드명이 일치하는 값을 가져옵니다.
  • grade.at[index,"엑셀 필드명"] 에서 빈 셀의 값을 읽으면 NaN을 가져오므로 str(grade.at[index,"엑셀 필드명"]) == 'nan' 구문을 활용해서 빈 셀을 제거하면 됩니다.

 

4. 필요한 필드만 추출

grade DataFrame에서 성적이 80 이상인 행들만 추출하여 새로운 DataFrame에 할당하려면, 아래의 방법을 활용하시면 됩니다.

import pandas as pd

grade = pd.read_excel(r"C:\Users\Lenovo\Desktop\성적.xlsx")

new_grade = grade[grade["성적"] >= 80]
# 성적이 80 이상인 행들만 추출

print(new_grade.head())
   
   순번    이름 성별     성적
0   1   홍길동  남   80.0
2   3   김영희  여  100.0
3   4  강아무개  남   90.0

-------------------------------------------------------------

new_grade = new_grade[["이름","성적"]]
# new_grade DataFrame에서 이름/성적 필드만 추출

print(new_grade.head())

     이름     성적
0   홍길동   80.0
2   김영희  100.0
3  강아무개   90.0
  • grade[ grade["조건 필드명"] == 조건 ] 형태로 작성을 하면 DataFrame에서 조건에 해당하는 행들만 추출된 DataFrame이 형성됩니다.
  • new_grade[ ["필드명1","필드명2"] ] 형태로 작성하면 new_grade 에서 필드명1, 필드명2만 추출한 DataFrame을 만듭니다. new_grade에 이것을 다시 할당하면, new_grade에 덮어씌워집니다.

 

5. 처리한 데이터를 Excel 로 저장하기

처리한 데이터를 Excel로 저장하는 방법은 아래와 같습니다.

import pandas as pd

grade = pd.read_excel(r"C:\Users\Lenovo\Desktop\성적.xlsx")

new_grade = grade[grade["성적"] >= 80]
new_grade = new_grade[["이름","성적"]]

new_grade.to_excel(r"C:\Users\Lenovo\Desktop\성적(수정).xlsx")
  • DataFrame에 to_excel("저장 경로 및 파일명") 형태로 작성하면, 해당 경로에 파일명으로 파일이 생성됩니다.

성적(수정).xlsx

초기 index가 A열에 작성된 채로 데이터가 저장됩니다. to_excel로 내보내기 전에 별도 처리하면, A열을 없앨 수도 있습니다.

 

6. 정리하며

Pandas 에는 다양한 함수들이 많아서 더 효율적으로 데이터 처리를 하는 방법들도 많고, 처리된 데이터를 엑셀로 저장할 때도 여러 처리를 할 수 있습니다.

 

(예시) 2개의 엑셀 파일이나 sheet에서 Vlookup 처리하는 방법 등(pd.merge 활용) / 열 너비 조절, 폰트 설정 등

 

여기서는 다루지는 않고, 추후에 기회가 되면 글을 작성해보겠습니다.

 

Pandas 활용 방법을 익히기 좋은 사이트(Pandas 10분 완성)를 추천해드리니 참고해보세요

 

판다스 10분 완성 / 10 Minutes to Pandas

Pandas 10분 완성 역자 주 : 본 자료는 10 Minutes to Pandas (하단 원문 링크 참조)의 한글 번역 자료로, 번역은 데잇걸즈2 프로그램 교육생 모두가 함께 진행하였습니다. 데잇걸즈2는 과학기술정보통신

dataitgirls2.github.io

댓글 영역