실습

각주는 문제, 코드는 예시 답변.

CSV 파일을 열 때 내용이 깨지는 경우가 몇 번 있어서 txt 파일도 첨부했어요…

# 각 줄마다 이름, 성, 생일년도 가 적힌 csv 파일이 있다. 이 파일을 읽어 chart라는 데이터프레임을 만들어라
chart = pd.read_csv("인적사항.csv")
print(chart)

# "생일년도" 열에 비어있는 값이 있다. chart와 동일하지만 비어있는 값이 1980.0로 채워진 fullChart 데이터프레임을 만들고 출력하라
fullChart = chart.fillna(1980.0)
print(fullChart)

# fullChart의 "생일년도" 열에 저장된 고유값들을 출력하라
print(fullChart["생일년도"].unique())

# apply() 함수를 이용하여 fullChart의 "생일년도" 자료형을 정수로 바꾼 뒤, 출력하라
fullChart["생일년도"] = fullChart["생일년도"].apply(int)
print(fullChart)

# applymap()을 이용하여 fullChart 각 열에 저장된 정보의 자료형이 무엇인지 알려주는 데이터프레임 chartDataType을 만들고 다음처럼 출력하라 
#               이름             성별             생일년도
# 0  <class 'str'>  <class 'str'>  <class 'int'>
chartDataType = fullChart[:1].applymap(lambda x : type(x))
print(chartDataType)

# map() 함수를 이용하여 fullChart의 "성별" 열에 man을 "남", woman을 "여"로 바꾼 뒤 출력하라
fullChart["성별"] = fullChart["성별"].map({"man": "남", "woman":"여"})
print(fullChart)

# fullChart에서 남, 여가 각각 몇 명 있는지 출력하여라
print(fullChart['성별'].value_counts())

인적사항.csv

인적사항.txt

이론

  1. 다음과 같이 코드를 실행 했을 때 ‘major’ column 에 해당하는 값이 0 ~ 3 사이의 숫자로 변환된다.
import pandas as pd

student_list = [{'name': 'John', 'major': "Computer Science", 'sex': "male"},
                {'name': 'Nate', 'major': "Computer Science", 'sex': "male"},
                {'name': 'Abraham', 'major': "Physics", 'sex': "male"},
                {'name': 'Brian', 'major': "Psychology", 'sex': "male"},
                {'name': 'Janny', 'major': "Economics", 'sex': "female"},
                {'name': 'Yuna', 'major': "Economics", 'sex': "female"},
                {'name': 'Jeniffer', 'major': "Computer Science", 'sex': "female"},
                {'name': 'Edward', 'major': "Computer Science", 'sex': "male"},
                {'name': 'Zara', 'major': "Psychology", 'sex': "female"},
                {'name': 'Wendy', 'major': "Economics", 'sex': "female"},
                {'name': 'Sera', 'major': "Psychology", 'sex': "female"}]

df = pd.DataFrame(student_list)

major_group = df.groupby('major')

major_dict = {}
num = 0

for name, group in major_group:
  major_dict[name] = num
  num += 1

df['major'] = df['major'].map(major_dict)
  1. 데이터프레임 df가 있다고 하자. df.drop_duplicates()는 df의 첫번째 열의 값이 중복이 되는 행을 삭제한 새로운 데이터프레임을 반환한다. (x)
  2. 데이터프레임을 df변수에 저장했을 때, df['name']과 df.name은 같은 역할을 할 수 있다. (O)
  3. 데이터프레임을 df변수에 저장했을 때, df[2:6]로 슬라이싱하면 df자체가 슬라이싱 된 자료로 바뀐다. (X)