파이썬 Pandas 데이터 분석
각각의 문제 + 정답 + 상세풀이 + 예시 코드

OX 10문항 + 5지선다형 10문항 · 예시 코드와 출력 결과 포함

OX 1

문제

Pandas의 Series는 1차원 배열 형태의 자료구조이다.

정답

O

상세 풀이

Series는 인덱스를 가지는 1차원 데이터 구조입니다. 한 줄짜리 표 또는 이름표가 붙은 리스트처럼 생각할 수 있습니다.

예시 코드

import pandas as pd

s = pd.Series([80, 90, 100], index=['국어', '영어', '수학'])

print(s)
print(type(s).__name__)

출력 결과

국어     80
영어     90
수학    100
dtype: int64
Series
OX 2

문제

DataFrame에서 특정 열을 선택하면 그 결과는 항상 또 다른 DataFrame이다.

정답

X

상세 풀이

DataFrame에서 한 열만 df["열이름"]으로 선택하면 Series가 반환됩니다. DataFrame으로 유지하려면 df[["열이름"]]처럼 대괄호를 두 번 사용합니다.

예시 코드

import pandas as pd

df = pd.DataFrame({'name':['민수','지민'], 'score':[90,85]})

one_col = df['score']
two_bracket = df[['score']]

print(type(one_col).__name__)
print(type(two_bracket).__name__)

출력 결과

Series
DataFrame
OX 3

문제

.loc는 인덱스의 이름(label)을 사용하여 행을 선택한다.

정답

O

상세 풀이

.loc는 라벨 기반 선택입니다. 반대로 .iloc는 0, 1, 2 같은 정수 위치를 기준으로 선택합니다.

예시 코드

import pandas as pd

df = pd.DataFrame({'score':[95,88]}, index=['철수','영희'])

print(df.loc['철수'])
print(df.iloc[0])

출력 결과

score    95
Name: 철수, dtype: int64
score    95
Name: 철수, dtype: int64
OX 4

문제

df.sort_values(by="age")는 원본 데이터프레임 df를 직접 수정한다.

정답

X

상세 풀이

sort_values()는 기본적으로 정렬된 새 DataFrame을 반환합니다. 원본을 직접 바꾸려면 inplace=True를 사용하거나 결과를 다시 df에 저장해야 합니다.

예시 코드

import pandas as pd

df = pd.DataFrame({'name':['A','B'], 'age':[30,20]})
sorted_df = df.sort_values(by='age')

print(df['age'].tolist())
print(sorted_df['age'].tolist())

출력 결과

[30, 20]
[20, 30]
OX 5

문제

df.dropna()는 결측치(NaN)가 포함된 모든 열(column)을 삭제한다.

정답

X

상세 풀이

dropna()는 기본값으로 결측치가 있는 행(row)을 삭제합니다. 열(column)을 삭제하려면 axis=1을 지정해야 합니다.

예시 코드

import pandas as pd
import numpy as np

df = pd.DataFrame({'A':[1, np.nan], 'B':[3, 4]})

print(df.dropna())

출력 결과

     A  B
0  1.0  3
OX 6

문제

groupby() 메소드는 데이터를 그룹으로 묶고 각 그룹에 대한 집계 함수를 적용하는 데 사용된다.

정답

O

상세 풀이

groupby()는 같은 범주끼리 데이터를 묶은 뒤 평균, 합계, 개수 같은 집계 연산을 할 때 사용합니다.

예시 코드

import pandas as pd

df = pd.DataFrame({
    'class':['A','A','B','B'],
    'score':[80,90,70,100]
})

print(df.groupby('class')['score'].mean())

출력 결과

class
A    85.0
B    85.0
Name: score, dtype: float64
OX 7

문제

pd.read_excel() 함수는 텍스트 파일을 읽어 DataFrame으로 만드는 함수이다.

정답

X

상세 풀이

pd.read_excel()은 엑셀 파일을 읽습니다. CSV 같은 텍스트 파일은 보통 pd.read_csv()를 사용합니다.

예시 코드

import pandas as pd
from io import StringIO

csv_text = 'name,score\n민수,90\n지민,85'
df = pd.read_csv(StringIO(csv_text))

print(df)

출력 결과

  name  score
0   민수     90
1   지민     85
OX 8

문제

두 개의 DataFrame을 합칠 때 사용하는 대표적인 함수는 pd.merge()이다.

정답

O

상세 풀이

pd.merge()는 공통 열을 기준으로 두 DataFrame을 합치는 함수입니다. SQL의 JOIN과 비슷합니다.

예시 코드

import pandas as pd

df1 = pd.DataFrame({'id':[1,2], 'name':['민수','지민']})
df2 = pd.DataFrame({'id':[1,2], 'score':[90,85]})

print(pd.merge(df1, df2, on='id'))

출력 결과

   id name  score
0   1   민수     90
1   2   지민     85
OX 9

문제

데이터프레임의 상위 5개 행을 확인하는 메소드는 .top() 이다.

정답

X

상세 풀이

DataFrame의 앞부분을 확인하는 메서드는 .head()입니다. .top()은 Pandas DataFrame의 기본 메서드가 아닙니다.

예시 코드

import pandas as pd

df = pd.DataFrame({'num':[1,2,3,4,5,6]})

print(df.head())

출력 결과

   num
0    1
1    2
2    3
3    4
4    5
OX 10

문제

df["age"] > 20 과 같은 조건식을 df[...] 안에 넣으면 조건에 맞는 행만 필터링할 수 있다.

정답

O

상세 풀이

이 방식은 불리언 인덱싱입니다. 조건식의 결과가 True인 행만 선택됩니다.

예시 코드

import pandas as pd

df = pd.DataFrame({'name':['A','B','C'], 'age':[18,21,25]})

print(df[df['age'] > 20])

출력 결과

  name  age
1    B   21
2    C   25
5지선다 11

문제

Pandas 라이브러리를 사용할 때, 일반적으로 어떤 별칭(alias)으로 임포트하는가?

정답

import pandas as pd

상세 풀이

Pandas는 관례적으로 pd라는 별칭으로 불러옵니다. 대부분의 예제와 문서가 이 표기를 사용합니다.

예시 코드

import pandas as pd

print(pd.__name__)

출력 결과

pandas
5지선다 12

문제

딕셔너리를 사용하여 DataFrame을 생성하는 올바른 코드는?

정답

pd.DataFrame({key: value})

상세 풀이

pd.DataFrame()에 딕셔너리를 넣으면 딕셔너리의 키는 열 이름이 되고, 값 리스트는 각 열의 데이터가 됩니다.

예시 코드

import pandas as pd

df = pd.DataFrame({
    'name':['민수','지민'],
    'score':[90,85]
})

print(df)

출력 결과

  name  score
0   민수     90
1   지민     85
5지선다 13

문제

DataFrame df의 행과 열의 개수를 확인하는 속성(attribute)은?

정답

df.shape

상세 풀이

df.shape는 (행 개수, 열 개수)를 튜플로 반환합니다. 예를 들어 (3, 2)는 3행 2열을 뜻합니다.

예시 코드

import pandas as pd

df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6]})

print(df.shape)

출력 결과

(3, 2)
5지선다 14

문제

DataFrame df의 0번부터 4번까지의 행을 정수 위치로 선택하는 올바른 방법은?

정답

df.iloc[0:5]

상세 풀이

.iloc는 정수 위치 기반이며 슬라이싱의 끝 번호를 포함하지 않습니다. 0번부터 4번까지 선택하려면 0:5를 사용합니다.

예시 코드

import pandas as pd

df = pd.DataFrame({'num':[10,20,30,40,50,60]})

print(df.iloc[0:5])

출력 결과

   num
0   10
1   20
2   30
3   40
4   50
5지선다 15

문제

결측치를 특정 값(예: 0)으로 채우는 메소드는?

정답

df.fillna(0)

상세 풀이

fillna()는 NaN 값을 지정한 값으로 바꿉니다. 결측치를 삭제하는 dropna()와 구분해야 합니다.

예시 코드

import pandas as pd
import numpy as np

df = pd.DataFrame({'score':[90, np.nan, 80]})

print(df.fillna(0))

출력 결과

   score
0   90.0
1    0.0
2   80.0
5지선다 16

문제

df의 "score" 열의 모든 값에 10을 더하여 새로운 "new_score" 열을 만드는 올바른 코드는?

정답

df["new_score"] = df["score"] + 10

상세 풀이

Pandas는 열 단위 벡터화 연산을 지원하므로, 열 전체에 10을 더해 새 열로 저장할 수 있습니다.

예시 코드

import pandas as pd

df = pd.DataFrame({'score':[70,80,90]})
df['new_score'] = df['score'] + 10

print(df)

출력 결과

   score  new_score
0     70         80
1     80         90
2     90        100
5지선다 17

문제

df의 "department" 열을 기준으로 그룹화하여 각 부서의 평균 "salary"를 계산하는 코드는?

정답

df.groupby("department")["salary"].mean()

상세 풀이

먼저 department로 그룹을 만들고, salary 열을 선택한 뒤 평균 mean()을 계산합니다.

예시 코드

import pandas as pd

df = pd.DataFrame({
    'department':['AI','AI','SW'],
    'salary':[300,500,400]
})

print(df.groupby('department')['salary'].mean())

출력 결과

department
AI    400.0
SW    400.0
Name: salary, dtype: float64
5지선다 18

문제

DataFrame의 기술 통계 정보(평균, 표준편차 등)를 한 번에 보여주는 메소드는?

정답

.describe()

상세 풀이

.describe()는 개수, 평균, 표준편차, 최솟값, 사분위수, 최댓값 같은 요약 통계를 보여줍니다.

예시 코드

import pandas as pd

df = pd.DataFrame({'score':[70,80,90]})

print(df.describe())

출력 결과

       score
count    3.0
mean    80.0
std     10.0
min     70.0
25%     75.0
50%     80.0
75%     85.0
max     90.0
5지선다 19

문제

다음 중 df1과 df2를 key 열 기준으로 합치되, df1의 모든 행을 유지하는 코드는?

정답

pd.merge(df1, df2, on="key", how="left")

상세 풀이

left join은 왼쪽 DataFrame(df1)의 모든 행을 유지하고, 오른쪽 DataFrame(df2)에서 key가 맞는 값을 붙입니다.

예시 코드

import pandas as pd

df1 = pd.DataFrame({'key':[1,2,3], 'name':['A','B','C']})
df2 = pd.DataFrame({'key':[1,2], 'score':[90,80]})

print(pd.merge(df1, df2, on='key', how='left'))

출력 결과

   key name  score
0    1    A   90.0
1    2    B   80.0
2    3    C    NaN
5지선다 20

문제

apply 메소드에 lambda 함수를 사용하는 주된 이유는?

정답

간결한 익명 함수를 즉시 적용하기 위해

상세 풀이

lambda는 이름 없는 짧은 함수를 만들 때 사용합니다. apply와 함께 쓰면 각 값이나 행에 간단한 규칙을 바로 적용할 수 있습니다.

예시 코드

import pandas as pd

df = pd.DataFrame({'score':[70,80,90]})
df['pass'] = df['score'].apply(lambda x: '통과' if x >= 80 else '미통과')

print(df)

출력 결과

   score pass
0     70  미통과
1     80   통과
2     90   통과