학습 기록

Python 공부 기록 #11 -자동으로 쌓인 Excel 데이터, 제대로 들어왔을까? (pandas 기초)

0. 목차

  • 인트로: 파일은 생겼는데, 내용도 믿을 수 있을까?

    • pandas는 왜 필요한 도구일까?

    • 자동 저장된 Excel 파일 불러오기

    • 수집 건수와 열 이름 확인하기

    • 데이터 형식과 빈칸 확인하기

    • 실무에서는 어디에 쓸 수 있을까?

    • 삽질했던 부분들

    • 아웃트로: 파일 생성 확인에서 데이터 검수로


1. 인트로: 파일은 생겼는데, 내용도 믿을 수 있을까?

지난 글에서는 openpyxl로 크롤링한 데이터를 Excel 파일에 저장하고, 기존 파일에 새 데이터를 이어 붙이는 방법을 공부했습니다.

이제 Windows 작업 스케줄러까지 설정했다면, 정해진 시간에 크롤러가 실행되고 Excel 파일도 알아서 쌓이게 됩니다.

그런데 문득 이런 생각이 들었습니다.

“파일이 만들어졌다고 해서, 데이터도 정상적으로 들어간 걸까?”

파일은 생겼지만 수집 건수가 0건일 수도 있고, 열 이름이 바뀌었을 수도 있습니다. 크롤링 대상 사이트의 구조가 달라지면 필요한 값만 비어 있을 수도 있고요.

처음에는 파일을 직접 열어서 확인하면 된다고 생각했습니다. 하지만 매일 확인해야 한다면, 파일을 열고 행 수를 세는 일도 반복 작업이 됩니다.

이번에는 pandas를 이용해서 자동 저장된 Excel 파일을 불러오고, 데이터가 제대로 쌓였는지 빠르게 확인해 봤습니다.


2. pandas는 왜 필요한 도구일까?

openpyxl은 Excel 파일을 만들고 수정할 때 사용했습니다.

반면 pandas는 Excel 안의 데이터를 표 형태로 읽고, 확인하고, 정리할 때 많이 사용하는 도구입니다.

  • openpyxl: Excel 파일 만들기, 셀 수정하기, 서식 넣기

    • pandas: 표 데이터 읽기, 건수 확인하기, 조건에 맞는 데이터 찾기

pandas로 불러온 표는 DataFrame이라고 부릅니다.

처음에는 이 단어가 어렵게 느껴졌는데, 저는 그냥 **“Python 안으로 가져온 Excel 표”**라고 생각하니 조금 편했습니다.

지난 글에서 만든 Excel 파일을 이번에는 Python 화면 위 작업대에 올려놓고, 제대로 들어왔는지 점검해 보는 느낌입니다.

pandas가 아직 설치되지 않았다면 터미널에서 아래 명령어를 실행합니다.

pip install pandas

저는 이전 글에서 Excel 저장용으로 openpyxl을 이미 설치해 둔 상태였습니다. 처음 Excel 관련 작업을 시작한다면 아래처럼 함께 설치해도 됩니다.

pip install pandas openpyxl


3. 자동 저장된 Excel 파일 불러오기

크롤링 결과 파일 이름이 quotes.xlsx라고 가정해 봤습니다.

Python 파일과 Excel 파일이 같은 폴더에 있다면 아래처럼 불러올 수 있습니다.

import pandas as pd

df = pd.read_excel(“quotes.xlsx”)

print(df.head())

import pandas as pd는 pandas를 불러오는 코드입니다.

뒤의 as pd는 앞으로 pandas 대신 pd라는 짧은 이름을 쓰겠다는 뜻입니다. pandas 예제에서 거의 기본처럼 사용하는 방식이었습니다.

pd.read_excel()은 Excel 파일을 읽는 명령입니다. 불러온 표는 df라는 변수에 담았습니다.

df는 DataFrame의 줄임말로 많이 사용한다고 합니다.

마지막의 df.head()는 데이터 맨 위 5개 행을 보여줍니다.

코드를 실행했을 때 최신 데이터가 보이면, 우선 파일을 제대로 읽어왔다는 뜻입니다.


4. 수집 건수와 열 이름 확인하기

파일을 읽었다면 가장 먼저 확인하고 싶은 건 두 가지였습니다.

  • 데이터가 몇 건인지

    • 필요한 열이 빠지지 않았는지

아래 코드를 추가했습니다.

import pandas as pd

df = pd.read_excel(“quotes.xlsx”)

print(“데이터 건수:”, len(df)) print(“행과 열 개수:”, df.shape) print(“열 이름:”, list(df.columns))

len(df)는 전체 행 수를 알려줍니다.

크롤링 결과가 100건이라면 데이터 건수: 100처럼 출력됩니다.

df.shape는 행과 열의 개수를 함께 보여줍니다.

(100, 3)

위처럼 나온다면 100행, 3열로 된 표라는 뜻입니다.

df.columns는 Excel 파일의 열 이름을 확인할 때 사용합니다. 예를 들어 명언, 작가, 수집일 열이 있어야 한다면, 이 이름들이 제대로 출력되는지 확인하면 됩니다.

파일이 만들어졌는지만 보는 것보다, 데이터 건수와 열 이름까지 확인하니 조금 더 안심이 됐습니다.


5. 데이터 형식과 빈칸 확인하기

데이터는 들어왔는데 숫자가 문자로 저장되거나, 특정 열이 비어 있을 수도 있습니다.

이럴 때는 info()를 사용하면 데이터의 전체 상태를 한 번에 확인할 수 있습니다.

import pandas as pd

df = pd.read_excel(“quotes.xlsx”)

df.info()

실행하면 각 열의 이름, 데이터 개수, 데이터 형식이 출력됩니다.

예를 들어 날짜 열이 날짜 형식으로 읽혔는지, 숫자 열이 숫자로 읽혔는지 확인할 수 있습니다.

빈칸 개수도 간단히 확인할 수 있습니다.

print(df.isna().sum())

이 코드는 열마다 비어 있는 값이 몇 개인지 보여줍니다.

예를 들어 작가 열의 결과가 0이면 빈칸이 없다는 뜻입니다. 반대로 특정 열에 빈칸이 갑자기 많아졌다면, 크롤링 코드나 대상 사이트를 다시 확인해 볼 수 있습니다.

아직 빈칸을 삭제하거나 값을 채우지는 않았습니다. 오늘은 데이터를 고치기보다, 이상이 있는지 찾아보는 데 집중했습니다.


6. 실무에서는 어디에 쓸 수 있을까?

이 방법은 크롤링 결과뿐 아니라, 회사에서 받는 Excel 추출 파일에도 쓸 수 있을 것 같습니다.

  • CRM 추출 파일의 전체 건수 확인하기

    • 필요한 열이 빠지지 않았는지 점검하기

    • 자동 생성된 파일에 데이터가 실제로 담겼는지 확인하기

    • 날짜, 금액, ID 열이 원하는 형식으로 읽혔는지 확인하기

    • 특정 열에 빈칸이 급격히 늘지 않았는지 확인하기

특히 자동으로 실행되는 코드에서는 결과 파일이 생겼다는 사실만으로는 부족할 수 있습니다.

파일 크기는 있어 보이는데 실제 데이터가 0건이면, 다음 작업도 전부 잘못된 상태로 진행될 수 있으니까요.

평소 Excel을 열자마자 행 수와 열 이름부터 확인하던 습관을 Python 코드로 옮긴 셈입니다.


7. 삽질했던 부분들

처음에는 파일이 분명히 있는데도 아래 오류가 났습니다.

FileNotFoundError: No such file or directory

원인은 Python 파일과 Excel 파일이 서로 다른 폴더에 있었기 때문이었습니다.

파일 이름만 적으면 Python은 현재 실행 중인 폴더에서 파일을 찾습니다.

해결 방법은 두 가지였습니다.

  1. Python 파일과 Excel 파일을 같은 폴더에 넣기

  2. Excel 파일의 전체 경로를 작성하기

전체 경로를 작성할 때는 문자열 앞에 r을 붙이면 편했습니다.

df = pd.read_excel(r”C:\PythonStudy\quotes.xlsx”)

Windows 경로에는 “ 기호가 들어가는데, 앞에 r을 붙이면 Python이 경로를 그대로 읽어줍니다.

또 한 가지는 Excel 파일을 열어 둔 상태였습니다. 읽기만 하는 작업은 대체로 가능했지만, 나중에 파일을 다시 저장하거나 수정할 때는 충돌이 날 수 있다고 합니다.

작업 중인 파일은 닫고 실행하는 습관을 들이는 편이 좋겠습니다.


8. 아웃트로: 파일 생성 확인에서 데이터 검수로

오늘은 자동으로 저장된 Excel 파일을 pandas로 불러와서, 데이터 상태를 확인해 봤습니다.

핵심 정리

  1. pd.read_excel()로 Excel 파일 불러오기

  2. df.head()로 최신 데이터 앞부분 확인하기

  3. len(df), df.shape로 수집 건수 확인하기

  4. df.columns로 필요한 열 이름 점검하기

  5. df.info(), df.isna().sum()으로 형식과 빈칸 확인하기

지난 글이 크롤링 결과를 Excel 파일로 저장하는 방법이었다면, 이번 글은 저장된 파일을 검수하는 방법이었습니다.

처음에는 단순히 Excel을 읽어오는 정도로 생각했는데, 자동으로 쌓이는 데이터를 믿고 쓰려면 이 확인 과정도 필요하다는 걸 알게 됐습니다.

다음 포스팅에서는 pandas로 필요한 열과 행만 골라내고, 원하는 순서로 정렬하는 방법을 공부해 보려고 합니다.

Excel에서 필터 버튼을 누르던 작업을 Python 코드로 바꿔볼 생각입니다.