실습 1 (3조)

import pandas as pd

# csv파일을 읽고 데이터 프레임 생성
df = pd.read_csv("./경제활동인구.csv", encoding='cp949')

# 데이터 프레임에 '지역':'중랑구', '취업자':207, '실업자':7, '비경제활동인구':131 추가
n = {'지역':['중랑구'], '취업자':[207], '실업자':[7], '비경제활동인구':[131]}
newLine = pd.DataFrame(n)
df = pd.concat([df,newLine],ignore_index=True)
****
# 새로운 column 생성
df["경제활동인구"] = df["취업자"] + df["실업자"]
df["15세 이상 인구"] = df["경제활동인구"] + df["비경제활동인구"]
df["경제활동참가율"]= (df["경제활동인구"] / df["15세 이상 인구"]) * 100

# '15세 이상 인구', '경제활동인구', '취업자', '실업자', '비경제활동인구', '경제활동참가율(%)' 순으로 출력
toPrint = ['15세 이상 인구', '경제활동인구', '취업자', '실업자', '비경제활동인구', '경제활동참가율']

for x in toPrint:
    print(df[x])

# 경제활동참가율(%)이 60이상인 항목만 저장 후 출력(df만 사용)import pandas as pd
print(df[df["경제활동참가율"] >= 60])

이론 1 (3조)

다음 문장을 읽고 옳은지 틀린지 O,X로 표시한 후, 틀린 문장은 알맞게 고치시오.
1. 각 행과 열의 "index 값"으로 인덱싱 할 때는 df.loc[]을 사용한다.
2. 열방향 인덱스와 행방향 인덱스는 각각 columns, index 속성으로 접근한다.
3. df.drop(['jhon']) df.head()를 쓰면 df자료의 원본데이터에는 jhon값이 삭제되어 보인다.
4. 데이터가 ‘\\t’로 구분되어 있을 때, df=pd.read_csv('data/file_name.txt',delimiter = Tab)로 불러온다
5. 두 자료의 열을 합칠때는 df.concat('이름', axis = 0)이다.

1. x df.loc[] 대신 df.iloc[]을 사용한다
2. o
3. x drop() 함수는 기본적으로 inplace=False로 되어있어 위 코드처럼 drop()함수를 불러오면 원본 데이터에 변화를 주지않는다.
4. x df=pd.read_csv('data/file_name.txt', delimiter="\\t")로 불러온다
5. x df.concat([이름1, 이름2], axis = 1)

실습 2 (4조)

import pandas as pd
import re

stations = [
                ["Children's Grand Park", 7, False],
                ["Achasan", 5, False],
                ["Seongsu", 2, True],
                ["Gangdong-gu Office", 8, False],
                ["Yeongdeungpo", 1, True]
            ]

# 역명, 지나가는 노선, 지상 역사가 있는지 없는지에 대한 여부
column_names = ['name', 'line', 'overground']

# 문제 1. stations과 column_names를 이용하여 DataFrame을 만들어 주세요. (1점)
# insert code here
df = pd.DataFrame(stations, columns=column_names)
print(df)
# 문제 2. 'overground' 컬럼의 데이터만 출력해 주세요. (4점)
# insert code here
print(df.overground)

# 문제 3. 정규표현식을 사용하여 컬럼 이름이 'e'로 끝나는 컬럼만 출력해 주세요. (5점)
# insert code here
for x in df:
  result = re.findall("e$", x)
  if result:
    print(x)

# 문제 4. 다음과 같이 성수(Seongsu)역에 해당하는 데이터만 'name'을 이용하여 출력해 주세요. (5점)
# insert code here
print(df[df.name=="Seongsu"])

# 문제 5. 5, 7, 8호선 역에 해당하는 데이터만 부등호를 이용하여 출력해 주세요. (5점)
# insert code here
print(df[(df.line >= 5) & (df.line <= 8)])

# 문제 6. 지상 역사가 있는 역들의 데이터만 출력해 주세요. (5점)
# insert code here
print(df[df.overground])

이론 2 (4조)

1. pandas 라이브러리는 통상적으로 import pandas as pd 명령으로 불러온다. (2점)
2. head() 함수는 가장 앞선 10개의 데이터를 불러온다. (2점)
3. to_csv() 함수에서 ‘header’와 ‘index’ 값은 기본적으로 False로 지정되어 있다. (2점)
4. OrderedDict를 import 해주기 위해서는 다음과 같은 명령을 사용할 수 있다. (2점) 
다음 코드를 실행하면 3개의 열이 아닌 2개의 열이 출력된다. (2점) 
import pandas as pd

l = [
    {'name': "Eclair", 'age': 21},
    {'name': "Froyo", 'age': 22},
    {'name': "Honeycomb", 'age': 30}
    ]
s = pd.DataFrame(l)

s.drop(0)

print(s)

1. o
2. x 5개
3. x True로 되어있다
4. x from collections import OrderedDict
5. x drop() 함수는 기본적으로 inplace=False로 되어있어 위 코드처럼 drop()함수를 불러오면 원본 데이터에 변화를 주지않는다.