pandas seires data 함수

강정우·2022년 7월 25일
0

data, ai

목록 보기
5/18
post-thumbnail

Pandas

  • 행과 열 형태로 되어있는 data를 다루는 library
  • 종류
    • Series : 1차원
    • DataFrame : 2차원
  • Series Class : 1차원 → 인덱스(index) + 값(value)
  • DataFrame Class : 2차원 → 표와 같은 형태
  • 차원의 개념
    • Vector : 1차원 데이터
    • Matrix : 2차원 데이터
    • Tensor : 3차원 이상의 데이터

1. Series

  • Series data는 1차원 data
  • Seires data는 다양한 type의 data를 저장할 수 있다.
srs3 = pd.Series(["홍길동",20,True], index=["이름","나이","성별"])

# result
이름     홍길동
나이      20
성별    True
dtype: object
  • 타입이 object로 바뀌어버린다 왜? 모든 타입의 최상위 클래스이다. 즉, 모든 타입을 담기 위해서이다.
  • Series data에는 list, tuple, dictionary, np.배열등 나열형 data들도 들어갈 수 있다.
srs5 = pd.Series(np.array([10,20,30]))

# result
0    10
1    20
2    30
dtype: int32

1) Series data 생성

(1) index 미지정

srs = pd.Series([4,7,-5,3])

#result
0    4
1    7
2   -5
3    3
dtype: int64

(2) index 지정

srs2 = pd.Series([4,7,-5,3], index=['a','b','c','d'])

#result
a    4
b    7
c   -5
d    3
dtype: int64

(2-1) index 지정 (dictionary)

srs4 = pd.Series({"이름":"홍길동","나이":20,"성별":"남성"})

# result
이름    홍길동
나이     20
성별     남성
dtype: object

(3) Series datad의 이름과 index 이름 지정

s6 = pd.Series([9904312,3448737,2890451,2466052],index=["서울","부산","인천","대구"])
s6.name = "2015 인구"
s6.index.name = "도시"

# result
도시
서울    9904312
부산    3448737
인천    2890451
대구    2466052
Name: 2015 인구, dtype: int64

(4) dictionary 객체로 series data 생성

data = {"서울":9631482,"부산":3393191,"인천":2632035,"대전":1490158}
s7 = pd.Series(data)
s7.name = "2010 인구수"

(5) list를 이용한 series data 생성

s8 =  pd.Series([9904312, 3448737, 2890451, 2466052],
               index=["서울", "부산", "인천", "대구"])
s8.name = "2015 인구수"

2) Series data 연산 및 확인 함수

(1) index

  • series 인덱스 확인 : srs.index

(2) values

  • series 값 확인 : srs.values

(3) dtype

  • series 타입 확인 : srs.dtype

(4) 연산

s6/1_000_000

# result
도시
서울    9.904312
부산    3.448737
인천    2.890451
대구    2.466052
Name: 인구, dtype: float64

3) Series data indexing

(1) indexing

  • 시리즈 데이터의 인덱싱
    • 숫자로 자동 부여되는 인덱스 번호를 사용할 수 있다.
    • index로 부여된 index 이름도 사용할 수 있다.
    • 다중 인덱싱 가능 -> 콤마로 구분
s6[[0,3,1]],s6[["서울","대구","부산"]]

# result
(도시
 서울    9904312
 대구    2466052
 부산    3448737
 Name: 인구, dtype: int64,
 도시
 서울    9904312
 대구    2466052
 부산    3448737
 Name: 인구, dtype: int64)
 
같은 query이다.

(2) boolean indexing

  • 논리연산자인 and, or 이런 key word는 먹지 않는다. 비트연산자(&, |)로 지정하여 해줘야한다.
s6>=2_500_000
#result
도시
서울     True
부산     True
인천     True
대구    False
Name: 인구, dtype: bool

s6[(s6>=2_500_000) & (s6<=5_000_000)]
#result
도시
부산    3448737
인천    2890451
Name: 인구, dtype: int64

- notnull()

  • 결측치가 아닌 data만 출력 -> notnull() 결측치가 없는지 여부
ds = s8-s7
ds[ds.notnull()]

부산     55546.0
서울    272830.0
인천    258416.0
dtype: float64

- isnull()

  • 결측치인 데이터만 출력 -> isnull() - 결측치가 있는지 여부 // 약간 numpy의 isnan() 포지션
ds[ds.isnull()]

대구   NaN
대전   NaN
dtype: float64

4) Series data slicing

  • Series 슬라이싱
    • indexing은 마지막 수를 포함하지 않지만
    • key로 찾는다면 마지막 key값을 포함한다.

5) Series data 갱신, 추가, 삭제

  • Series 데이터 갱신, 추가, 삭제
    • 시리즈명["인덱스명"] = 밸류
    • del 시리즈명["인덱스명"] = 밸류
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글