본문 바로가기

728x90
반응형

분류 전체보기

(315)
[실습문제] 2024. 1. 18.(목) (1문제) 1. delivery.csv 파일을 읽고 1) 일자별 통화건수 총 합을 구하시오. series로 출력된다. groupby가 일자를 index로 넣기 때문이다. 2) 이전일자 대비 통화건수 증가율을 계산하여 통화건수증가율 컬럼에 추가하시오. 이렇게 하면 s2에 s1에 대하여 하나씩 밀린 값이 저장된다. 처음 값은 똑같은 값으로 넣도록 하였다. 그냥 냅다 빼버리면 리턴 결과가 이상하게 나온다. 시리즈는 key가 같은 값끼리 연산하기 때문이다. index 메서드를 사용하여 키 값을 똑같이 주면 두 시리즈의 차를 구할 수 있다. 따라서 위와 같이 계산하면 되겠다. 3) 시도별 시군구별 통화건수 총합을 구하시오. 또는, 이렇게 표현이 가능하다. 4) 시간대별 통화건수가 가장 많은 음식업종을 구하시오. Sol1) ..
[복습] Python 파이썬에서의 join(pd.merge) (1) - R의 join과 유사 - 세 객체 이상의 조인 불가 - non-equi join 불가 pd.merge(left, # 첫 번째 join 대상(dataframe, series) right, # 두 번째 join 대상(dataframe, series) how = inner, # join 방법(inner, left, right, outer(full outer join), cross) on, # join key (양쪽에 같은 이름으로 있을 경우) left_on, # 첫 번째 대상의 join key(양쪽에 같은 이름으로 있지 않을 경우) right_on, # 두 번째 대상의 join key(양쪽에 같은 이름으로 있지 않을 경우) left_index = False, # 첫 번째 대상의 join key로 index..
[복습] Python DBMS 연동 파이썬은 메모리만 갖고 있는 소프트웨어로 따라서 디스크 공간이 없다. 데이터를 저장하려면 외부 파일에 저장하여야 한다. 즉 파이썬은 저장공간(디스크)이 있는 SW가 아니므로 파이썬에서 만든 객체는 반드시 외부 파일 혹은 DBMS에 저장될 필요가 있다. 1. 데이터 불러오기 - 외부 파일: pd.read_csv emp = pd.read_csv('emp.csv') - DBMS 데이터: 각 DBMS 연동 후 데이터 가져오기 2. 데이터 저장 - 외부 파일: pd.read_csv emp.to_csv('emp_20240122.csv', index = False) emp.to_csv('emp_20240122.txt', index = False) - DBMS 데이터: 각 DBMS 연동 후 데이터 저장 ORACLE D..
[복습] Python 파이썬에서의 groupby 연산 그룹연산이 필요한 경우에 대하여 파악하여보자. 예) emp.csv 파일을 읽고 부서별 최대 급여자 이름을 출력해보자. 이런식으로 매 행 돌아가는 과정이 transform 과정이다. SQL로 따지면 상호연관 서브쿼리이기도 하다. 여기까지가 transform의 원리이다. 각 행마다의 그룹 연산 결과를 보장해준다. 즉 각 행마다 그룹연산 결과를 붙여주는 것이다. 여기서 SAL이랑 MAX_SAL이랑 같냐 라는 것을 R에서는 ddply의 subset이 계산을 했다. 이렇게 최종적으로 부서별 최대 급여자를 호출하게 된다. in sql) 상호연관 서브쿼리 SELECT * FROM EMP E1 WHERE SAL = (SELECT MAX(SAL) FROM EMP E2 WHERE E2.DEPTNO = D1.DEPTNO) ..
[복습] Python wide data에서의 최대/최소 index값 추출(idxmax(), idxmin()) - pandas에서 제공하는 idxmax, idxmin 메서드는 axis를 사용하여 각 행별/열별의 최대와 최소를 갖는 index나 column값을 리턴한다. 이에 대한 예시는 아래 링크의 문제 2의 3)에 실려있다. https://metime.tistory.com/279 - numpy 에서 제공하는 argmax, argmin 메서드는 axis를 사용하여 각 행별/열별의 최대와 최소를 갖는 위치값을 리턴한다. R에서 위치를 리턴해주는 which.max(), which.min()과 같다. 예) 위 링크의 2번 문제의 emp3 데이터프레임에서 index(column)을 제외한 값들만 array로 리턴 위치값이 출력된다.
[실습문제] 2024. 1. 17.(수) (2문제) 1. multi_index_ex2.csv 파일을 읽고 1) 멀티 인덱스, 멀티 컬럼 설정 index 설정) Unnamed:0 컬럼을 보면, 1_A, 1_B, 1_C, 2_A, 2_B, 2_C, .... 이렇게 자료가 있다. 이를 1을 상위레벨, A, B, C를 하위레벨로 바꿀 수 있을 것이다. 그렇다면 1과 알파벳을 우선 분리하여보자. 위처럼 분리하면 TypeError: 'float' object is not subscriptable 이라는 에러메시지가 뜬다. 이는 거의 NA 때문에 나오는 오류이다. NA는 float 타입이기 때문이다. if문을 써서 NA일 경우 무시하는 것도 좋지만 어차피 없앨 컬럼이기 때문에 NA도 문자열로 바꿔버린 후 처리하자. 위에서 구분한 a1, a2를 멀티 인덱스로 설정하고 ..
[복습] Python multi-index(1) 파이썬은 여러 레벨의 index, column 설정이 가능 가장 상위 레벨부터 0, 1, 2, ... 레벨 숫자 부여하여 지정 레벨 별로 정렬하며 그룹핑이 가능하고 삭제 또한 가능 1. 생성 멀티 인덱스는 아래와 같은 형식의 index 이다. 멀티 컬럼은 아래처럼 설정된 컬럼이다. 설정은 아래와 같이 할 수 있다. df1.index =[[상위레벨], [하위레벨]] df1.set_index = ([상위레벨], [하위레벨]) df1.columns = [[상위레벨], [하위레벨]] 예) index 직접 전달 위와 같은 데이터 프레임을 생성했다면 다음과 같이 멀티레벨 index를 직접 전달할 수 있다. 예) '병원현황.csv' 의 데이터 멀티 레벨 index 설정 잘려서 보이지 않는 부분은 hos = pd.re..
[실습문제] 2024. 1. 16.(화) (3문제) 1. apply_test2.csv 파일을 읽고 각 지점(a~d)별 평균을 구하되, 각 결측치 값은 해당 기간의 최소값으로 대치 후 처리하여라 해당 파일을 처리하기 위하여 name을 index로 처리하고 index를 지우겠다. (본 문제에서 name은 상관 없는 컬럼이므로) 이런 상태로 만들었다. STEP 1) 천 단위 구분기호 삭제 STEP 2) 숫자 변환 시도(astype) → 결측치 처리 대상 확인 sol1) 결측치 처리할 값을 모를 때 → 하나씩 치환 Value Error : invaild literal for int() with base 10 : ' - ' 라는 에러가 뜬다. - 라는 문자가 삽입되어 있다는 의미이다. 문제에서 결측치는 해당 기간의 최소값으로 지정하라고 했으나 일단 NA로 치환해두..
[복습] Python fillna (NA치환) emp.fillna(value, method, axis = 0) 위와 같은 데이터프레임을 설정하자. 1) 특정 값으로의 치환 모든 NA에 같은 값을 치환하려면 위와 같은 방법을 취하면 된다. 2) 컬럼별 서로 다른 값으로 치환 위와 같은 방법으로 진행하면 각 컬럼별 치환값을 서로 다르게 전달할 수 있다. 3) 이전/이후 값 치환 axis = 0이므로 method = 'ffill' 옵션을 사용하면 이전 행의 값을 가져온다. 즉 이전 행의 값으로 치환된다. method = 'bfill' 옵션을 사용하면 이후 행의 값으로 치환된다. 위 데이터프레임은 이후 값을 가져올 것이 없어서 치환이 되지 않았다. axis = 1 이므로 이후 컬럼의 값으로 치환된다. 연습문제를 풀어보자. subway2.csv 파일을 읽고 ..
[복습] Python dropna 메서드(NA를 포함한 행/컬럼 제거) emp.dropna(axis = 0, # 제거방향(0: 행 제거, 1: 컬럼 제거) how = 'any', # NA 제거 방식 ↔ all thresh, # NA수 제한 subset) # NA 체크할 대상 전달 먼저 dropna 메서드 테스트를 위한 아래와 같은 데이터프레임을 셋팅하여보자. df_na.dropna()를 하면 모든 행이 NA를 포함하고 있으므로 아래와 같이 전체 행이 제거가 된다. how = 'any'로 설정되어 있기 때문에 모든 컬럼을 체크하여 NA가 하나라도 포함되어 있으면 해당 행을 제거해버리기 때문이다. how = 'all' 옵션을 주면 모든 값이 NA로 구성된 행만 제거가 된다. subset = 'E' 옵션을 주게 되면 E 컬럼을 체크하여 E컬럼에 NA가 포함된 행을 제거한다. 여러..

728x90
반응형