Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- codingtest
- pytorch
- 머신러닝
- SGD
- 협업 필터링
- 파이썬
- Overfitting
- 추천 시스템
- Cosine-similarity
- 코딩테스트
- recommendation system
- Python
- TF-IDF
- wordcloud
- 분산 시스템
- 코테
- 딥러닝
- selenium
- coursera
- 데이터 엔지니어링
- 백준
- 웹크롤링
- Tensor
- 웹스크래핑
- 추천시스템
- 데이터
- 프로그래머스
- 시각화
- 부스트캠프
- 알고리즘
Archives
- Today
- Total
개발자식
[데이터 분석] Python 데이터 분석 라이브러리, Pandas 본문
1. 데이터 종류
- Structed data (정형 데이터) ex) Relational Database, Spread sheets
- Semi-structured data (반정형 데이터) ex) Html, System logs
- Unstructured data (비정형 데이터) ex) Image, Video
+ Various data collection : ELK Stack 은 한번 영상 참고해서 보기!
2. Pandas 라이브러리
2-0. 라이브러리 호출
import pandas as pd
-> as는 alias라는 뜻으로 pd라고 별명을 짓는다. (표준으로 칭하는 약속(?) 정해져 있음)
2-1. 엑셀 파일 읽기
df =pd.read_excel('animal.xlsx')
-> 파일 경로를 제대로 써줘야 한다.
with open('animals.xlsx', mode="r", encoding="utf-8") as file:
df = pd.read_excel(file)
-> 한글이 깨진다면 위의 명령어 실행
2-2. DataFrame
- 데이터 타입
- pandas.DataFrame() : 파일 그대로 가져온다.
- pandas.Series() : 하나의 열 or 행으로 가져온다. (key 값이 있는 리스트 형식)
- 데이터 확인
- df.head(5) : 처음 5줄 출력
- df.tail(5) : 마지막 5줄 출력
- df.describe() : 각 열의 기술 통계량
- df.info() : 정보 출력
- df.columns : 열 리스트 출력
- df.index : 행 리스트 출력 == 인덱스 리스트
- 결측치(missing data) 다루는 대표적인 방법
- 랜덤하게 채워넣기
- 주변 (행의)값들로 채워넣기
- 열의 대푯값을 계산해서 채워넣기
- 전체 행들을 그룹으로 묶어낸 후 그룹 내 해당 열의 대푯값으로 채워넣기
- 나머지 열들로 머신러닝 예측모델을 만든 후 해당 열의 값을 예측해 채워넣기
- 특정 기준 비율 이상으로 빠져있을 시 해당 열 삭제
- 데이터 꺼내기
- loc : 인덱스 라벨값 기반으로 추출 하는 방법
- iloc : 행이든 열이든 숫자로 인덱싱 하는 방법
df.loc[3] #df의 3행
df.loc[3]['name'] #df의 3행의 컬럼 'name' 값
df.loc[[3,6,8]] #df의 3,6,8 행
df.loc[0:2,"name":"eggs"] #0,1,2 행과 name 컬럼에서 eggs 컬럼까지 (뒤까지 모두 포함,index 아님)
df.iloc[0] # df의 첫번째 행만
df.iloc[:,0] #df의 첫번재 열만
df.iloc[0:5] #df의 첫5개 행만
df.iloc[:,0:5] #df의 첫5개 열만
df.iloc[0:5,1:3] #df의 첫 5개 행과 1,2 열만
df.iloc[[0,1,2,3],[0,2,4]] #df의 0,1,2,3 행과 0,2,4 열만
-> 인덱싱에 따라 반환값이 Series, DataFrame이 될 수 있어 유의해야 함
- str 활용
- cotains() : 문자열 포함 여부 True/False 반환
df["name"].str.contains('ar') # 선택한 df의 name열에 문자열 ar이 포함되어 있는지
sum(df["name"].str.contains("ar")) # sum() 안에 들어가는 반환값이 True/False라서 (=1/0) 셀 수 있다.
df.loc[df["name"].str.contains("ar"),:] # name열에 문자열 ar이 포함된 데이터 모두 출력
- 데이터 꺼내기 (열)
df["name"][1] #name열의 1행(=2번째) (열을 꺼내면 인덱스가 키 값)
df["name"].head() #name열에서 상위 5개 출력
df[["name","hair","feathers"]].head() #name, hair, feathers 열에서 상위 5개 출력, 여러개의 열 출력시 [[]]
- apply 함수
- 엑셀의 매크로 함수처럼 각 열 or 행에 기능을 적용한다. +람다 함수랑 활용 가능
DataFrame.apply(func,
axis=0,
raw=False,
result_type=None,
args=(),
**kwds)
- func : 각 행 or 열에 적용할 기능
- axis : 행 (axis=0) or 열 (axis=)에 따라 함수 적용
- raw : 부울. Series 객체 (raw = False) 또는ndarray 객체 (raw = True)로 전달 된 행 / 열
- result_type : {'expand', 'reduce', 'broadcast', 'None'} axis=1 (열)에만 적용 가능한 연산 출력 유형
- args : 함수 func의 위치 인수
- **kwds : 함수 func의 키워드 인수
- pivot_table
- index를 설정하여 새로운 dataframe 만들기 (엑셀의 pivot table과 유사)
- 열 삭제
del pivot_df['new_hair']
- 행 삭제
pivot_df = pivot_df.drop([3]) #다시 변수에 넣어줘야 적용
- 열 이름 바꾸기
pivot_df.rename(columns = {'eggs':'산란', 'feathers':'깃털'}, inplace=True) # inplace True == 덮어 쓰기
- 열 기준으로 정렬하기
pivot_df.sort_values(by='산란', inplace=True) # 내용(value)을 기준으로 정렬(sort), inplace=True : 덮어 쓰기
pivot_df.sort_values(by='산란', ascending=False, inplace=True) # 내림 차순으로 정렬하기 (기본 값 : 오름차순)
- 복사
- 얕은 복사 : 원본 데이터프레임 같이 변함
- 깊은 복사 : 당시의 데이터프레임 상태만 복사
pivot_df_2 = pivot_df # shallow copy , 얕은 복사
pivot_df_3 = pivot_df.copy() # deep=True, deep copy, 깊은 복사
'Data > Python' 카테고리의 다른 글
[데이터 분석] Seaborn, 통계 자료 분석 (4) (0) | 2022.03.24 |
---|---|
[데이터 분석] Pandas, 통계 자료 분석 (3) (0) | 2022.03.24 |
[데이터 분석] Pandas, 통계 자료 분석 (2) (0) | 2022.03.24 |
[데이터 분석] Pandas, 통계 자료 분석 (1) (0) | 2022.03.23 |
[멋사 AI SCHOOL] Part1. 함수, 파이썬 기능 _0321 (0) | 2022.03.22 |
Comments