Python/Pandas
[Pandas] 개요
yeonny_do
2023. 11. 10. 18:09
- 판다스는 데이터 조작 및 분석을 위해 파이썬 프로그래밍 언어로 작성된 소프트웨어 라이브러리임
- 일명 파이썬의 엑셀이라 불림
- 데이터 전처리에 주로 사용됨
- 시각화 연동되어지는 데이터 셋으로도 활용이 많이됨
- 참고 사이트 : https://pandas.pydata.org
■ pandas 불러오기
- pandas 모듈 미설치 시 (anaconda jupyter 환경)
!pip install pandas
- pandas 모듈 불러오기
import pandas as pd
■ pandas 에서 사용하는 자료 구조
□ Series
- DataFrame 중에서 하나의 column(열 즉, 특성값) 에 해당하는 데이터
- 1차원 데이터 (index, value 2가지 요소로 구성)
□ Dataframe
- Data Table 전체를 의미하는 데이터
- 2차원 데이터(index, values, columns 3가지 요소로 구성)
- Series가 여러 개 모여서 결합된 것이라고 봐도 됨 (Series := column)
□ Index
- Series, Dataframe의 인덱스를 구성하는 데이터
■ Series
: index값을 명시적으로 지정하지 않으면 0부터 시작하는 일련번호로 자동 지정됨
nums = [2,3,4,5,6]
sr = pd.Series(nums)
print(sr)
print(type(sr))
○ index를 직접 전달할 수도 있음. 인덱스를 전달할 때는 value의 개수에 맞게 전달해야 함
sr = pd.Series(nums, index = list('abcde'))
print(sr)
menu = ['바나나','닭가슴살','그릭요거트']
index_list = ['아침','점심','저녁']
sr = pd.Series(menu, index=index_list)
print(sr)
print('-'*30)
print(sr.values) # value 값만 출력
print(sr.index.values) # index 즉, 행의 이름 출력
print(type(sr.index.values))
※ object : 문자열
※ index와 values 의 클래스는 다차원 배열임 !
○ 딕셔너리를 이용한 Series 생성. key가 index가 되고, value가 column의 값이 됨
dic_data = {'a': 21, 'b': 22, 'c':23, 'd':24, 'e': 25}
sr = pd.Series(dic_data, dtype=np.float32)
print(sr)
※ Series 생성 시 dtype옵션으로 데이터의 타입을 정할 수 있음
○ 원소 선택 (인덱싱)
print(sr[0])
print(sr['a'])
print(sr['a':'c'])
print(sr[0:3])
○ unique(), value_counts()
- unique() : 결측치를 포함하며 중복된 데이터를 제외한 데이터의 종류를 ndarray로 반환
- value_counts() : 결측치를 포함하지 않으며 각 데이터 종류 별 개수를 Series로 반환
sr = pd.Series(['A','B','A',np.NaN,'C','D','A','D'])
print(sr.unique())
print(sr.value_counts())
print(sr.value_counts().index.values) # 결측치는 제외된 인덱스 값들
print(sr.value_counts()[3])
■ 데이터 프레임 (DataFrame)
: 데이터 프레임 생성 시 index와 column을 지정해주지 않으면 자동으로 생성됨.
○ display() : 데이터 프레임의 서식이 잘 정렬된 형태로 보여짐
nums = np.arange(1,10).reshape(3,3)
print(nums)
print('-'*30)
df = pd.DataFrame(nums)
print(df)
display(df)
○ 인덱스나 컬럼을 직접 전달할 수도 있음
menu = [['토스트','시리얼','스크램블'],
['갈비탕','해장국','순대국'],
['닭가슴살','구운계란','반숙란']]
index = ['아침','점심','저녁']
column = ['금','토','일']
df = pd.DataFrame(menu, index=index, columns=column)
display(df)
df = pd.DataFrame(menu, index, column) # 따로 옵션 지정해주지 않고, value, index, column 순으로 작성해도 됨
print(df.index)
print(df.index.values)
print('-'*30)
print(df.values)
print('-'*30)
print(df.columns)
print(df.columns.values)
○ 딕셔너리를 이용한 데이터 프레임 : 딕셔너리의 key가 column명이 됨. value는 이스트의 형태로 넣어줘야 함.
data ={
'이름' : ['홍길동','전우치','손오공','사오정','저팔계'],
'나이' : [32,27,30,31,33],
'전화번호' : ['010-1111-1111','010-2222-1111','010-3333-1111','010-4444-1111','010-5555-1111']
}
df = pd.DataFrame(data, index = np.arange(1,6))
display(df)