안녕하세요 쩨이입니다!
이번 글은 파이썬에서 사용하는 데이터 분석 라이브러리인 Pandas에 대해 공부한 것을 정리해 보았습니다.
데이터 분석에 관심이 생겼을 때 정리했던 내용입니다.
생각날 때 한 번씩 공부하고 정리해보고자 합니다.
Series: 1차원 데이터 (정수, 실수, 문자열 등)
- Series 객체 생성 > Index 지정
import pandas as pd
temp = pd.Series([-20, -10, 10, 20], index=['Jan', 'Feb', 'Mar', 'Apr'])
temp

# index를 지정하지 않으면 'Jan, Feb, Mar, Apr; 대신 '0, 1, 2, 3'으로 0부터 채워지며, pd.Series() 안에 데이터와 인덱스가 포함.
DataFrame: 2차원 데이터 (Series들의 모임)
- Data 준비
data = {
'이름' : ['채치수', '정대만', '송태섭', '서태웅', '강백호', '변덕규', '황태산', '윤대협'],
'학교' : ['북산고', '북산고', '북산고', '북산고', '북산고', '능남고', '능남고', '능남고'],
'키' : [197, 184, 168, 187, 188, 202, 188, 190],
'국어' : [90, 40, 80, 40, 15, 80, 55, 100],
'영어' : [85, 35, 75, 60, 20, 100, 65, 85],
'수학' : [100, 50, 70, 70, 10, 95, 45, 90],
'과학' : [95, 55, 80, 75, 35, 85, 40, 95],
'사회' : [85, 25, 75, 80, 10, 80, 35, 95],
'SW특기' : ['Python', 'Java', 'Javascript', '', '', 'C', 'PYTHON', 'C#']
}
# 사전(dict) 자료구조
- DataFrame 객체 생성
import pandas as pd
df = pd.DataFrame(data)
df

# df는 DataFrame의 약자이며 2차원이기 때문에 표(행, 열)로 표현.
- Data 접근
df['이름']

# 1개의 Column
df[['이름', '키']]

# 2개의 Column
- DataFrame 객체 생성 > Index 지정
df = pd.DataFrame(data, index=['1번', '2번', '3번', '4번', '5번', '6번', '7번', '8번'])
df

# Index의 수와 지정하려는 내용의 개수가 같아야 한다.
- DataFrame 객체 생성 > Column 지정
df = pd.DataFrame(data, columns=['이름', '키', '학교'])
df

# columns로 지정하는 순서대로 값의 순서가 결정
Index: 데이터에 접근할 수 있는 주소값
- Data 준비
import pandas as pd
data = {
'이름' : ['채치수', '정대만', '송태섭', '서태웅', '강백호', '변덕규', '황태산', '윤대협'],
'학교' : ['북산고', '북산고', '북산고', '북산고', '북산고', '능남고', '능남고', '능남고'],
'키' : [197, 184, 168, 187, 188, 202, 188, 190],
'국어' : [90, 40, 80, 40, 15, 80, 55, 100],
'영어' : [85, 35, 75, 60, 20, 100, 65, 85],
'수학' : [100, 50, 70, 70, 10, 95, 45, 90],
'과학' : [95, 55, 80, 75, 35, 85, 40, 95],
'사회' : [85, 25, 75, 80, 10, 80, 35, 95],
'SW특기' : ['Python', 'Java', 'Javascript', '', '', 'C', 'PYTHON', 'C#']
}
df = pd.DataFrame(data, index=['1번', '2번', '3번', '4번', '5번', '6번', '7번', '8번'])
# 앞의 data에 index를 지정한 값을 준비. 결과는 'DataFrame 객체 생성 > Index 지정'과 같음
- Index 이름 설정
df.index.name = '지원번호'
df

# Index의 이름이 '지원번호'가 됨
- Index 초기화 > Index 항목에서만 삭제
df.reset_index()

- Index 초기화 > Index 삭제 > 실제 데이터 반영 X
df.reset_index(drop=True)

df

# df로 데이터를 출력했을 때 인덱스 삭제가 발생하지 않음. 미리 보기 개념
- Index 초기화 > Index 삭제 > 실제 데이터 반영O
df.reset_index(drop=True, inplace=True)
df

# 'inplace=True'를 통해 'drop=True'를 확정
- Index 설정 > Column 지정 > 실제 데이터 반영 X
df.set_index('이름')

df

# df로 데이터를 출력했을때 인덱스 지정이 발생하지 않음. 미리보기 개념
- Index 설정 > Column 지정 > 실제 데이터 반영 O
df.set_index('이름', inplace=Ture)
df

# 'inplace=True'를 통해 인덱스 지정을 확정
- Index 정렬 > 오름차순
df.sort_index()

# Index가 이름이기 때문에 ㄱㄴㄷ순으로 오름차순
- Index 정렬 > 내림차순
df.sort_index(ascending=False)

# Index가 이름이기 때문에 ㅎ,ㅌ,ㅍ 순으로 내림차순
데이터 확인
- DataFrame 확인 > 각 Column 별 요약 통계
df.describe()

# df.describe(): 계산 가능한 데이터에 대해 column별로 데이터의 개수, 평균, 표준편차, 최솟값, 최댓값 등의 정보를 보여줌
- DataFrame 확인 > 데이터의 대략적인 정보 출력
df.info()

# df.info(): df의 각 column의 이름, 행의 개수, 타입 등의 정보 확인 가능
- DataFrame 확인 > 상위 n개의 row 출력
df.head()

# df.head(): 상위 5개의 row를 가져옴. () 내에 숫자를 넣게 되면 숫자만큼의 row를 앞에서부터 가져옴
- DataFrame 확인 > 하위 n개의 row 출력
df.tail()

# df.tail(): 하위 5개의 row를 가져옴. ()내에 숫자를 넣게 되면 숫자만큼의 row를 뒤에서부터 가져옴
- Series 확인 > 1개의 Column 정보
df['키']

# df['column'] 뒤에 .을 붙이고 describe() , min(), max(), mean(), sum(), count() 등을 사용하면 column의 해당 정보를 알 수 있음
- Series 확인 > 1개의 Column 정보 > 중복 제외한 값
df['학교'].unique()

- Series 확인 > 1개의 Column 정보 > 중복 제외한 값의 개수
df['학교'].nunique()
파일 저장 및 열기 *동일 폴더 내 존재
- 저장하기 > csv 파일
df.to_csv('파일명.csv')
# 파일이 깨지는 경우에는 encoding='utf-8-sig' 를 괄호 안에 추가해줘야 함
- 저장하기 > 텍스트 파일
df.to_csv('파일명.txt', sep='\t')
# tab으로 구분된 텍스트 파일
- 저장하기 > excel 파일
df.to_excel('파일명.xlsx')
- 열기 > csv 파일
df = pd.read_csv('파일명.csv')
- 열기 > 텍스트 파일
df = pd.read_csv('파일명.txt')
- 열기 > excel 파일
df = pd.read_excel('파일명.xlsx')
# column을 지정해서 index로 지정하려면 파일명 뒤에 index_col=원하는 값을 추가하면 됨
출처 : 인프런 '나도코딩 | 파이썬 무료 강의 (활용편5) - 데이터 분석 및 시각화 대시보드'
정리한 내용 중 틀린 내용이 있다면 댓글을 통해서 알려주세요
감사합니다 🙌
