작성
·
135
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' 컬럼이 존재하지 않을 때 발생할 수 있는 에러를 처리하기 위해 사용됩니다. 실제 실무에서는 데이터에 따라 이러한 변환 로직을 더 추가하거나 조정해야 할 수도 있습니다.
감사합니다.
잔재미코딩 드림
네 감사합니다.