2 분 소요

import numpy as np
import pandas as pd

정형 데이터(Structured Data)

  1. 샘플 데이터프레임을 생성한 후 데이터의 기본 정보를 출력하는 코드를 작성하세요.
# 샘플 데이터
data = {
    '이름': ['김철수', '이영희', '박민수', '최지현', '홍길동'],
    '나이': [25, 30, 35, 28, 40],
    '직업': ['개발자', '마케터', '개발자', '디자이너', 'CEO'],
    '연봉': [4000, 3500, 5000, 4200, 10000],
    '가입일': ['2020-05-21', '2019-07-15', '2021-01-10', '2018-11-03', '2017-09-27']
}
df = pd.DataFrame(data)
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   이름      5 non-null      object
 1   나이      5 non-null      int64 
 2   직업      5 non-null      object
 3   연봉      5 non-null      int64 
 4   가입일     5 non-null      object
dtypes: int64(2), object(3)
memory usage: 332.0+ bytes
  1. 샘플 데이터에서 나이가 30 이상이고 연봉이 5,000 이하인 사람들만 필터링하는 코드를 작성하세요.
# 샘플 데이터
data = {
    '이름': ['김철수', '이영희', '박민수', '최지현', '홍길동', '정지훈', '이지은'],
    '나이': [25, 30, 35, 28, 40, 50, 22],
    '직업': ['개발자', '마케터', '개발자', '디자이너', 'CEO', '디자이너', '마케터'],
    '연봉': [4000, 3500, 5000, 4200, 10000, 4600, 3300],
    '가입일': ['2020-05-21', '2019-07-15', '2021-01-10', '2018-11-03', '2017-09-27', '2016-04-11', '2022-03-19']
}
df = pd.DataFrame(data)
df[(df['나이'] >= 30) & (df['연봉'] <= 5000)]
이름 나이 직업 연봉 가입일
1 이영희 30 마케터 3500 2019-07-15
2 박민수 35 개발자 5000 2021-01-10
5 정지훈 50 디자이너 4600 2016-04-11
  1. 샘플 데이터에서 가입 연도가 2019년 이전인 사람들을 찾아 연봉을 10% 인상 후 전체 평균 연봉을 계산하는 코드를 작성하세요.
# 샘플 데이터
data = {
    '이름': ['김철수', '이영희', '박민수', '최지현', '홍길동', '정지훈', '이지은'],
    '나이': [25, 30, 35, 28, 40, 50, 22],
    '직업': ['개발자', '마케터', '개발자', '디자이너', 'CEO', '디자이너', '마케터'],
    '연봉': [4000, 3500, 5000, 4200, 10000, 4600, 3300],
    '가입일': ['2020-05-21', '2019-07-15', '2021-01-10', '2018-11-03', '2017-09-27', '2016-04-11', '2022-03-19']
}
df = pd.DataFrame(data)
df['가입일'] = pd.to_datetime(df['가입일'])

for i in range(len(df)):
    year = df.loc[i, '가입일'].year
    if year < 2019:
        df.loc[i, '연봉'] *= 1.1

df['연봉'].mean()
5211.428571428572

비정형 데이터(Unstructured Data)

  1. JSON 형식의 데이터를 직접 생성한 후 Pandas 데이터프레임으로 변환하는 코드를 작성하세요.
# 샘플 데이터
data = '''
[
    {"이름": "김철수", "나이": 25, "직업": "개발자", "연봉": 4000},
    {"이름": "이영희", "나이": 30, "직업": "마케터", "연봉": 3500},
    {"이름": "박민수", "나이": 35, "직업": "디자이너", "연봉": 4200}
]
'''
df = pd.read_json(data)
df
<ipython-input-20-c70357d01004>:1: FutureWarning: Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.
  df = pd.read_json(data)
이름 나이 직업 연봉
0 김철수 25 개발자 4000
1 이영희 30 마케터 3500
2 박민수 35 디자이너 4200
  1. 아래 샘플 데이터에서 한글과 공백을 제외한 모든 문자를 제거하고 공백을 하나로 정리하는 코드를 작성하세요
# 샘플 데이터
text = "안녕하세요!!! 저는 AI 모델-입니다. 12345 데이터를   정리해 보겠습니다."
import re

text = re.sub('[^가-힣 ]', '', text)
text = ' '.join(text.split())
text
'안녕하세요 저는 모델입니다 데이터를 정리해 보겠습니다'
  1. 주어진 텍스트 데이터를 문장 단위로 분리한 후 각 문장의 단어 개수를 데이터프레임으로 변환하는 코드를 작성하세요.
# 샘플 데이터
text = "자연어 처리는 재미있다. 파이썬과 pandas를 활용하면 편리하다. 데이터 분석은 흥미롭다."
text = text.split(' ')
df = pd.DataFrame(text, columns=['단어'])
df['단어 개수'] = df['단어'].apply(lambda x: len(x))
df
단어 단어 개수
0 자연어 3
1 처리는 3
2 재미있다. 5
3 파이썬과 4
4 pandas를 7
5 활용하면 4
6 편리하다. 5
7 데이터 3
8 분석은 3
9 흥미롭다. 5