Pandas 모듈
데이터 분석에 많이 사용하는 파이썬 라이브러리로, 쉽고 직관적인 관계형 또는 분류된 데이터로 작업 할 수 있도록 설계된 패키지로 실용적인 실제 데이터 분석을 수행하기 위한 고수준의 객체 형태를 목표로 한다.
균일한 유형의 배열로 표시된 일차원 데이터를 위한 시리즈(Series), 잠재적으로 이질적으로 유형이 지정된 열이 있는 크기가 가변적인 테이블 형식의 이차원 데이터를 위한 데이터프레임(DataFrame)이라는 자료구조를 제공한다.
pandas 사용하기
import pandas as pd #import 모듈명 as 별칭
#버전확인
pd.__version__
#from 모듈명 import 클래스명
from pandas import Series
from pandas import DataFrame
시리즈(Series)
데이터를 시리즈 객체로 생성하기
# pd.Series(데이터)
#리스트 : 순서가 있고 수정 가능 []
import pandas as pd
list_data = ['2021-12-24', 3.14, 'ABC', 100, True]
sr1 = pd.Series(list_data)
print(sr1)
'''
index values
a 1
b 2
c 3
'''
#튜플 : 순서가 있고 수정 불가능 ()
import pandas as pd
tup_data = ("홍길동",'1990-01-01','남',True)
sr2 = pd.Series(tup_data,index=['이름','생년월일','성별','학생여부'])
print(sr2)
'''
index values
이름 홍길동
생년월일 1990-01-01
성별 남
학생여부 True
'''
#딕셔너리 : key:value 쌍을 저장 {key:value}
import pandas as pd
dict_data = {'a':1,'b':2,'c':3}
sr3 = pd.Series(dict_data)
print(sr3)
'''
index values
a 1
b 2
c 3
'''
Series 사용하기
시리즈 객체명 = sr
sr.index : index만 출력
sr.values : values만 출력
sr[인덱스 번호] : index 순서로 값(values)을 조회
sr['인덱스 명'] : index명으로 값(values)을 조회
sr[[인덱스번호, 인덱스번호]] : 여러개의 값을 index번호로 조회
sr[['인덱스 명', '인덱스 명']] : 여러개의 값을 index명으로 조회
sr[인덱스번호:인덱스번호] : 여러개의 값을 범위 지정해서 조회(index슬라이딩기법 : 앞번호~뒷번호-1까지)
sr['인덱스 명':'인덱스 명'] : 여러개의 값을 범위 지정해서 조회(인덱스명부터 인덱스명까지)
데이터프레임(DataFrame)
데이터를 데이터프레임 객체로 생성하기
데이터프레임은 행과 열이 필요하다.(시리즈는 열의 이름 필요 없다.)
index : 행의 이름
columns : 열의 이름
# pd.DataFrame(데이터)
#리스트 : 순서가 있고 수정 가능 []
import pandas as pd
list_data = [[15,"남","서울중"],[17,"여","서울여고"],[17,"남","서울고"]]
df1=pd.DataFrame(list_data,index=["홍길동","성춘향","이몽룡"],columns=['나이','성별','학교'])
print(df1)
'''
나이 성별 학교
홍길동 15 남 서울중
성춘향 17 여 서울여고
이몽룡 17 남 서울고
'''
#딕셔너리 : key:value 쌍을 저장 {key:value}
import pandas as pd
dict_data = {'c0':[1,2,3], 'c1':[4,5,6], 'c2':[7,8,9],
'c3':[10,11,12], 'c4':[13,14,15]}
df2=pd.DataFrame(dict_data)
print(df2)
'''
c0 c1 c2 c3 c4
0 1 4 7 10 13
1 2 5 8 11 14
2 3 6 9 12 15
'''
여러가지 데이터를 데이터프레임 객체로 생성하기
# csv파일 데이터프레임으로 읽기
df = pd.read_csv("경로/파일명.csv")
# excel 파일: 모든시트 읽기 => dirc로 저장{'시트명':내용,'시트명':내용,...}
df = pd.read_excel("경로/파일명.xlsx", sheet_name=None, index_col=None)
'''
sheet_name : 읽을 sheet, None-모든 sheet 읽기
index_col= : 인덱스 컬럼 여부
'''
# dirc로 저장된 데이터 DataFrame객체로 바꿔주기
for name, data in df.items() :
print("sheet_name",name)
print(data)
# excel 파일: 하나의 시트 읽기 => DataFrame으로 저장
df=pd.read_excel("경로/파일명.xlsx", sheet_name="읽을 sheet", index_col=None)
데이터프레임 객체 파일로 저장하기
# 데이터프레임 데이터를 csv파일로 저장하기
df.to_csv("저장 할 파일명.csv",index=False) #index=False 인덱스는 파일로 저장 안함
#데이터프레임 데이터를 excel파일로 저장하기
df.to_Excel(pd.ExcelWriter("저장 할 파일명.xlsx"), sheet_name="시트명", index=False)
pd.ExcelWriter("저장 할 파일명.xlsx").save() #파일 생성
DataFrame 사용하기
데이터프레임 객체명 = df
df : 전체 조회하기
df.index : index만 출력
df.values : values만 출력
df.columns : 컬럼이름 조회하기
df.info() : 데이터프레임 데이터의 간략 정보
df.head() : 상위 5개 레코드만 조회
df.tail() : 하위 5개 레코드만 조회
df.shape : 데이터 행열의 갯수
df.컬럼명.dtypes : 특정컬럼의 자료형 출력
df["컬럼명"] : 컬럼 1개 조회하기 => Series객체로 반환
df.컬럼명 : 컬럼 1개 조회하기 => Series객체로 반환
df[["컬럼명", "컬럼명"]] : 컬럼 여러개 조회하기 => DataFrame객체로 반환
loc : index 이름으로 조회
df.loc["인덱스명"] : 인덱스기준으로조회 1개 => Series객체로 반환
df.loc[["인덱스명","인덱스명",...]] : 인덱스기준으로조회 여러개 => DataFrame객체로 반환
df.loc["인덱스명":"인덱스명"] : 인덱스기준으로조회 인덱스명~인덱스명까지 범위 지정
iloc : index 순번으로 조회
df.iloc["인덱스번호"] : 인덱스기준으로조회 1개 => Series객체로 반환
df.iloc[["인덱스번호","인덱스번호",...]] : 인덱스기준으로조회 여러개 => DataFrame객체로 반환
df.iloc["시작인덱스번호":"마지막인덱스번호+1"] : 인덱스기준으로조회 인덱스번호~(인덱스번호-1)까지 범위 지정
df[특정df또는특정컬럼==조건값] : 조건값의 True인 레코드만 조회
행열 제거하기
df.drop(["행(열)이름","행(열)이름",...],axis=0,inplace=True)
axis=0 행
axis=1 : 열
del df["삭제할 컬럼명"]
이름, 값 변경하기
df.index=['변경할인덱스명', ...] : 인덱스명 전체 변경하기(행의 갯수와 추가할 인덱스명 갯수가 같아야 함)
df.reindex(['기존인덱스명',....'추가할인덱스명'],fill_value=결측값채울값) :
인덱스명 갯수보다 많으면 결측값으로 채워진 행이 추가된다. 결측값 생략시 NaN(값이 없음)으로 채워진다.
df.columns=['변경할컬럼명', ...] : 컬럼명 전체 변경하기
df.rename(index={"변경전값":"변경후값"},inplace=Ture) : rename 함수로 특정 인덱스명 변경
df.rename(columns={"변경전값":"변경후값"},inplace=Ture) : rename 함수로 특정 인덱스명 변경
df.set_index("인덱스로변경할 컬럼명", inplace=True) : 컬럼을 인덱스로 변경하기
df[생성 할 컬럼명]=df.index : 인덱스값을 컬럼으로 생성하기
df.reset_index(inplace=True) : 인덱스를 첫번째컬럼으로 변경하기
df.T : 전치행렬(행과 열을 바꾸기)
df.fillna(method="ffill") : 결측값을 앞데이터로 채움
기술적통계
df["컬럼명"].mean() : 특정컬럼의 평균
df.mean()["컬럼명"] : 평균값들 중 인덱스가 특정컬럼인 데이터만 출력
df.loc["인덱스명"] : 특정 index 평균. loc 값 행을 선택. 인덱스 접근
df.sum() : 컬럼별 합계
df.sum(axis=0) : 인덱스별 합계
df.max() : 컬럼별 최대값
df["컬럼명"].max() : 특정컬럼에서 최대값
df.min() : 컬럼별 최소값
df.median() : 컬럼별 중간값
df.std() : 컬럼별 표준편차
df.var() : 컬럼별 분산
df.corr() : 데이터 상관계수(컬럼간의 관계를 수치로 표시)
df[["컬럼명","컬럼명"]].corr() : 특정 컬럼간의 데이터 상관계수(컬럼간의 관계를 수치로 표시)
df.describe() : 기술통계 정보(숫자값만 조회)
df.describe(include=all) : 모든 데이터 조회
df.count() : 데이터의 레코드 건수 조회-결측데이터는 제외
df["컬럼명"].count() : 특정컬럼의 레코드 건수 조회 - 결측데이터는 제외
df.value_counts() : 컬럼의 값별로 건수 조회
df.컬럼명.value_counts() : 특정컬럼의 값별로 건수 조회
복사하기
데이터프레임 원본 객체명 = df1 / 복사객체명 = df2
df2 = df1 : 얇은복사(원본 변경시 같이 변경됨. 동일한 객체)
df2 = df1[:] : 깊은복사(원본과 다른 객체. )
df2 = df1.copy() : 깊은복사
정렬하기
sort_index(정렬기준, inplace=여부) : 인덱스명으로 정렬
sort_values(by='기준컬럼명', 정렬기준, inplace=여부) : 기준 컬럼을 설정하여 컬럼값으로 정렬
정렬 속성들
ascending=True(생략가능) : 오름차순정렬
ascending=False : 내림차순정렬
inplace=True : 정렬을 해도 inplace=True를 넣지 않으면 객체 자체가 변경 되지는 않는다.
'프로그래밍언어 > Python' 카테고리의 다른 글
[Python] 데이터 시각화 - 그래프 (0) | 2022.01.12 |
---|---|
[Python] seaborn 모듈 (0) | 2022.01.12 |
[Python] Numpy 모듈 (0) | 2022.01.11 |
[Python] 정규표현식(re 모듈) (0) | 2022.01.02 |
[Python] 예외 처리 (0) | 2021.12.29 |