In [1]:
from __future__ import division, print_function
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from datetime import datetime as dt
from scipy import stats
In [2]:
%matplotlib inline
아래 모양의 어레이를 생성하기 위해 reshape 함수를 이용한다.
In [3]:
a = np.arange(1, 12, 2)
b = a.reshape(3,2)
b
Out[3]:
추가로 아래 코드를 실행하자.
In [4]:
b[2,1] = 3
.
(2) 위와 같은 현상이 발생하는 이유를 설명하라.
.
(3) 위와 같은 현상을 피하기 위해서는 어떻게 해야 하는지 설명하라.
.
아래 코드로 생성된 어레이를 이용하는 문제이다.
In [5]:
a = np.arange(6) + np.arange(0, 51, 10)[:, np.newaxis]
a
Out[5]:
a 어레이를 이용하여 예를 들어 아래 모양의 어레이를 생성할 수 있다.
In [6]:
a[2::2, :4:2]
Out[6]:
(1) a 어레이에 인덱싱과 슬라이싱을 이용하여 아래 모양의 어레이를 생성하라.
$$\left [ \begin{matrix} 20 & 21 & 22 \\ 40 & 41 & 42 \end{matrix} \right ]$$
.
(2) a 어레이에 인덱싱과 슬라이싱을 이용하여 아래 모양의 어레이를 생성하라.
$$\left [ \begin{matrix} 5 & 15 & 25 & 35 & 45 & 55 \end{matrix} \right ]$$
.
(3) 마스크 인덱싱을 사용하여 아래 결과가 나오도록 하라.
array([ 0, 3, 12, 15, 21, 24, 30, 33, 42, 45, 51, 54])
.
정수 인덱싱을 사용하여 아래 결과가 나오도록 할 수 있다.
array([ 12, 23, 34])
In [7]:
a[(1, 2, 3), (2, 3, 4)]
Out[7]:
(4) 정수 인덱싱을 사용하여 아래 모양의 어레이가 나오도록 하라.
$$\left [ \begin{matrix} 30 & 32 & 35 \\ 50 & 52 & 55 \end{matrix} \right ]$$
.
오늘 사용할 데이터는 다음과 같다.
아래 그림은 미국의 주별 담배(식물) 판매 데이터를 담은 Weed_Price.csv 파일를 엑셀로 읽었을 때의 일부를 보여준다. 실제 데이터량은 22899개이며, 아래 그림에는 5개의 데이터만을 보여주고 있다.
|
(1) 아래 코드를 설명하라.
In [8]:
prices_pd = pd.read_csv("data/Weed_Price.csv", parse_dates=[-1])
(2) 아래 코드를 설명하라.
In [10]:
prices_pd.sort_values(['State', 'date'], inplace=True)
(3) 아래 코드를 설명하라.
In [11]:
prices_pd.fillna(method='ffill', inplace=True)
(4) 아래 코드를 설명하라.
In [12]:
california_pd = prices_pd[prices_pd.State == "California"].copy(True)
(5) 아래 코드를 설명하라.
In [13]:
ca_sum = california_pd['HighQ'].sum()
ca_count = california_pd['HighQ'].count()
ca_sum / ca_count
Out[13]:
(6) 아래 코드를 설명하라.
In [19]:
def getYear(x):
return x.year
year_col = prices_pd.date.apply(getYear)
prices_pd["year"] = year_col
(7) 아래 코드를 설명하라.
In [21]:
prices_pd[(prices_pd.State=="California") & (prices_pd.year==2014)]
Out[21]: