2021. 9. 2. 21:26ㆍ파이썬/데이터 분석
pandas를 사용해보자.
난 생전 이런 것을 배워본 적이 없다. 많은 부분이 정확하지 않을 것이며 초심자의 입장에서
이해와 정리를 동시에 하기 위해 이 글을 작성한다.

xxxx에 원하는 파일 확장자를 넣으면 된다. tap을 눌러 read_에 어떤 함수가 있는지를 권한다.

이런 식으로 쓰면 된다.2
import pandas as pd
pandas는 주로 pd로 표현한다. pandas는 거의 모든 정형 데이터를 읽어올 수 있다. 정형 데이터란 excel, mysql 등 행과 열로 이루어진 데이터를 말한다.
기본적으로 가장 먼저 하게 될 데이터 읽어오기이다. 위 엑셀 데이터 말고도 csv, json, sql_queryfmf 읽어올 수 있다.
글이 깨져 보일 경우 인코딩 방식을 변경한다. encoding = 'utf-8' -> cp949/ euc-kr

생략되어 있지만 어마어마한게 나왔다;; 직관적으로 볼 때 '2'라고 써져 있는 행을 열로 만들어야 할 것 같다.
df.rename(columns=raw_df.iloc[2],inplace=True)
rename이란 함수를 쓰면 행이든 열의 key값을 쉽게 수정할 수 있다. key값이란 맨 위 행과 맨 왼쪽 열이 딱 봐도 key값이다. 이해가냐? 안 가? 나도 첨에 이해 안갔어~ 암튼 rename은 매개 변수로 행과 열 그리고 대체할 거냐고 묻는 매개 변수를 받는다.
행은 index= , 열은 culumns =이다. 보다시피. 그리고 위에 inplace= True를 하지 않는다면 따로 다른 변수에 저장하지 않는 한 본래 데이터 자체는 수정 되지 않는다. 디폴트값이 false 이기 때문이다!!! 알겠냐

자 근데 보니까 행 중에 0,1,3,23,24,25,26에 저장되어 있는 데이터가 없다. 그럼 열단위든 행단위든 데이터가 몇 개이상 누락되어 있다면 삭제하는 방법으로 짜야겠다.. 근데 딱히 안 떠오른다.. 음 일단 행단위로 반복하는 걸로 가볼까?
for row_index, row in df.iterrows() :
print(row_index)
print(row)
일단 저게 행단위 반복이다. df.iterrows는 행을 리스트로 돌려주는 것 같다. key값과 row로 돌려주는데 저렇게 두 개의 변수로 받아도 되고 하나로 받고 row[0], row[1] 이런 식으로 접근해도 된다.

암튼 이런 식으로 쭉 나온다. 위에 보면 0이 key값이고 밑이 행의 데이터이다. 그냥 누락된 데이터가 존재하는 행을 싹 삭제할까? 하.. 귀찮네.. 에이 그래도 가보자라고 생각했는데 검색해보니 결측치가 몇 개 이상일 경우 그냥 걸러버리는
함수가 있었다.. 역시ㅋㅋㅋ 개꼴~~
df.dropna(thresh=3,inplace = True)
drop은 원래 행을 삭제할 때 쓰는 건데 여기에 na를 붙이면 된다. 매개 변수로는 how='any', thresh=None을 가지고 있다. inplace는 위에서 봤지? True 해줘야 바뀐다 값이. 암튼 how를 사용하면 'all' 이나 'any'를 값으로 넣어 줄 수 있다. all은 전부가 결측치일 때 any는 하나라도 있으면 행을 삭제한다.
그리고 저 리그오브레전드 thresh는 넣어준 int 이상의 결측치가 존재할 때 행을 삭제한다. 꽤 유용하다.

머야 근데 왜 25번째 행은 삭제 안돼? 버근가? 걍 드랍으로 삭제해야겠다 저거;; 머야 드랍으로도 삭제안돼;
와.. 근데 생각해보니까 키값이 혼자 25라서 안된 것일 수도 있겠다.
df.drop(index=25, inplace= True)
inplace를 안했구나.. ㅋㅋㅋ 하니까 사라졌다
근데 이거 그냥 실습데이터라 사실 다 의미없는 데이터긴 한데 일단 이름으로 정렬해보겠다.
import numpy as np
pd.pivot_table(df,index='성명',aggfunc=np.sum)
우선 pd를 불러와서 pivot_table() 함수를 사용한다. 나는 pd부분에 df를 넣었는데 그래도 잘된다. 그리고 df부분 생략해도 문제 없었다. 흠 근데 내가 왜 필기로 이렇게 적어놨지.. 역시 직접 해봐야 됨. 그리고 index 부분이 내가 원하는 열을 넣고 기준이 되는 행의 index가 된다. 그리고 aggfunc는 index가 중복될 경우 어떻게 할 것이냐고 물어보는 것이다.. 사실 중복되면 안되는데.. 동명이인이 되면 어쩌지.. 내일 선생님한테 물어봐야겠다.
아무튼 나는 이름으로 정렬을 했지만 특정 부서나 직위로 피봇테이블을 사용을 하면 유용하게 부서별, 혹은 직위별의 데이터를 활용할 수 있을 것이다.

오늘은 여기까지 해야겠다;; 별거 아닌데 시간 개잡아먹넺 틀린 내용 있으면 지적해주세요!!
'파이썬 > 데이터 분석' 카테고리의 다른 글
| 데이터 분석 기초 : 탐색적 데이터 분석 (EDA, exploratory data analysis)에 대해서 읽어 보자 (0) | 2021.12.23 |
|---|---|
| facebook prophet으로 비트코인 가격 예측해보기 (1) | 2021.12.06 |
| Pandas 시계열 데이터에 빠진 날짜 확인, 날짜 채우기 (0) | 2021.12.04 |
| 2. 데이터 탐색과 빈도 분석 (쭉 읽기 좋음.) (0) | 2021.09.09 |
| 1. 넘파이와 판다스 칸탄 정리 (간단 정리) (0) | 2021.09.08 |