본문 바로가기

728x90
반응형

분류 전체보기

(304)
[복습] Python 집합연산자(union, intersection, difference, np.union1d, np.intersect1d, np.setdiff1d, pd.merge) 파이썬에서의 집합연산자를 살펴보자. 테스트를 위하여 위와 같은 데이터프레임을 만들어두었다. 이 결과는 union all 결과와 같다. 이 결과는 union 결과와 같다. 데이터프레임에서는 union, union all에 대한 메서드나 함수가 없기 때문에 위와 같은 방법을 써야 한다. 1. index object 위의 두 데이터프레임으로 테스트를 해보겠다. index를 변수에 저장한다. 합집합: union 중복을 제거하며, union all이 아닌 union이 리턴된다. index object에서 제공하는 메서드에는 union all은 없다. 교집합: intersection 차집합: difference 차집합은 순서가 중요하다. A-B, B-A가 결과가 다르기 때문이다. 2. numpy 집합연산자 함수 -..
[복습] Python 중복값 처리(unique, duplicated, drop_duplicates) 1. unique - 중복 제거값(distinct value 확인) - 정렬 동반 2. duplicated - 중복 여부를 리턴(boolean) - 중복 여부를 확인하는 용도 처음 값은 맨 처음에 나온 값이므로 중복이 되지 않아 False로 리턴된다. 두 번째 값도 첫 번째와 다른 값이므로 False가 나온다. 그런데 세 번째는 SALESMAN은 두 번째와 값이 같으므로 True로 리턴된다. 위 메서드를 이용하여 unique value를 추출하기 위해서는 다음과 같이 코드를 짜면 된다. unique 메서드가 존재하므로 잘 사용하지는 않을 것이다. 3. drop_duplicates - 중복값 제거 ★ emp.drop_duplicates(subset, # 대상(중복 체크 할 대상). 여러 개 나열 가능(리스..
[복습] Python 데이터 병합(pd.concat) 데이터를 병합하기 위하여 두 데이터 프레임을 가정하였다. 두 데이터프레임을 병합하기 위해서는 concat을 사용할 수 있다. 두 데이터 프레임을 전달할 때에는 위처럼 넣으면 안되고 묶어야 할 대상을 대괄호 안에 넣어야 한다. 위처럼 묶으면 되겠다. axis = 0이 default이므로 행으로 붙여넣기가 된다. pd.concat 함수를 자세히 살펴보자. pd.concat(objs, # 병합할 대상(리스트로 전달) axis = 0, # 병합 방향 join = 'outer', # ignore_index = False) # index 재생성 여부 예) 시리즈의 결합 위와 같은 시리즈를 정의하였다. 시리즈의 원소 추가는 append로는 불가하다. 위처럼 없는 자리를 열어놓고 데이터 삽입을 하는 것은 가능하지만 권..
[복습] Python Series와 DataFrame의 특성(reindex, add, sub, mul, div) 1. 같은 key끼리 연산 아래와 같은 series를 정의하였다. 두 시리즈의 합 연산) 서로 같은 index(key)를 갖는 값끼리 연산 서로 다른 key를 갖는 경우 key의 합집합의 결과를 리턴하기 위해 아래와 같이 각 객체의 모든 key에 대해 reindex 처리 후 연산 → NA 리턴 아래와 같이 처리하면 연산이 가능하다. reindex를 넣고 fillna를 처리 후 연산하는 것이 복잡하면 다음의 메서드를 사용할 수 있다. 위 결과는 s1 + s2와 같다. s1 + s2의 연산 결과에 NA리턴을 방지한다(원래 값 유지) 두 시리즈의 빼기 연산) 두 시리즈의 곱 연산) 두 시리즈의 나누기 연산 add, sub, mul, div 메서드는 사칙연산만 제공하므로 s1.reindex(list('abcde..
[복습] Python 정렬(sort_index, sort_values) 1. sort_index : 컬럼을 재배치 하고 싶을 때 사용 예) emp.csv 를 읽고 column의 abc 순서대로 재배치하여라. 연습문제 병원현황.csv 파일을 읽고 1) 작은 연도 순서대로 정렬하여라. 2) 연도는 오름차순, 분기는 내림차순으로 정렬하여라. 2. sort_values emp.sort_values(by, axis = 0, # 1은 컬럼의 재배치 ascending = True, inplace = False, kind = 'quicksort', na_position = 'last', ignore_index = False) # index 재정렬 SAL에 대하여 정렬(오름차순) index를 재정렬한다. 내림차순 정렬한다. COMM 컬럼에 대하여 오름차순 정렬하는데 NaN을 뒤에 배치한다...
[복습] Python 데이터의 이동(shift) 행, 열의 이동을 할 수 있는 메서드이다(lag, lead). s1.shift(periods = 1 # 가져올 위치 전달 freq = None, # 빈도 axis = 0, # 방향 fill_value = None) # 가져올 값이 없을 때 대체값 s1.shift(1) # 이전값 가져오기 s1.shift(2) # 이전 이전값 가져오기 s1.shift(2, fill_value = 0) # 이전 이전값을 가져오며, 가져올 값이 없을 경우 0으로 대체, 즉 NA 치환값 s1.shift(-1) # 이후값 가져오기 데이터프레임에서의 shift 데이터 프레임을 하나 만들어보았다. 위와 같이 데이터 프레임을 만들 때 columns 부분을 다음과 같이 만들면 더 쉽게 만들 수 있다. 문자열을 list에 넣으면 문자열 특..
[복습] Python 파이썬에서의 SQL문법(pandasql 패키지 sqldf 함수) https://metime.tistory.com/297 위 게시글에서 잠깐 설명했지만 다시 한번 정리하자면, pandasql의 sqldf 함수를 사용하기 위해서는, 제일 처음 사용할 때에는 cmd 창에서 pip install pandasql 로 install한 후에 IDE로 돌아와 import pandasql from pandasql import sqldf 로 모듈을 로드하면 된다. emp 파일을 불러와 SQL 문법을 oracle 표준을 사용하여 쿼리 작성을 해보겠다. sql 문장은 작은따옴표 또는 쌍따옴표 안에 작성하고, 마지막 쿼리처럼 SMITH를 불러오기 위해 작은 따옴표를 사용하는 경우는 쌍따옴표로 쿼리를 감싸주어야 한다. join도 가능하며 ANSI 표준도 지원한다. 예) emp에서 각 직원의 ..
[복습] Python 파이썬에서의 join (index join, outer join)(2) https://metime.tistory.com/293 위의 게시글에 이어서 join을 더 살펴보자. 예) student.csv, exam_01.csv join 시, index를 사용한 join 자료를 불러와 공통 컬럼인 STUDNO 를 index 처리하였다. MergeError: No common to perform merge on. 이라는 에러가 발생한다. 공통 index를 join 할 때에는 그냥 merge만 해서는 안되고 다음의 옵션을 넣어야 한다. index 관련 옵션을 True 로 설정하면 정상 출력된다. index값을 사용하여 두 데이터를 join한 것이다. join 연산 1. pd.merge - equi join, natural join, cross join, outer join 지원 - ..
[실습문제] 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..

728x90
반응형