이 장에서는 가장 많이 사용하는 데이터 형태인 ‘데이터 프레임’을 살펴봄. 데이터 프레임을 만들고, 저장하고, 외부에서 생성된 데이터를 불러와 데이터 프레임으로 변환하는 방법을 익혀 보겠음.
04-1 데이터 프레임 이해하기 – 데이터는 어떻게 생겼나?
- 데이터 프레임(data frame)은 데이터를 다룰 때 가장 많이 사용하는 데이터 형태로, 행과 열로 구성된 사각형 모양의 표처럼 생겼음. 어떤 기업에서 연봉에 영향을 미치는 요인을 파악하기 위해 직원을 대상으로 조사했다고 가정해 보겠음. 조사 결과를 다음처럼 표로 정리했음
- 이 표는 열 4개와 행 3개로 구성된 데이터 프레임임. 열은 성별, 연령, 학점, 연봉의 4가지 속성으로 되어 있음. 행은 3개이므로 3명의 정보가 정보를 담고 있음. 이 표는 ‘4개으이 속성에 대한 3명의 자료로 구성된 데이터 프레임’이라고 할 수 있음.
‘열’은 속성이다
- 세로로 나열되는 열은 속성을 나타냄. 열은 컬럼(column) 또는 변수(variable)라고 부름.
- 만약 어떤 데이터에 100가지 속성의 정보가 들어있다면, 그 데이터는 100개의 컬럼 또는 100개의 변수를 가지고 있다고 표현할 수 있음. 누군가 ‘그 데이터는 몇 컬럼까지 있나요?’, ‘변수가 몇 개짜리 데이터인가요?’라고 한다면, 이는 데이터에 몇 가지 속성이 담겨 있는지 묻는 것임.
- 칼럼 = 변수 = 속성
‘행’은 한 사람의 정보다
- 가로로 나열되는 행은 각 사람의 정보를 나타냄. 행은 로(row) 또는 케이스(case)라고 부름
- 만약 어떤 데이터에 30명의 정보가 들어 있다면, 그 데이터는 30개의 로 또는 30개의 케이스를 가지고 있다고 표현할 수 있음. 누군가 ‘그 데이터는 몇 로까지 있나요?’, ‘케이스가 몇 개짜리 데이터인가요?’라고 한다면, 이는 데이터에 몇 명의 정보가 담겨 있는지 묻는 것임.
한 사람의 정보는 가로 한 줄로 나열된다
- 앞의 표를 보면 한 사람의 정보는 가로 한 줄에 나열되어 있음. 첫 번째 행을 보면 이 사람은 26세 남자이고, 졸업 학점이 3.8이며, 연봉은 2,700만 원이라는 것을 알 수 있음.
- 이처럼 한 명의 데이터는 하나의 행으로 구성됨, 만약 어떤 데이터에 한 사람의 100가지 속성에 대한 정보가 담겨 있다면 그 데이터는 100개의 열, 1개의 행으로 표현됨.
- 속성이 수만 개라 해도 하나의 행으로 표현됨.
하나의 단위가 하나의 행이 된다
- 행이 반드시 사람이어야 한다는 건 아님. 무엇이든 하나의 단위가 하나의 행으로 구성될 수 있음.
- 예를 들어 하나의 도시, 하나의 거래 내역, 하나의 웹 사이트 접속 기록도 하나의 행이 될 수 있음.
- 어떤 데이터가 도시 단위로 되어 있고 도시 30개의 정보를 담고 있다면, 이 데이터는 30행으로 구성됨.
데이터가 크다 = 행이 많다 또는 열이 많다
- ‘데이터가 크다’는 말은 행이 많다는 의미일 수도 있고, 열이 많다는 의미일 수 도 있음.
- 데이터를 분석할 때 행이 많은 것과 열이 많은 것 중에 열이 많은 것이 더 중요함.
- 100명의 데이터를 분석하다가 데이터가 늘어나 10만 명의 데이터를 분석하게 됐다면 데이터 분석가는 컴퓨터가 느려지는 문제를 겪게 됨. 이 문제를 해결하는 방법은 성능이 좋은 장비를 구축하는 것임. 메모리와 CPU를 늘려보고, 그래도 힘들다면 분산 처리 시스템을 구축하거나 클라우드 서비스를 이용하면 됨.
- 행이 늘어나더라도 분석 기술 면에서는 별다른 차이가 생기지 않음. 100명의 데이터로 평균을 구하든, 10만 명의 데이터로 평균을 구하든 분석 방법이 같다면 데이터 분석에 들이는 노력은 달라지지 않음
- 데이터 행이 늘어난다면?
- 데이터 열이 늘어난다면?
- 반면 열이 늘어나면 어떤 문제가 발생하는가? 데이터 분석에서는 ‘학점과 연봉의 관계’나 ‘전공에 따른 연봉의 차이’ 등 변수 간의 관계를 다룹니다.
- 열이 많아지면 변수를 조합할 수 있는 경우의 수가 늘어남.
- 예를 들어 학점과 연봉의 관계는 전공에 따라 다른 양상으로 나타날 수 있음. 여기서 출신지, 자격증, 성별, 직업군 등 수십 가지 변수가 추가되면 경우의 수가 기하급수로 늘어남. 변수가 늘어나면 단순한 분석 방법으로는 해결하기 힘들므로 여러 변수의 영향을 동시에 고려하는 복잡한 분석 방법을 활용할 필요성이 생김.
- 최근 머신러닝이 주목받는 이유도 바로 이 때문임.
- 이처럼 변수가 많아지면 적용할 분석 기술이 달라지기 때문에 분석가는 전보다 더 노력을 기울여야 함.
- 따라서 데이터 분석에서는 데이터의 양을 의미하는 행보다 데이터의 다양성을 의미하는 열이 많은 것이 더 중요함.
데이터가 크다
- 행이 많다 → 컴퓨터가 느려짐 → 고사양 장비 구축
- 열이 많다 → 분석 방법의 한계 → 고급 분석 방법
{알아 두면 좋아요!} 빅데이터보다 다양한 데이터가 중요함
- 빅데이터(bigdata)라는 표현이 남용되는 문제를 생각해 볼 필요가 있음. ‘신용카드 결제 내역 1,000만 건을 분석한 결과, 치킨을 가장 많이 사먹는 것으로 나타났다’, ‘전국 10년치 교통사고 빅데이터를 분석한 결과, 서울에서 교통사고가 가장 자주 발생한 것으로 나타났다’ 이런 분석이 과연 의미가 있는가? 다량의 데이터를 단순히 집계하는 식으로 분석하면 너무 당연한 결과를 보여주기 때문에 큰 의미가 없음.
- 데이터 분석의 가치를 어떤 현상이 조건에 따라 달라진다는 사실을 발견할 때 생겨남. 예를 들어, ‘특정 날씨에 어떤 음식이 더 많이 팔린다’는 분석 결과는 식재료가 남거나 모자라지 않도록 주문량을 적절하게 정하는 데 활용할 수 있음. ‘어떤 모양의 도로에서 교통사고가 자주 발생한다’는 분석 결과는 도로 모양을 개선해 교통사고를 줄이는 일을 하는데 도움을 줌.
- 두 예시는 조건과 현상의 관계를 알려주므로 유용하게 활용할 수 있음. 이렇게 분석할 수 있으려면 데이터가 다양한 변수로 구성되어야 함. 데이터가 아무리 많더라도 다양한 변수가 담겨 있지 않으면 변수 간의 관련성을 분석할 수 없으므로 의미있는 정보를 찾아낼 수 없음. ‘빅’ 데이터보다 ‘다양한’ 데이터가 더 중요함
04-2 데이터 프레임 만들기 – 시험 성적 데이터를 만들어 보자
데이터 프레임은 데이터를 직접 입력해서 만들 수도 있고, 외부 데이터를 가져와서 만들 수 도 있음. 먼저 데이터를 입력해 데이터 프레임을 만드는 방법을 알아보겠음.
[Do it! 실습] 데이터 입력해 데이터 프레임 만들기
학생 4명이 영어 시험과 수학 시험을 봤다고 가정하고 다음과 같은 데이터 프레임을 만들어 보겠음
pandas 패키지 로드하기
- 먼저 “pandas”패키지를 로드함. “pandas”는 데이터를 가공할 때 사용하는 패키지임.
import pandas as pd
데이터 프레임 만들기
- 데이터 프레임을 만들 때는 “pandas”의 “DataFrame()”을 이용함. “DataFrame()”에서 “D”와 “F”는 대문자로 입력해야 하니 주의바람. 함수 이름은 소문자로만 되어 있기도 하고 대소문자가 섞여 있기도 함.
- “DataFrame()”은 중괄호(“{}”)를 입력한 다음 변수명, 콜론(“:”), 변수에 넣을 값을 차례로 입력함.
- 변수명은 따옴표를 이용해 문자 형태로 입력하고, 변수에 넣을 값은 “[]”안에 입력함.
df = pd.DataFrame({'name':['김지훈', '이유진', '박동현', '김민지'],
'english' : [90, 80, 60, 70],
'math' : [50, 60, 100, 20]})
df
- 데이터 프레임의 이름을 정할 때, ‘Data Frame’의 약자인 “df”를 이용하면 다른 변수들과 구별하기 쉬움
- 코드가 길어지면 쉼표(,) 뒤에서 <Enter>를 눌러 다음 줄로 넘기면, 코드의 전체 구조가 한눈에 들어와서 코드를 이해하기 쉽고 오류를 찾기 편해짐.
- 출력한 데이터 프레임 왼쪽에 표시된 숫자는 각 행이 몇 번째 순서에 위치하는지 나타낸 인덱스(index)임. 인덱스 번호는 0부터 시작함.
[Do it! 실습] 데이터 프레임으로 분석하기
- 데이터 프레임을 완성했으니 데이터를 분석해 보겠음. “sum()”을 이용해 전체 학생의 영어 점수와 수학 점수 합계를 구하겠음.
특정 변수의 값 추출하기
- 데이터 ㅍ레임에서 특정 변수의 값을 추출하는 방법을 알아보겠음. 데이터 프레임 이름 뒤에 “[]”를 입력한 다음 문자 형태로 변수명을 입력하면 됨. 다음 코드를 실행하면 “df”에서 영어 점수만 추출함.
df['english']
변수의 값으로 합계 구하기
- “df”에서 영어 점수를 추출하는 코드를 “sum()”에 입력하면 영어 점수 합계를 출력함.
sum(df['english'])
# output : 300
- 같은 방식으로 “english”대신 “mash”를 입력해 수학 점수 합계를 구하겠음.
sum(df['math'])
# output : 230
변수의 값으로 평균 구하기
- 이번에는 영어 점수와 수학 점수의 평균을 구해보겠음. 앞에서 구한 합계를 학생 수로 나누면 됨.
sum(df['english']) / 4 # 영어 점수 평균
# output : 75.0
sum(df['math']) / 4 # 수학 점수 평균
# output : 57.5
{혼자서 해보기} 앞에서 익힌 기능을 활용해 분석 문제를 해결해 보세요.
Q1. 다음 표의 내용을 데이터 프레임으로 만들어 출력해 보세요.
df = pd.DataFrame({'제품' : ['사과', '딸기', '수박'],
'가격' : [1800, 1500, 3000],
'판매량': [24, 38, 13]})
df
Q2. 앞에서 만든 데이터 프레임을 이용해 과일의 가격 평균과 판매량을 구해 보세요.
sum(df['가격']) / 3 # 가격 점수 평균
# output : 2100.0
sum(df['판매량']) / 3 # 판매량 점수 평균
# output : 25.0
04-3 외부 데이터 이용하기 – 축적된 시험 성적 데이터를 불러오자!
데이터를 분석할 때는 직접 데이터를 입력하기보다 외부에서 생성된 데이터를 불러와 분석하는 경우가 더 많음. 데이터를 관리할 때 가장 많이 사용하는 엑셀 파일과 CSV 파일을 불러와 데이터 프레임을 만드는 방법과 데이터 프레임을 파일로 저장하는 방법을 알아보겠음.
[Do it! 실습] 패키지 함수 사용하기
- 엑셀 파일을 불러와 데이터 프레임을 만드는 방법을 알아보겠음.
1. 엑셀 파일 살펴보기
- 우선 깃허브에서 실습에 사용할 “excel_exam.xlsx”파일을 다운로드한 뒤 엑셀에서 열기
- 첫 번째 행을 보면 5개의 변수가 있음. 변수는 학생의 “id”(번호), “nclass”(반), 그리고 “math”(수학), “english”(영어), “science”(과학) 세 과목의 시험 점수를 담고 있음. 첫 번째 행에는 변수명이 입력되어 있으니 20명의 정보를 담은 데이터라는 걸 알 수 있음. 이제 이 엑셀 파일을 파이썬에 불러 오겠음
2. 워킹 디렉토리에 엑셀 파일 삽입하기
- 가장 먼저 해야 하는 작업은 현재 사용하고 있는 워킹 디렉터리에 불러올 파일을 삽입하는 것임, “excel_exam.xlsx” 파일을 워킹 디렉터리에 넣어두기.
3. 엑셀 파일 불러오기
- “pandas”의 “read_excel()”을 이용해 엑셀 파일을 불러옴.
- “read_excel()”은 엑셀 파일을 데이터 프레임으로 만드는 기능을 함. 괄호 안에 불러올 엑셀 파일명을 입력하면 됨.
- 파일명을 입력할 때 확장자(“.xlsx”)까지 입력해야 하고, 파일명 앞뒤에 따옴표(“ ' ”)를 붙여야 함.
- 파일명을 입력할 때 항상 앞뒤에 따옴표를 넣어야 하니 주의바람.
- 불러들인 데이터를 출력하면 엑셀에서 봤던 것과 같은 내용을 확인할 수 있음.
# 엑셀 파일을 불러와 df_exam에 할당
df_exam = pd.read_excel('excel_exam.xlsx')
df_exam
(...생략...)
- 워킹 디렉터리가 아닌 다른 폴더에 있는 엑셀 파일을 불러올 때는 슬래시(“/”)를 이용해 파일 경로를 입력하면 됨.
df_exam = pd.read_excel('c:/easy_python/excel_exam.xlsx')
4. 분석하기
- 데이터를 불러왔으니 이제 분석해 보겠음. 영어 점수와 과학 점수의 전체 평균을 구하겠음.
sum(df_exam['english']) / 20
# output : 84.9
sum(df_exam['science']) / 20
# output : 59.45
- 앞에서 평균을 구할 때 “sum()”으로 점수 합계를 구한 다음 학생 수를 직접 입력해 나누었음. 이때 값의 개수를 구하는 “len()”을 이용하면 학생 수를 직접 입력하지 않고도 평균을 구할 수 있음.
- 우선 “len()”이 어떻게 작동하는지 살펴보겠음. “len()”은 값의 개수를 구하는 기능을 함. “len()”에 변수를 입력하면 변수에 들어 있는 값의 개수를 출력하고, 데이터 프레임을 입력하면 행의 개수를 출력함.
# 변수의 값 개수 구하기
x = [1, 2, 3, 4, 5]
x
# output : [1, 2, 3, 4, 5]
len(x)
# output : 5
# 데이터 프레임의 행 개수 구하기
df = pd.DataFrame({'a' : [1, 2, 3],
'b' : [4, 5, 6]})
df
- 이제 “len()”을 활용해 평균 점수를 구해보겠음. 학생 수를 입력하는 대신 “len(df_exam)”을 입력하면 됨
len(df_exam) # df_exam의 행 개수 구하기
# output : 20
# english 합계를 행 개수로 나누기
sum(df_exam['english']) / len(df_exam)
# output : 84.9
# science 합계를 행 개수로 나누기
sum(df_exam['science']) / len(df_exam)
# output : 59.45
엑셀 파일의 첫 번째 행이 변수명이 아니라면?
- 실습에 사용한 엑셀 파일은 첫 번째 행에 변수명이 입력되어 있음. “read_excel()”은 엑셀 파일의 첫 번째 행을 변수명으로 인식해 불러옴.
- 만약 엑셀 파일의 첫 번째 행에 변수명이 없고 바로 데이터가 입력되어 있으면, 첫 번째 행의 데이터가 변수명으로 지정되면서 데이터가 유실되는 문제가 발생함.
- 다음은 첫 번째 행부터 데이터가 시작하는 엑셀 파일을 불러온 경우임. 출력 결과를 보면, 엑셀 파일의 첫 번째 행을 변수명으로 인식해 원본과 달리 7행까지만 있는 문제가 있음.
- 이럴 때 “read_excel()”에 “header = None”을 입력하면 첫 번째 행을 변수명이 아닌 데이터로 인식해 불러오고, 변수명은 0부터 시작하는 숫자로 자동 지정됨.
- “None”의 첫 글자 “N”은 대문자로 입력해야하니 유의바람.
df_exam_noval = pd.read_excel('excel_exam_noval.xlsx', header = None)
df_exam_noval
엑셀 파일에 시트가 여러 개 있다면?
- 엑셀 파일에 시트가 여러 개 있을 때 특정 시트의 데이터만 불러오려면 “sheet_name” 파라미터에 시트 이름을 입력하거나 몇 번째 시트를 불러올지 숫자를 입력하면 됨.
- 예를 들어, 세 번째 시트를 불러오려면 “sheet_name = 2”를 입력하면 됨.
- 파이썬에서는 숫자를 0부터 센다는 점에 유의바람
# Sheet2 시트의 데이터 불러오기
df_exam = pd.read_excel('excel_exam.xlsx', sheet_name = 'Sheet2')
# 세 번째 시트의 데이터 불러오기
df_exam = pd.read_excel('excel_exam.xlsx', sheet_name = 2)
[Do it! 실습] 패키지 함수 사용하기
- CSV 파일은 엑셀뿐 아니라 R, SAS, SPSS 등 데이터를 다루는 대부분의 프로그램에서 읽고 쓸 수 있는 범용 데이터 파일임.
- 확장자명에서도 알 수 있듯이 CSV(comma-separated values)파일은 값이 쉼표로 구분된 형태임.
- 다양한 프로그램에서 지원하고 엑셀 파일보다 용량이 작아서 데이터를 주고받을 때는 CSV 파일을 자주 이용함.
- CSV 파일을 불러와 데이터 프레임을 만드는 방법을 익혀 보겠음
1. 워킹 디렉터리에 CSV 파일 삽입하기
- 깃허브에서 실습에 사용할 “exam.csv” 파일을 다운로드한 뒤 엑셀 파일을 불러올 때와 마찬가지로 워킹 디렉터리에 삽입함.
2. CSV 파일 불러오기
- “pandas”의 “read_csv()”를 이용하면 CSV 파일을 불러올 수 있음. 괄호 안에 불러올 파일명을 입력하면 됨.
df_csv_exam = pd.read_csv('csv_exam.csv')
df_csv_exam
(...생략...)
[Do it! 실습] 데이터 프레임을 CSV 파일로 저장하기
- 데이터 프레임을 CSV 파일로 저장하면 파이썬 외에도 데이터를 다루는 대다수의 프로그램에서 불러올 수 있음.
- 데이터 프레임을 CSV 파일로 저장하는 방법을 알아보겠음.
1. 데이터 프레임 만들기
- 먼저 CSV 파일로 저장할 데이터 프레임을 만듬
df_midterm = pd.DataFrame({'english' : [90, 80, 60, 70],
'math' : [50, 60, 100, 20],
'nclass' : [1, 1, 2, 2]})
df_midterm
2. CSV파일로 저장하기
- 데이터 프레임 이름 뒤에 점을 찍고 “to_csv()”을 입력한 다음 괄호 안에 파일명을 입력함.
- 저장한 파일은 워킹 디렉터리에 만들어짐.
df_midterm.to_csv('output_newdata.csv')
![]() |
![]() |
- “output_newdata.csv”를 엑셀에서 열어보면 첫 번째 열에 인덱스 번호가 들어 있음. 인덱스 번호를 제외하고 저장하려면 “to_csv()”에 “index = False”를 입력하면 됨.
df_midterm.to_csv('output_newdata.csv', index = False)
- 파이썬에는 “True”와 “False”로 구성되는 불리언(boolean)이라는 데이터 타입이 있음. 불리언은 어떤 값이 참인지 거짓인지를 나타내는데, 여기서는 “index = False”의 “False”가 거짓을 의미함.
- ‘인덱스 번호를 저장할 것인가?’라는 질문에 ‘아니다’라는 답을 한 셈임.
- “True”와 “False”의 첫 글자는 반드시 대문자로 입력해야 하니 유의하기.
정리하기
# 1. 데이터 프레임 만들기
df = pd.DataFrame({'name':['김지훈', '이유진', '박동현', '김민지'],
'english' : [90, 80, 60, 70],
'math' : [50, 60, 100, 20]})
# 2. 외부 데이터 이용하기
# 엑셀 파일 불러오기
df_exam = pd.read_excel('excel_exam.xlsx')
# csv 파일 불러오기
df_exam = pd.read_csv('csv_exam.csv')
# csv 파일로 저장하기
df_midterm.to_csv('output_newdata.csv')
[꿀팁 01] 초보자가 자주 하는 실수
코드를 실행했는데 에러가 발생한다면 가장 먼저 아래 절차 중 빠뜨린게 있는지 확인하기
① 패키지를 로드했는가?
② 데이터를 불러왔는가?
③ 변수명과 함수명을 정확하게 입력했는가?
확인했는데도 에러가 발생한다면 아래와 같은 실수를 하지 않았는지 점검해보기.
▶ 완결되지 않은 코드를 실행한 경우
- 완결되지 않은 코드를 실행하면 에러 메시지가 출력됨. 코드 마지막에 “,”혹은 “.” 등의 기호가 입력되어 있거나, 괄호를 닫지 않은 상태로 코드를 실행하지 않았는지 확인해보기
▶ 변수를 만들지 않았는데 변수를 활용하는 코드를 실행한 경우
- 앞에서 변수를 만든 다음 나중에 활용할 때가 있음. 변수를 아직 만들지 않았는데 변수를 활용하는 코드를 실행한 것은 아닌지 확인해보기
▶ 대소문자 구분
- 파이썬은 대소문자를 구분함.
- 대문자를 소문자로 입력하거나 소문자를 대문자로 입력하지 않았는지 확인해보기
▶ 등호 개수
- 함수에 파라미터를 지정할 때는 등호를 1개(“=”) 입력해야 함.
- ‘a는 1이다’처럼 조건을 지정할 때는 등호를 2개(“==”)입력해야함.
- 등호 개수를 맞게 입력했는지 확인해보기
▶ 따옴표
- 여는 따옴표와 닫는 따옴표를 모두 넣었는지, 입력해야 할 곳에 빠트리지 않았는지, 입력하지 않아야 할 곳에 입력하지 않았는지 확인해보기
- 큰따옴표로 열면 큰따옴표로 닫아야 하고, 작은따옴표로 열면 작은따옴표로 닫아야함.
▶ 파일 확장자명
- 데이터를 저장하거나 불러들일 때 확장자명을 정확히 입력했는지 확인해 보기.
- 특히 엑셀 파일은 확장자가 .xlsx와 .xls 두 종류가 있으니 잘 확인해야 함.
▶ 잘못된 줄 바꾸기
- 점(“.”)기호를 이용해 코드를 이어서 작성할 때 가독성을 높이기 위해 “\”를 이용해 줄을 바꿀 수 있음.
- 이때 “\”뒤에서 [Enter]를 눌러 줄을 바꿔야 함.
- “\”앞에서 [Enter] 를 눌러 줄을 바꾸면 에러가 발생함.
▶ “\”뒤에 문자 입력
- 코드의 줄을 바꿀 때 사용하는 “\”뒤에는 어떤 문자도 입력하면 안됨.
- 특히 “\”뒤에는 띄어쓰기를 입력하거나 “#”을 이용해 주석을 입력하면 안됨.
▶ 비슷하게 생긴 문자들
▶ 패키지 업데이트로 문법이 바뀐 경우
- 드문 일이지만, 코드에 이상이 없는데도 에러가 발생한다면 패키지가 업데이트되면서 문법이 바뀌었을 수 있음.
- 이 때는 바뀐 문법에 맞게 코드를 수정하거나 구버전의 패키지를 설치해야 함. 아나콘다 프롬프트에서 “pip list”를 실행하면 설치된 패키지 버전을 확인할 수 있음.
- 패키지를 설치할 때 버전을 지정하려면 “pip install pandas==1.3.4”와 같이 패키지명 뒤에 “==버전”을 입력하면 됨.
- 패키지가 업데이트되어 코드를 수정해야하면 저자의 깃허브에 수정한 코드를 업로드하고 있으니 참고바람.
- githun.com/youngwoos/Doit_Python
[꿀팁 02] 에러 메시지 이해하기
출력 결과에 나타난 에러 메시지를 참고하면 문제가 왜 발생했는지 힌트를 얻을 수 있음.
▶ 에러 메시지와 워닝 메시지
- 코드를 실행했을 때 나타나는 메시지에는 Error와 Warning이 있음.
- Error 메시지는 코드에 오류가 있어서 실행되지 않았을 때 나타남. 이때는 코드가 정상적으로 실행되지 않은 것이므로 오류를 찾아 수정해야함.
- Warning 메시지는 코드가 정상적으로 실행됐지만 어떤 부분을 조심하라는 경고임. 출력 결과에 이상이 없다면 무시하고 넘어가면 됨.
▶ 자주 발생하는 에러 메시지
NameError: name 'abc' is not defined. |
- 명령어를 사용할 수 없을 때 출력되는 에러 메시지임. 다음과 같은 경우 발생함.
- 변수명이나 함수명에 오타가 있을 때
- 변수를 만들지 않았는데 변수를 활용했을 때
- 패키지를 로드하지 않은 상태에서 함수를 실행했을 때
SyntaxError: unmatched ')' |
- “)”의 짝이 되는 기호가 없다는 에러 메시지임.
- 필요하지 않은 곳에 “)”를 입력했거나, 닫힌 괄호를 이미 입력했는데 또 입력했거나, 잘못된 기호를 입력했을 때 발생함.
SyntaxError: unexpected EOF while parsing |
- 문법에 맞지 않는 코드를 입력했을 때 발생함.
FileNotFoundError: [Error 2] No such file or directory: 'abc.csv' |
▶ 에러 메시지로 구글링하기
- 에러 메시지르 이해할 수 없을 때는 구글에서 검색해 보면 도움이 됨.
- 예를 들어 ‘NameError: name 'abc' is not defined’라는 에러 메시지가 출력됐다면 구글에 접속한 다음 에러 메시지 앞에 ‘python’을 붙여서 ‘python NameError: name 'abc' is not defined’로 검색해보기.
- 비슷한 문제를 해결한 사용자들이 올린 글을 찾을 수 있음.
▶ 맥(Mac)에서 오류가 발생한다면
- 운영체제 환경이 차이가 있어서 같은 코드를 실행하더라도 맥에서는 오류가 나타나거나 반대로 윈도우에서만 오류가 나타날 수 있음.
- 맥에서 나타난 오류를 해결하는 방법을 저자의 깃허브에 정리해 두었으니 참고바람.
- githun.com/youngwoos/Doit_Python
'데이터 분석(Data Analysis) > 쉽게 배우는 파이썬 데이터 분석' 카테고리의 다른 글
[둘째마당_본격실습! 데이터 갖고 놀기] 07 데이터 정제 - 빠진 데이터, 이상한 데이터 제거하기 (0) | 2023.12.23 |
---|---|
[둘째마당_본격실습! 데이터 갖고 놀기] 06 자유자재로 데이터 가공하기 (0) | 2023.12.18 |
[둘째마당_본격실습! 데이터 갖고 놀기] 05 데이터 분석 기초! - 데이터파악하기, 다루기 쉽게 수정하기 (0) | 2023.12.17 |
[첫째마당_파이썬이랑 친해지기] 03 데이터 분석에 필요한 연장 챙기기 (0) | 2023.12.15 |
[첫째마당_파이썬이랑 친해지기] 01 안녕, 파이썬? (0) | 2023.12.14 |