※ 이 글을 쓰는 사람은 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 : 위 이미지에서 보듯이 각 열(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
'코딩 > 데이터분석' 카테고리의 다른 글
[Python/파이썬] Numpy 기초 1편 : Array 생성 및 인덱싱,슬라이싱 (0) | 2021.06.29 |
---|---|
[Python/파이썬] Pandas 기초 정리 : 원소 바꾸기, dropna(), fillna() (0) | 2021.04.13 |
[Python/파이썬] Pandas 기초 정리 : Dataframe 행, 열 삭제하기(drop 함수) (2) | 2021.04.11 |
[Python/파이썬] Pandas 기초 정리 : Dataframe 행, 열 추가 방법 (0) | 2021.04.05 |
[Python/파이썬] Pandas 기초 정리 : Dataframe 내부 데이터 조회 방법 (0) | 2021.04.03 |