2 분 소요

import numpy as np
import pandas as pd

1. NumPy 배열 생산 및 연산

  • NumPy를 사용해 3x3 정수배열(1부터 9까지)과 2x5 실수 배열(0~1 사이 난수)을 생성하세요. 생성한 배열을 계산하고 두 배열을 곱한 결과를 출력하세요.
  • 배열의 형태를 유지하지 않아도 괜찮습니다.
arr1 = np.arange(1, 10).reshape(3,3)
arr2 = np.random.rand(2, 5)

print(arr1, '\n')
print(arr2, '\n')
[[1 2 3]
 [4 5 6]
 [7 8 9]] 

[[0.53275297 0.46079039 0.63862169 0.63236122 0.98163941]
 [0.86210443 0.97569107 0.99936253 0.01560557 0.53833269]] 

Solution

  1. 행렬 내적
    • 행렬 내적을 위해 arr2을 3x4 혹은 4x3으로 만들어 준 다음 내적을 하는 방법을 택한다.
  2. 요소별 곱
    • 요소별 곱을 하기 위해 arr1, arr2를 flatten한 다음 arr1에 요소를 하나 추가해 곱한다.
arr2_c = arr2.copy()
arr2_c.resize(3, 4)
print(arr2_c)

print(np.dot(arr1, arr2_c))
[[0.53275297 0.46079039 0.63862169 0.63236122]
 [0.98163941 0.86210443 0.97569107 0.99936253]
 [0.01560557 0.53833269 0.         0.        ]]
[[ 2.54284851  3.79999731  2.59000382  2.63108628]
 [ 7.13284237  9.38367984  7.43294209  7.52625754]
 [11.72283624 14.96736237 12.27588036 12.42142879]]
arr1_c = arr1.flatten().copy()
arr1_c = np.append(arr1_c, 10)
print(arr1_c)

print(np.multiply(arr1_c, arr2.flatten()))
[ 1  2  3  4  5  6  7  8  9 10]
[0.53275297 0.92158079 1.91586507 2.52944489 4.90819703 5.17262655
 6.82983746 7.99490023 0.14045017 5.3833269 ]

2. Pandas를 활용한 데이터처리

  • 아래 데이터를 DataFrame으로 생성하세요.
    Name: [Alice, Bob, None, Charlie]
    Age: [25, None, 29, 35]
    City: [New york, None, Chicago, None]
    
  • 누락된 이름은 “Unknown”으로 나이는 평균 나이로 채우고 수정된 DataFrame을 출력하세요.
df = pd.DataFrame({
    'Name': ['Alice', 'Bob', None, 'Charlie'],
    'Age': [25, None, 29, 35],
    'City': ['New york', None, 'Chicago', None]
})
df['Name'] = df['Name'].fillna('Unknown')
df['Age'] = df['Age'].fillna(df['Age'].mean())
df
Name Age City
0 Alice 25.000000 New york
1 Bob 29.666667 None
2 Unknown 29.000000 Chicago
3 Charlie 35.000000 None

3. HTTP 통신을 활용한 데이터 읽기 및 저장

  • 해당 링크에서 JSON 데이터를 가져오세요.
  • 데이터를 파일로 저장한 뒤, “title”키의 값을 출력하세요.
df = pd.read_json('https://jsonplaceholder.typicode.com/todos')
df
userId id title completed
0 1 1 delectus aut autem False
1 1 2 quis ut nam facilis et officia qui False
2 1 3 fugiat veniam minus False
3 1 4 et porro tempora True
4 1 5 laboriosam mollitia et enim quasi adipisci qui... False
... ... ... ... ...
195 10 196 consequuntur aut ut fugit similique True
196 10 197 dignissimos quo nobis earum saepe True
197 10 198 quis eius est sint explicabo True
198 10 199 numquam repellendus a magnam True
199 10 200 ipsam aperiam voluptates qui False

200 rows × 4 columns

df.to_json('assign.json')
df['title']
title
0 delectus aut autem
1 quis ut nam facilis et officia qui
2 fugiat veniam minus
3 et porro tempora
4 laboriosam mollitia et enim quasi adipisci qui...
... ...
195 consequuntur aut ut fugit similique
196 dignissimos quo nobis earum saepe
197 quis eius est sint explicabo
198 numquam repellendus a magnam
199 ipsam aperiam voluptates qui

200 rows × 1 columns