본문 바로가기
728x90
반응형

전체 글316

[복습] 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. 18.
[실습문제] 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를 멀티 인덱스로 설정하고 .. 2024. 1. 18.
[복습] 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. 17.
[실습문제] 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로 치환해두.. 2024. 1. 17.
[복습] Python fillna (NA치환) emp.fillna(value, method, axis = 0) 위와 같은 데이터프레임을 설정하자. 1) 특정 값으로의 치환 모든 NA에 같은 값을 치환하려면 위와 같은 방법을 취하면 된다. 2) 컬럼별 서로 다른 값으로 치환 위와 같은 방법으로 진행하면 각 컬럼별 치환값을 서로 다르게 전달할 수 있다. 3) 이전/이후 값 치환 axis = 0이므로 method = 'ffill' 옵션을 사용하면 이전 행의 값을 가져온다. 즉 이전 행의 값으로 치환된다. method = 'bfill' 옵션을 사용하면 이후 행의 값으로 치환된다. 위 데이터프레임은 이후 값을 가져올 것이 없어서 치환이 되지 않았다. axis = 1 이므로 이후 컬럼의 값으로 치환된다. 연습문제를 풀어보자. subway2.csv 파일을 읽고 .. 2024. 1. 16.
[복습] 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가 포함된 행을 제거한다. 여러.. 2024. 1. 16.
[복습] Python numpy / pandas 수학통계 함수(메서드) 차이 1. 분산/표준편차 기본 수식 차이 다음과 같이 변수가 선언되었다. numpy로 분산을 구한 것과 pandas에서 분산을 구한 값이 다르다. 그 이유는 numpy는 수학적 분산을 구한 것이고 (편차 제곱의 합을 n으로 나눔), pandas는 통계적 분산을 구한 것이다(편차 제곱의 합을 n-1로 나눔). 따라서 분석기사에서 분산을 구하려면 pandas의 값으로 구하여야 한다. 하지만 numpy에서도 통계적 분산을 구하는 방법이 있다. ddof 가 자유도 옵션인데 default가 0으로 되어있다. 따라서 이 옵션을 1로 넣어주면 통계적 분산을 구할 수 있다. 반대로 pandas에서도 수학적 분산을 구할 수 있다. 마찬가지로 자유도 옵션이 1이 default인데 0으로 바꿔주면 수학적 분산을 구할 수 있다. .. 2024. 1. 16.
[복습] Python 결측치 확인(isnan, isnull), 수정(fillna), 삭제(dropna) 결측치 - 잘못 입력되거나 연산된 값을 표현 - numpy에서 nan으로 표현 1. 확인 1) np.isnan 이런 데이터가 있다고 하자. s1에 isnan 함수를 사용하면 에러가 난다. s2에 isnan 함수를 사용하면 출력이 잘 된다. 이렇게 되는 이유는 isnan은 문자형 NA는 체크를 하지 못하며 숫자형 NA에 대해서만 체크가 가능하다. 참고로 NA는 Series 에서 실수 타입이지만 문자형과 같이 쓰이면 문자가 된다. 2) pd.isnull / isnull 메서드 pd.isnull은 문자형 NA에 대해서도 체크가 가능하다. 상수 하나에 대해서 NA를 체크하려면 pd.isnull()함수를 사용하여야 한다. NA.isnull은 에러가 난다. 데이터 프레임에 대해서 각 원소별 NA 값을 확인할 수 있.. 2024. 1. 16.
[복습] Python index / column 삭제(drop 메서드) df1.drop(labels, # 삭제할 이름(위치값 전달은 불가함) axis = 0, # 모든 axis는 0이 default. 삭제 방향 level = 0, # multi index의 level inplace = False) # False가 default. 원본을 대체할 것인지 여부. (원본 즉시 수정 여부) 위에서 level의 의미는 다음과 같다. 선생님 필기인데, A가 level = 0이고 , 2001, 2002가 level =1 이 된다. 글로 설명하기 어려워서 그림 첨부. 예) emp 에서 HIREDATE 컬럼 제거 예) emp에서 SCOTT 행 제거 drop에서 위치값 전달 불가인데 행삭제가 되는 이유는 index가 현재 이름이자 위치값이므로 전달이 가능한 것이다. 또는 아래와 같이 해결할 수.. 2024. 1. 16.
[복습] Python index object 수정(rename 메서드) index object 수정(rename 메서드) - index object : 행의 정보(index), 컬럼 정보(columns) - pandas에서는 index object 라는 자료구조를 따로 생성 - 일부 수정 불가(read-only 객체) - Series 자료구조와는 다른 자료구조이므로 Series에서 호출가능한 메서드가 호출되지 않을 수 있음 예) 아래 데이터프레임 마지막 컬럼을 60세이상 으로 수정하여라 type를 해보면 index 객체라고 출력이 된다. index나 column을 덮어 쓰는 것은 가능하지만 위처럼 일부 수정은 불가하다(read-only 객체이기 때문). 덮어쓰는 것은 변수 재생성 의미이므로 가능한 것이다. 해결 1) index object 가 아닌 상태에서 수정 후 다시 덮.. 2024. 1. 16.
[실습문제] 2024. 1. 15.(월) (2문제) 1. student.csv 파일을 읽고 1) 1, 2학년 학생의 몸무게의 평균 출력 2) ID 컬럼에 숫자 0을 포함하는 사람의 이름, ID, 학년 출력 먼저 스칼라 테스트이다. map + lambda로 하나씩 fetch해주므로 따라서, 2. test3.txt 파일을 읽고 1) 다음과 같은 데이터프레임 형태로 변경 20대 30대 40대 50대 60세이상 2000년 7.5 3.6 3.5 3.3 1.5 2001년 7.4 3.2 3.0 2.8 1.2 2002년 6.6 2.9 2.0 2.0 1.1 .......................................................... 2011년 7.4 3.4 2.1 2.1 2.7 2012년 7.5 3.0 2.1 2.1 2.5 2013년 7.9 .. 2024. 1. 16.
[복습] Python 수학/통계 함수 및 메서드 , 누적 연습문제(5문제) 포함 1. 기본함수 round(1.23) # 스칼라에 대해서만 연산이 가능함 round([1.23, 2.45]) # 여러 개의 연산은 불가함(스칼라에 대해서만 연산 가능) 2. math / statistics 모듈 함수 / 메서드 import math dir(math) 그러나 math.trunc([1.23, 2.45]) 또한 불가하다. 스칼라에 대해서만 연산이 가능하다. 기본이나 math 모듈에서 제공하는 함수들은 벡터 연산 기능을 가지고 있지 않다. 그래서 여러 개에 대한 동시 처리가 불가하다. 3. numpy / pandas 모듈 함수 / 메서드(벡터 연산 가능) - 벡터 연산 가능 - 축 전달 가능(axis) 몇 개를 테스트 해보자. 그러나 pd.round(1.23)은 불가하다. pd에서는 round를 .. 2024. 1. 15.
[복습] Python 형 변환 함수 / 메서드 형 변환 함수 / 메서드 - 문자 → 숫자 - 숫자 → 문자 등의 데이터 타입 변경 1. 형 변환 함수 - 기본 제공(스칼라에만 적용 가능) - str, int, float (날짜변환 함수는 없음) 스칼라에 대하여 위와 같이 형 변환이 가능하다. 그러나 int(['1', '2']) 또는 int(Series ['1', '2'] ) 처럼은 불가하다. 즉 리스트나 시리즈에 대한 형 변환은 불가하다. 2. 형 변환 메서드 - numpy, pandas 에서 제공(array, Series, DataFrame) - 여러 값을 갖는 객체에 전체 적용 - astype('int') 예) 아래 시리즈를 숫자로 형 변환하여라. s1 = Series(['1', '2', '3']) int(s1)은 불가능하다. 다음과 같이 두 가.. 2024. 1. 15.
[복습] Python 자료구조(3) (데이터프레임) 1. 생성 데이터 프레임 생성 방법이다. 위 방법은 에러가 난다. ValueError : All arrays must be of the same length. 즉 length가 다른 데이터프레임은 구성이 되지 않는다. 각 key 길이가 같아야 한다. 이렇게 key 길이가 같아야 생성이 된다. 이렇게도 데이터프레임이 생성이 된다. 2. 중요 메서드 dtypes 메서드를 사용하면 각 컬럼 별 데이터 타입을 확인할 수 있다. 위 데이터프레임은 a컬럼 b컬럼 모두 interger로 구성되어있다. shape 메서드를 사용하면 n x m 의 형태를 알 수 있으며 (3, 2)로 출력되는 것을 보아 3행 2열 구조이다. 따라서 데이터 프레임의 행을 출력하기 위해서는 df1.shape[0] , 열을 출력하기 위해서는 d.. 2024. 1. 15.
[실습문제] 2024. 1. 12.(금) (2문제) 1. 연령별실업율_40-49세.csv 파일을 읽고 뒤에 잘린 옵션은 encoding = 'cp949' 이다. 1) 월 컬럼의 값을 1월, 2월, 3월, ...., 12월로 변경 현재 월 컬럼이 이렇게 정의되어 있다. 두 가지 방법으로 풀이해보자. sol1) for sol2) map + lambda 2) 월컬럼을 인덱스로 설정 후, 모든 값에 대해 소수점 둘 째 자리로 표현하여 df2에 저장 set_index로 index 설정하는 방법은 외부 객체의 index는 불가하다. 아래와 같이 index 하는 방법도 있다. index 메서드를 활용하면 외부 객체도 index 설정이 가능하지만 이 방법은 위와 같이 정보의 중복이 발생한다. 따라서 중복된 컬럼을 삭제하여야 하므로 내부 자료를 이용한다면 첫 번째 방법으.. 2024. 1. 15.
728x90
반응형