본문 바로가기
PROGRAMMING/PYTHON

[Python] Pandas

by 안녕나는현서 2021. 4. 26.
728x90

- Pandas

  • 파이썬에서 사용하는 엑셀
  • 대용량 데이터를 빠른 속도로 처리
  • Series와 DataFrame 요소
import pandas as pd

 

- Series

  • 1차원 배열, 인덱스(index) + 값(value)
# Series 생성(2015년)

population = pd.Series([9904312, 3448737, 2890451, 2466052],
                      index = ['서울', '부산', '인천', '대구'])

# Series에 이름 지정

population.name = '인구'
population.index.name = '도시'

population

# Series 이름 확인

print(population.name)
print('')

# Series 값 확인

print(population.values)
print('')

# Series 인덱스 확인

print(population.index)
print('')

# Series 타입 확인

print(population.dtype)

# Series 연산

population/1000000

# Series 인덱싱

print(population[1])
print(population['부산'])
print('')

# 인덱스의 순서를 커스텀해서 출력 가능
print(population[['인천', '대구', '부산', '서울']])

# Series Boolean 인덱싱

population[population>=2500000]

# Series 슬라이싱

print(population[1:3])
print('')
print(population['부산':'대구'])

# 딕셔너리로 Series 생성(2010년)

data = {'서울' : 9631482, '부산' : 3393191,
       '인천' : 2632035, '대전' : 1490158}

population2 = pd.Series(data)
population2.name = '인구'
population2.index.name = '도시'

population2

# 2015년도와 2010년도의 인구 증가 계산

ds = population - population2
ds

# Nan : Not a Number

# notnull : Nan값이 아니면 True, Nan값이면 False 출력
print(ds.notnull())
print('')
print(ds[ds.notnull()])
print('')

# isnull : Nan값이면 True, 아니면 False 출력
print(ds.isnull())
print('')
print(ds[ds.isnull()])

# 2015년도와 2010년도의 인구 증가율 계산

rs = ds/population*100
rs[rs.notnull()]

# Series에 데이터 갱신, 추가, 삭제

print(rs)

rs['부산'] = 1.6
rs['대구'] = 1.41
del rs['서울']
rs[rs.notnull()]

 

 

- Data Frame

  • 2차원 배열, 표와 같은 형태
# DataFrame 생성

data = {'2015' : [9904312, 3448737, 2890451, 2466052],
       '2010' : [9631482, 3393191, 2632035, 2431774]}
df = pd.DataFrame(data)
df

 

# DataFrame 인덱스 지정

df.index = ['서울', '부산', '인천', '대구']
df

# DataFrame 인덱스 지정하여 생성

data = [[9904312, 3448737, 2890451, 2466052],
       [9631482, 3393191, 2632035, 2431774]]
idx = ['2015', '2010']
col = ['서울', '부산', '인천', '대구']
df2 = pd.DataFrame(data, index = idx, columns = col)
df2

# 행과 열의 위치 바꾸기

df2.T

 

- Data Frame 합치기

# 데이터 프레임 생성

df1 = pd.DataFrame({'A' : ['A0', 'A1', 'A2', 'A3'],
                   'B' : ['B0', 'B1', 'B2', 'B3'],
                   'C' : ['C0', 'C1', 'C2', 'C3'],
                   'D' : ['D0', 'D1', 'D2', 'D3']},
                  index = [0, 1, 2, 3])
df2 = pd.DataFrame({'A' : ['A4', 'A5', 'A6', 'A7'],
                   'B' : ['B4', 'B5', 'B6', 'B7'],
                   'C' : ['C4', 'C5', 'C6', 'C7'],
                   'D' : ['D4', 'D5', 'D6', 'D7']},
                  index = [4, 5, 6, 7])
df3 = pd.DataFrame({'A' : ['A8', 'A9', 'A10', 'A11'],
                   'B' : ['B8', 'B9', 'B10', 'B11'],
                   'C' : ['C8', 'C9', 'C10', 'C11'],
                   'D' : ['D8', 'D9', 'D10', 'D11']},
                  index = [8, 9, 10, 11])

print(df1)
print('')
print(df2)
print('')
print(df3)

# 데이터 프레임 합치기

df4 = pd.concat([df1, df2, df3])
df4

 

- 합집합과 교집합

# 합집합과 교집합

df5 = pd.DataFrame({'B' : ['B2', 'B3', 'B6', 'B7'],
                   'D' : ['D2', 'D3', 'D6', 'D7'],
                   'F' : ['F2', 'F3', 'F6', 'F7']},
                  index = [2, 3, 6, 7])
print(df5)
print('')

# 1) 합집합 : join = 'outer' (기본값)
df6 = pd.concat([df1, df5])
print(df6)
print('')

# 2) 교집합 : join = 'inner'
df7 = pd.concat([df1, df5], join = 'inner')
print(df7)

 

- Data Frame 연산

data = {'2015' : [9904312, 3448737, 2890451, 2466052],
       '2010' : [9631482, 3393191, 2632035, 2431774]}
df = pd.DataFrame(data)
df.index = ['서울', '부산', '인천', '대구']
df

print(df.sum(axis=0), '\n')                                        # 합계
print(df.median(axis=1), '\n')                                     # 중앙값
print(df.cumsum(axis=0), '\n')                                     # 누적 합
print(df.sort_values('2010', axis=0, ascending=True), '\n')        # '2010'컬럼을 기준으로 정렬
print(df.rank(axis=0, ascending=False))                            # 등수 매기기

 

728x90

'PROGRAMMING > PYTHON' 카테고리의 다른 글

[Python] Pandas 다루기 - 점수 데이터  (0) 2021.04.26
[Python] Pandas 다루기 - 인구 데이터  (0) 2021.04.26
[Python] Numpy  (0) 2021.04.26
[Python] 모듈, 패키지, 예외처리, 내장함수  (0) 2021.04.26
[Python] 클래스  (0) 2021.04.26

댓글