본문 바로가기

코딩/데이터분석

[Python/파이썬] Pandas 기초 정리 : Series, Dataframe 개념 정리

반응형

 

※ 이 글을 쓰는 사람은 SW 비전공자입니다.

※ 개인 공부를 위해 정리하는 글이며, 작성한 코드들은 효율성, 깔끔함(?) 등과는 거리가 멀 수 있습니다.

 

1편 : 2021.03.31 - [코딩/Python] - [Python/파이썬] Pandas 기초 정리 : Series, Dataframe 개념 정리

2편 : 2021.04.01 - [코딩/Python] - [Python/파이썬] Pandas 기초 정리 : 엑셀 파일(.xlsx) Dataframe으로 만들기

3편 : 2021.04.03 - [코딩/Python] - [Python/파이썬] Pandas 기초 정리 : Dataframe 내부 데이터 조회 방법

4편 : 2021.04.05 - [코딩/Python] - [Python/파이썬] Pandas 기초 정리 : Dataframe 행, 열 추가 방법

5편 : 2021.04.11 - [코딩/Python] - [Python/파이썬] Pandas 기초 정리 : Dataframe 행, 열 삭제하기(drop 함수)

6편 : 2021.04.13 - [코딩/Python] - [Python/파이썬] Pandas 기초 정리 : 원소바꾸기, dropna(), fillna()

7편 : 2021.04.24 - [코딩/Python] - [Python/파이썬] Pandas Dataframe 결합 : Concat

8편 : 2021.04.25 - [코딩/Python] - [Python/파이썬] Pandas Dataframe 결합 : Merge


  이전에는 엑셀을 다루는 모듈을 openpyxl 만 썼었는데 엑셀의 내부 data를 가공하는데 Pandas가 좀더 효율적인 것을 깨달았다.

openpyxl은 엑셀의 특정 셀에 접근해서 값을 쓰고 읽어오는데 장점이 있다면 Pandas는 전체적인 표, 전체적인 data를 읽어오고 내가 원하는대로 가공할 수 있다는 것이 장점인 것 같다.

 

   이번에는 Padnas 모듈을 사용하기 위한 기본적인 내용들을 정리하려고 한다. Pandas를 사용하려면 먼저 Series와  Dataframe의 개념을 먼저 알아야 한다. 해당 개념을 이해하기 위해 아래와 같이 간단히 도식화해보았다.

 

Series, Dataframe 개념

 

Series : 위 이미지에서 보듯이 각 열(Column) 단위를 Series라고 부른다.

 

Dataframe : 각 열 단위(Series)가 모여 된 하나의 표를 Dataframe이라고 한다.

 

Index : Series, Dataframe을 생성하면 인덱싱 번호가 따라다닌다. 인덱스는 Series가 아니다. 위 이미지에는 숫자로 되어있지만 

               내가 원하는 인덱스 형태로 변경할 수 있다.

 

 

 

1. Series  다뤄보기

 

1) Series 객체 생성해보기

 

-. Series는 Pandas 모듈의 클래스인 것을 아래 결과를 통해 알 수 있다.

-. Series 전체를 출력하면 인덱싱 번호가 붙어서 출력 된다.

-. 리스트처럼 각각 인덱싱 번호로 출력할 수 있다.

 

<코드>

import pandas as pd

#price라는 Series 생성
price = pd.Series([500, 1000, 2000, 4000])
print("Series type:")
print(type(price)) #Series는 pandas의 클래스

print("Series 전체 출력")
print(price)

print("Series 인덱싱")
print(price[0])
print(price[1])

 

Series type:
<class 'pandas.core.series.Series'> 

Series 전체 출력
0     500
1    1000
2    2000
3    4000
dtype: int64

Series 인덱싱
500
1000

 

 

 

2) 인덱스를 직접 입력해보기

 

   : 위 1) 코드에서 Series 생성시 인덱스를 내가 원하는 형식으로 변경할 수 있다.(설정하지 않으면 숫자 인덱스)

 

<코드>

import pandas as pd

#price라는 Series 생성
price = pd.Series([500, 1000, 2000, 4000], index =['2021-01-01', '2021-02-02', '2021-03-03', '2021-04-04'])

print("Series 전체 출력")
print(price)

 

Series 전체 출력
2021-01-01     500
2021-02-02    1000
2021-03-03    2000
2021-04-04    4000

 

 

3) 인덱스, Series의 각 요소에 접근해보기

 

  Series의 속성인 .index, .values를 통해 인덱스나 각 요소를 for문을 통해 접근할 수 있다.

 

<코드>

import pandas as pd

#price라는 Series 생성
price = pd.Series([500, 1000, 2000, 4000], index =['2021-01-01', '2021-02-02', '2021-03-03', '2021-04-04'])

#index 출력하기
for date in price.index:
    print(date)

#인덱스에 따른 값 출력하기
for pri in price.values:
    print(pri)

 

2021-01-01
2021-02-02
2021-03-03
2021-04-04

500
1000
2000
4000

 

 

4) Series 끼리 사칙연산

 

-. Series 끼리 사칙연산이 가능하다.

-. 사칙연산을 한 결과는 또 다른 Series이다.

 

<코드>

import pandas as pd

#price1,2 라는 Series 생성
price1 = pd.Series([500, 1000, 2000, 4000], index =['2021-01-01', '2021-02-02', '2021-03-03', '2021-04-04'])
price2 = pd.Series([5000, 10000, 20000, 40000], index =['2021-02-02', '2021-01-01', '2021-04-04', '2021-03-03'])

#Series + Series
sum = price1 + price2
print(sum)

 

2021-01-01    10500
2021-02-02     6000
2021-03-03    42000
2021-04-04    24000
dtype: int64

 

 

2. Dataframe 다뤄보기

 

1) Dataframe 생성해보기 (위 이미지를 기준으로)

 

 

 -. 아래와 같이 딕셔너리 형태로 Dataframe을 생성할 수 있다.

 -. 결과에서 보면 각 Column인 '국어', '영어','수학' 열은 Series이다. (Series가 모여서 Dataframe이 된다.)

 

<코드>

import pandas as pd

#3개의 key : value를 가진 딕셔너리
raw_data = {'국어' : [90, 70, 60, 50],
            '영어' : [100, 80, 80, 80],
            '수학' : [100, 70, 70, 80]} 

#위 딕셔너리를 받아서 그대로 dataframe으로 생성        
df = pd.DataFrame(raw_data)
print("df의 type:")
print(type(df))
print(df)

 

df의 type:
<class 'pandas.core.frame.DataFrame'>

   국어   영어   수학
0  90  100  100
1  70   80   70
2  60   80   70
3  50   80   80

 

 

2) Dataframe의 Column(열) 순서 바꿔보기

 

 

-. Dataframe 생성시 'columns' 파라미터를 사용하면 Column의 순서를 바꾸는 것도 가능하다.

 

<코드>

import pandas as pd

#3개의 key : value를 가진 딕셔너리
raw_data = {'국어' : [90, 70, 60, 50],
            '영어' : [100, 80, 80, 80],
            '수학' : [100, 70, 70, 80]} 

#위 딕셔너리를 받아서 그대로 dataframe으로 생성        
df = pd.DataFrame(raw_data, columns=['영어','국어','수학'])
print(df)

 

    영어  국어   수학
0  100  90  100
1   80  70   70
2   80  60   70
3   80  50   80

 

 

3) Dataframe의 인덱스를 따로 설정해보기

 

-. Dataframe 생성시 'index' 파라미터를 사용하면 인덱스를 따로 설정할 수 있다.

-. 인덱스를 입력할시 리스트 or 튜플 형태로 입력 가능

-. Dataframe이 인덱스를 설정할 때 Column의 data가 4개라면 반드시 index도 4개로 설정해야 한다.(다르면 오류 남)

 

<코드>

import pandas as pd

#3개의 key : value를 가진 딕셔너리
raw_data = {'국어' : [90, 70, 60, 50],
            '영어' : [100, 80, 80, 80],
            '수학' : [100, 70, 70, 80]} 

index_list = ["YB", 'SW', 'EJ', 'HJ'] #튜플로 해도 무관
df = pd.DataFrame(raw_data, columns=['영어','국어','수학'], index = index_list)
print(df)

 

     영어  국어   수학
YB  100  90  100
SW   80  70   70
EJ   80  60   70
HJ   80  50   80

 

 

 

 

 

 

 

 

 

 

 

 

728x90