[Pandas]pandas 연습

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!


시리즈 연습 문제

문제1.

: 필요한 패키지를 import하고, 별명을 만드시오.

import pandas as pd
import numpy as np

문제2.

: 다음의 조건에 따라 임의로 두 개의 시리즈 객체를 생성하시오.

  • 조건1) 모두 문자열 인덱스를 가져야 하며,
  • 조건2) 모두 시리즈에 공통적으로 포함되지 않는 인덱스가 있어야 한다.
  • 조건3) 값과 시리즈 원소 개수도 임의 설정할 것
# seq_data 활용
# 해외축구를 좋아한다. 토트넘 선수들 시리즈 객체를 만들어봤다.
tot = pd.Series(['Son','Harry','Dele'], index = ['a','b','c'])
tot
a      Son
b    Harry
c     Dele
dtype: object
# 날강두가 있는 맨체스터 유나이티드 선수들 시리즈 객체를 만들어봤다.
manu = pd.Series('Ronaldo Degea Rashford'.split(), index = ['a','b','c'])
# split활용!
manu
a     Ronaldo
b       Degea
c    Rashford
dtype: object

문제3.

:다음의 시리즈 객체를 이용하여 사칙연산을 수행하고 결과를 출력하시오.

# 시리즈 데이터
ex_s1 = pd.Series({'국어':95,'영어':80,'수학':75})
ex_s2 = pd.Series({'국어':95,'영어':80,'수학':75})
# 사칙연산(더하기)
ex_s1 + ex_s2
국어    190
영어    160
수학    150
dtype: int64
# 사칙연산(빼기)
ex_s1 - ex_s2
국어    0
영어    0
수학    0
dtype: int64
# 사칙연산(곱하기)
ex_s1 * ex_s2
국어    9025
영어    6400
수학    5625
dtype: int64
# 사칙연산(나누기)
ex_s1 / ex_s2 # 나누기는 역시 실수형으로 나온다.
국어    1.0
영어    1.0
수학    1.0
dtype: float64

문제4.

두 시리즈 객체를 이용하여 다음 연산을 수행한 결과를 쓰고 왜 그러한지 설명하시오.

ex_s1 = pd.Series({'국어':95,'영어':80,'수학':75})  
ex_s2 = pd.Series({'국어':95,'과학':80,'논술':75}) 
ex_s1 # 시리즈 확인
국어    95
영어    80
수학    75
dtype: int64
ex_s2 # 시리즈 확인
국어    95
과학    80
논술    75
dtype: int64
ex_s1 - ex_s2 # 인덱스의 차이
과학    NaN
국어    0.0
논술    NaN
수학    NaN
영어    NaN
dtype: float64
ex_s1.values - ex_s2.values # values는 array로 변환
array([0, 0, 0], dtype=int64)

답변 :
(1)
두 시리즈의 인덱스가 다르다.
ex_s1의 인덱스는 국어, 영어, 수학
ex_s2의 인덱스는 국어, 과학, 논술
그래서 ex_s1 - ex_s2 를 출력하면,
국어 값만 연산이 된 상태로 나오는데,
이것은 인덱스가 다른 두 시리즈를 연산하면
인덱스가 같은 값만 연산이 되고,
인덱스가 다른 값은 NaN(결측치)로 반환되기 때문이다.

(2)
values 속성은 시리즈의 형태가 사라지고 array 형태로 반환해준다.
따라서,인덱스에 상관없이
ex_s1.values는 array([95, 80, 75])
ex_s2.values는 array([95, 80, 75])
두 값을 빼주면
array([0, 0, 0])의 형태가 나온다.

문제5.

: 다음의 데이터를 이용하여 주어진 조건에 따라 시리즈 객체를 생성하시오.

#  서울 : 9904312, 부산 : 3448737, 인천 : 2890451  대구 : 2466052    
#  1) 리스트를 이용하여 시리즈 생성
#  2) 딕셔너리를 이용하여 시리즈 생성
# 1) 리스트를 이용하여 시리즈 생성
civil = [9904312, 3448737, 2890451, 2466052]
city = ['서울', '부산', '인천', '대구']
s1 = pd.Series(civil, index = city)
s1
서울    9904312
부산    3448737
인천    2890451
대구    2466052
dtype: int64
# 2) 딕셔너리를 이용하여 시리즈 생성
s2 = pd.Series({'서울':9904312, '부산':3448737, '인천':2890451, '대구':2466052})
s2
서울    9904312
부산    3448737
인천    2890451
대구    2466052
dtype: int64

문제6.

: 문제5에서 생성한 시리즈에 대한 인덱스를 출력하시오.

s1.index
Index(['서울', '부산', '인천', '대구'], dtype='object')
s2.index
Index(['서울', '부산', '인천', '대구'], dtype='object')

문제7.

:문제5에서 생성한 시리즈에 대하여 세번째 인덱스의 값을 문자인덱스로 접근 후 출력하시오.

s1[2],s1['인천'],s1.인천 # 숫자인덱스, 문자인덱스
(2890451, 2890451, 2890451)
s2[2],s2['인천'],s2.인천 # 숫자인덱스, 문자인덱스
(2890451, 2890451, 2890451)

문제8.

: 문제5에서 생성한 시리즈에 대하여 문자인덱싱을 이용하여 부산, 인천, 대구의 값을 추출하시오.

s1[['부산','인천','대구']]
부산    3448737
인천    2890451
대구    2466052
dtype: int64
s1[1:] # 숫자인덱싱 이용
부산    3448737
인천    2890451
대구    2466052
dtype: int64
s2[['부산','인천','대구']]
부산    3448737
인천    2890451
대구    2466052
dtype: int64
s2[1:] # 숫자인덱싱 이용
부산    3448737
인천    2890451
대구    2466052
dtype: int64

문제9.

:다음 데이터를 이용하여 시리즈를 생성하고 데이터 순서는 서울, 부산, 인천, 대전 으로 설정하시오.( 딕셔너리 활용 )

#   서울 9631482
#   부산 3393191
#   인천 2632035
#   대전 1490158
capital = pd.Series({'서울':9631482,'부산':3393191,'인천':2632035,'대전':1490158}, index = ['서울','부산','인천','대전'])
capital
서울    9631482
부산    3393191
인천    2632035
대전    1490158
dtype: int64

문제 10

: 위에서 생성한 시리즈에 인구 라는 이름을 설정하시오

print(capital.name)
None
# None이 나왔으므로 .name으로 인구로 지정해주자
capital.name = '인구'
capital # Name: 인구 <- 잘 생성된 것 확인
서울    9631482
부산    3393191
인천    2632035
대전    1490158
Name: 인구, dtype: int64

문제 11

: 위에서 생성한 시리즈의 인구수가 3000000 이상인 도시를 출력하시오

capital > 3000000 # 마스크 생성, 논리형
서울     True
부산     True
인천    False
대전    False
Name: 인구, dtype: bool
capital[(capital > 3000000)] # Treu인 서울과 부산만 출력
서울    9631482
부산    3393191
Name: 인구, dtype: int64

문제 12

: 위에서 생성한 시리즈의 서울 데이터를 11000000 으로 변경하세요

capital.서울 = 11000000
capital
서울    11000000
부산     3393191
인천     2632035
대전     1490158
Name: 인구, dtype: int64

문제 11

: 대전 데이터를 삭제하세요

del capital['대전']
capital
서울    11000000
부산     3393191
인천     2632035
Name: 인구, dtype: int64

문제 12

: 대구 데이터가 있는지 확인 하세요

'대구' in capital # in 사용, 없다고한다.
False

2022

[web]jQuery 복습 3

2 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 2

11 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 1

16 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리4

6 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리3

6 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리2

6 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리1

7 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]CSS 기초 정리

9 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]HTML 기초 정리

2 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[Pandas]pandas 연습

3 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑

2021

[Python기초]module

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑