반응형

 

 

안녕하세요

오늘은 판다스를 사용할때 자주하는 실수 20개를 모아봤습니다

 

1. 레이블로 행과 열을 선택할 때 .loc을 사용하지 않는다.

Pandas에서 DataFrame에서 행과 열을 선택할 때 .loc 을 사용하지 않는다면, 행과 열을 선택할 수 없게 됩니다.
.loc은 레이블 기반의 인덱싱을 지원하며, 원하는 행과 열을 레이블로 지정하여 선택할 수 있습니다.

예를들어, DataFrame인 df의 'Name' 열을 선택하려면 다음과 같이 작성해야 합니다.

df.loc[:, 'Name']

대신에 아래와 같이 작성하면, 선택하려는 행과 열을 찾을 수 없어 오류가 발생합니다.

df['Name']

.loc를 사용하지 않고 인덱싱하면 오류가 날 수 있으니 주의해야 합니다.

 

 

2. 인덱스로 행과 열을 선택할 때 .iloc을 사용하지 않는다.

Pandas에서 DataFrame에서 행과 열을 선택할 때 .iloc을 사용하지 않는다면, 행과 열을 선택할 수 없게 됩니다. .iloc은 숫자 기반의 인덱싱을 지원하며, 원하는 행과 열을 숫자로 지정하여 선택할 수 있습니다.

예를들어, DataFrame인 df의 2번째 행을 선택하려면 다음과 같이 작성해야 합니다.

df.iloc[2, :]

대신에 아래와 같이 작성하면, 선택하려는 행과 열을 찾을 수 없어 오류가 발생합니다.

df[2]

.iloc를 사용하지 않고 인덱싱하면 오류가 날 수 있으니 주의해야 합니다.

 

3. DataFrame에서 작업을 수행할 때 축을 지정하지 않는다.

Pandas에서 DataFrame에서 작업을 수행할 때 축을 지정하지 않는다면, 작업의 대상이 되는 축을 정의할 수 없게 됩니다. 예를들어, DataFrame인 df에서 평균을 구하려면 다음과 같이 작성해야 합니다.

df.mean(axis=0)
 

대신에 아래와 같이 작성하면, 축을 정의하지 않아 작업의 대상이 되는 축이 정의되지 않아 오류가 발생합니다.

df.mean()
 
축을 지정하지 않으면 작업이 제대로 수행되지 않을 수 습니다.
 

4. 결과를 DataFrame에 대입하지 않는다.

Pandas에서 DataFrame에서 결과를 대입하지 않는다는 것은 결과를 저장하지 않는다는 것을 의미합니다. 예를 들어, DataFrame인 df에서 특정 컬럼을 제거하려면 다음과 같이 작성해야 합니다.

df = df.drop('column_name', axis=1)
 
대신에 아래와 같이 작성하면 결과를 저장하지 않기 때문에 df에는 아무런 변화가 없습니다.
df.drop('column_name', axis=1)

결과를 저장하지 않으면, 작업 결과를 이용할 수 없어 유용하지 못한 방법이 됩니다.

 

5. 잘못된 자료형을 사용하여 필터링하는 경우

Pandas의 DataFrame에서 필터링을 할 때, 잘못된 자료형을 사용하면 올바른 결과를 얻지 못할 수 있다. 예를 들어, 정수 자료형으로 필터링을 하려면 정수 자료형으로 변환해야 하는데, 그렇지 않은 상태로 필터링을 하면 올바른 결과를 얻지 못할 수 있다.

 

6. 결측값을 처리하지 않는다.

결측값이 있는 데이터를 그대로 사용하면 이후에 수행할 분석 및 계산에 오류가 발생할 수 있으며, 이를 처리하지 않아서 발생할 수 있는 문제를 방지하기 위해 결측값을 적절히 처리하는 것이 중요합니다.

 

7. 기본적인 연산을 수행할 때 groupby()를 사용하지 않는다.

DataFrame에서 특정 열을 기준으로 그룹을 나누어 연산을 수행하는데, 그룹별로 연산을 수행하지 않고 전체 데이터에 대해 연산을 수행할 경우 원하지 않는 결과가 나올 수 있다.

 

8. 중복된 행을 제거하지 않는다.

DataFrame에서 중복된 행을 제거하지 않는다는 것은 같은 데이터가 여러 개 존재하는 행을 그대로 두고 처리하는 것을 의미합니다. 이러한 중복된 데이터는 잘못된 결과를 초래할 수 있기 때문에 제거하는 것이 좋습니다. 중복된 행을 제거하는 방법으로는 DataFrame.drop_duplicates() 함수를 사용하면 됩니다.

 

9. 정렬되지 않은 데이터에서 색인을 선택하는 경우

정렬되지 않은 데이터에서 색인을 선택하는 경우는 결과가 예상하지 못할 수 있다. 정렬되지 않은 데이터에서 색인을 선택하면 해당 색인에 대응하는 값을 찾을 수 없을 수 있고, 잘못된 결과를 얻을 수 있다. 따라서 데이터를 정렬한 후 색인을 선택하는 것이 좋다.

 

10. 잘못된 경로를 사용하여 파일을 읽거나 쓴다.

# 잘못된 경로를 사용하여 파일 읽기
df = pd.read_csv("wrong/path/to/file.csv")

# 잘못된 경로를 사용하여 파일 쓰기
df.to_csv("wrong/path/to/file.csv", index=False)

위와 같이 잘못된 경로를 사용하여 파일을 읽거나 쓸 경우, 파일을 찾을 수 없다는 에러가 발생할 것입니다. 이를 해결하기 위해서는 정확한 경로를 사용해야 합니다.

11. 잘못된 파일 포맷을 사용하여 파일을 읽거나 쓴다.

예를 들어, pandas.read_csv('incorrect_file_format.xlsx')를 사용하여 CSV 파일이 아닌 xlsx 파일을 읽을 경우 오류가 발생할 수 있다. 또는 pandas.to_csv('data.csv', 'incorrect_file_format.xlsx')를 사용하여 CSV 파일이 아닌 xlsx 파일로 저장할 경우 오류가 발생할 수 있다. 이러한 경우에는 정확한 파일 포맷을 사용하여 파일을 읽고 저장해야 한다.

12. 잘못된 인코딩을 사용하여 파일을 읽거나 쓴다.

데이터를 읽거나 쓸 때 잘못된 인코딩을 사용하면, 파일에서 읽어들인 데이터가 제대로 표시되지 않거나 에러가 발생할 수 있다. 이를 피하기 위해서는 인코딩을 정확하게 지정해야 한다. 예를 들어, UTF-8 인코딩으로 저장된 파일을 읽을 때는 아래와 같이 코드를 작성해야 한다.

import pandas as pd
df = pd.read_csv("data.csv", encoding="UTF-8")

또는 파일을 쓸 때도 아래와 같이 코드를 작성해야 한다.

import pandas as pd
df.to_csv("data.csv", encoding="UTF-8")

13. 행이나 열을 삭제할 때 drop() 함수를 사용하지 않는다.

"DataFrame에서 행이나 열을 삭제할 때 drop() 함수를 사용하지 않는다"라는 것은 행이나 열을 삭제할 때 DataFrame의 drop() 함수를 사용하지 않는 것을 의미합니다. 예를 들어, 다음 코드는 DataFrame df에서 "column1" 열을 삭제하는 코드입니다.

df = df.drop("column1", axis=1)

하지만 이 경우 drop() 함수를 사용하지 않고 다른 방법으로 삭제하는 경우를 의미합니다. 예를 들어, 다음 코드는 "column1" 열을 삭제하는 코드입니다.

df = df[df.columns.difference(["column1"])]

14. 새로운 열을 추가할 때 assign() 함수를 사용하지 않는다.

예를들어, DataFrame을 df라고 가정할때, 새로운 열 'new_col'을 추가하고 싶은 경우,

df['new_col'] = 어떤 값

또는

df.loc[:, 'new_col'] = 어떤 값

을 사용하여 새로운 열을 추가하는 것이 아니라,

df = df.assign(new_col=어떤 값)

를 사용하지 않는다면, DataFrame에 새로운 열이 추가되지 않거나, 원본 DataFrame에 영향을 미칠 수 있다.

15. 인덱스를 재설정하지 않는다.

인덱스를 재설정하지 않는 경우, 데이터 프레임에서 열을 선택하거나 행을 선택하는 것이 어렵다. 인덱스를 재설정하는 것은 데이터를 정렬하거나 선택하는데 유용하다.

아래 예제는 데이터 프레임의 인덱스를 재설정하는 방법을 보여준다.

import pandas as pd

# 데이터 프레임 생성
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=[0, 1, 2])

# 인덱스 재설정
df = df.reset_index(drop=True)
print(df)

 

16. 잘못된 인덱스를 사용하여 행을 선택하는 경우

Pandas의 DataFrame에서 행을 선택할 때는 인덱스를 사용합니다. 하지만, 잘못된 인덱스를 사용하면 선택하려는 행이 없거나 여러 행을 선택할 수 있습니다. 이를 방지하려면 인덱스를 정확히 선택하거나, 인덱스가 없는 경우 reset_index()를 사용해 인덱스를 재설정해야 합니다.

 

17. 잘못된 인덱스를 사용하여 열을 선택하는 경우

데이터 프레임에서 열을 선택할 때는 인덱스를 사용하는데, 잘못된 인덱스를 사용하면 에러가 발생할 수 있다. 예를 들어, 아래와 같은 데이터 프레임이 있다고 가정해보자.

import pandas as pd

data = {'name': ['Tom', 'Jerry', 'Mike'],
        'age': [25, 30, 35],
        'gender': ['M', 'M', 'F']}
df = pd.DataFrame(data)

이때 존재하지 않는 열을 선택하려고 하면 에러가 발생한다.

df['height']
KeyError: 'height'

해결방법은 판다스에서 제공하는 .loc[], .iloc[] 메서드를 사용하는 것이다.

.loc[]는 라벨 기반의 인덱싱을 사용하며, 인덱스 라벨을 통해 행을 선택할 수 있다.

import pandas as pd

data = {'name': ['John', 'Mike', 'Sophia', 'Emily'],
        'age': [25, 22, 21, 23],
        'city': ['New York', 'Los Angeles', 'Chicago', 'Houston']}

df = pd.DataFrame(data)

# 인덱스 라벨을 통해 행 선택
print(df.loc[1]) # Mike, 22, Los Angeles

 

 

이러한 오류를 방지하려면  오류의 의미를 이해하는 것이 중요합니다.

긴글 읽어주셔서 감사합니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기