• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

try , except 문 관련 질문 있어요

24.04.18 11:45 작성 조회수 40

0

    doc = pd.read_csv(PATH + filename, encoding='utf-8-sig')  # 1. csv 파일 읽기
    try:
        doc = doc[['Country_Region', 'Confirmed']]  # 2. 특정 컬럼만 선택해서 데이터프레임 만들기
    except:
        doc = doc[['Country/Region', 'Confirmed']]  # 2. 특정 컬럼만 선택해서 데이터프레임 만들기
        doc.columns = ['Country_Region', 'Confirmed']

 

수업 내용 중 위 코드는

  • CSV 파일 갖고 올건데

  • 컬럼 Country_Region, Confirmed 만 갖고 올거고

  • Country/Region 컬럼은 Country_Region 컬럼으로 바꿔줘..

 

라는 의미잖아요?

 

그런데 실무를 하다보면 손으로 입력했을 시

Country-Region 으로도 입력되어 있을 수도

Country.Region 으로도 입력되어 있을 수도 있잖아요?

실수의 형태는 다양할테고요...

 

어쨌든 Country_Region 컬럼이 아니면 Country_Region 컬럼으로 바꿔달라! 라는 명령어를 쓰려면

 

try:

doc = doc[['Country_Region', 'Confirmed' ]]

except :

doc.column = ['Country_Region', 'Confirmed']

 

으로 작성하면 될란지요....

 

 

 

 

 

답변 1

답변을 작성해보세요.

0

안녕하세요. 답변 도우미입니다.

주어진 코드는 pandas 라이브러리를 이용하여 CSV 파일에서 특정 컬럼들만 선택하여 데이터프레임을 만드는 과정을 보여줍니다. 그리고 예외 처리를 통해 만약 'Country_Region'이라는 컬럼이 없을 경우 'Country/Region'이라는 컬럼을 찾아서 그 컬럼의 이름을 'Country_Region'으로 바꾸어주는 로직을 포함하고 있습니다.

하지만 제시하신 실무 상황에서 'Country_Region' 컬럼의 이름이 다양한 방식으로 입력될 수 있기 때문에, 여러 다른 가능성을 고려한 코드를 작성해야 합니다. 예외 처리를 사용해서는 모든 경우의 수를 다룰 수 없습니다. 대신 컬럼 이름에 대한 검사와 변환을 일반화하는 로직을 작성해야 합니다.

예를 들어, 'Country-Region', 'Country.Region' 등과 같은 다양한 변형이 있을 수 있으므로, 다음과 같은 코드를 작성할 수 있습니다:

```python

import pandas as pd

doc = pd.read_csv(PATH + filename, encoding='utf-8-sig') # 1. csv 파일 읽기

# 기대하는 컬럼명

expected_column = 'Country_Region'

# 현재 데이터프레임의 컬럼명을 확인하고, 기대하는 형식으로 변경하기

for col in doc.columns:

if col.replace('-', '_').replace('/', '_').replace('.', '_') == expected_column:

doc.rename(columns={col: expected_column}, inplace=True)

break

try:

doc = doc[[expected_column, 'Confirmed']] # 2. 특정 컬럼만 선택해서 데이터프레임 만들기

except KeyError as e:

print(f"Error: {e}. The expected column is not found in the dataframe.")

```

위 코드는 각 컬럼명에 대해 문자 '-', '/', '.' 을 '_' 로 치환하고 기대하는 컬럼명 'Country_Region'과 일치하는지 확인합니다. 만약 일치한다면 해당 컬럼의 이름을 변경하고, 그 후 원하는 컬럼만 선택합니다.

'KeyError'를 사용하는 예외 처리는 만약 'Country_Region' 컬럼이 존재하지 않을 때 발생할 수 있는 에러를 처리하기 위해 사용됩니다. 실제 실무에서는 데이터에 따라 이러한 변환 로직을 더 추가하거나 조정해야 할 수도 있습니다.

감사합니다.

잔재미코딩 드림

네 감사합니다.