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 |
댓글