본문 바로가기

Pandas

(165)
판다스 - 미국 신생아 이름 : 이름의 성별 변화 https://steadiness-193.tistory.com/85 판다스 - 신생아 이름 (전처리) 데이터 불러오기 신생아 이름에 관련된 데이터는 메모장에 쉼표로 구분되어 있으며 연도별로 파일이 구성되어 있다. 이렇게 2010년까지 있다. 2002년의 메모장을 살펴보면 이름,성별,출생 수 이렇 steadiness-193.tistory.com 위 포스팅 끝부분에 얻어낸 top1000 데이터프레임을 이용한다. 예전에는 남자 이름으로 선호되던 이름이 시간이 지날수록 여자 이름으로 사용되는 경우를 보자 대표적으로 Lesley, Leslie라는 이름이 그렇다. 우선 lesl로 시작하는 이름을 포함하는 목록을 만들어야 한다. 대소문자 구별을 피하기 위해 우선 lower함수를 적용하고 str.contains()를 ..
판다스 - 인덱스, 컬럼(열) 이름 변경 : rename 데이터 만들기 행 인덱스 이름 변경 - DataFrame.rename({기존 인덱스: 새 인덱스}, axis=0) - DataFrame.rename({기존 인덱스: 새 인덱스}, axis='index') - DataFrame.rename(index={기존 인덱스: 새 인덱스}) 열 이름 변경 - DataFrame.rename({기존 컬럼명: 새 컬럼명}, axis=1) - DataFrame.rename ({기존 컬럼명: 새 컬럼명}, axis='columns') - DataFrame.rename (columns={기존 컬럼명: 새 컬럼명}) 행 인덱스 이름 변경 DataFrame.rename({기존 인덱스: 새 인덱스}, axis=0) DataFrame.rename({기존 인덱스: 새 인덱스}, axis..
판다스 - reindex를 활용한 멀티인덱스 컬럼(열) 추출 https://steadiness-193.tistory.com/89 판다스 - reindex() reindex() 메서드를 사용하면 데이터프레임의 행/열 인덱스를 새로운 배열로 재지정할 수 있다. 기존 객체를 변경하지 않고 새로운 데이터프레임 객체를 반환한다. 데이터 생성하기 위 df의 (행)인� steadiness-193.tistory.com 위 포스팅의 활용 데이터 불러오기 위 데이터프레임은 컬럼이 이중으로 되어있다. 만약에 1880년, 1881년의 여자 / 남자별 컬럼을 얻고 싶다면 어떻게 할까? 컬럼명으로만 해도, xs 인덱서로 해도 에러가 나온다. 한번에는 안되고 반복 작업 이후에 concat을 이용해야 한다. 하지만 이는 너무 귀찮으니 이때 활용하는 것이 reindex이다. reindex를 활..
판다스 - reindex() reindex() 메서드를 사용하면 데이터프레임의 행/열 인덱스를 새로운 배열로 재지정할 수 있다. 기존 객체를 변경하지 않고 새로운 데이터프레임 객체를 반환한다. 데이터 생성하기 위 df의 (행)인덱스는 r1, r2, r3이다 이를 바꾸려면 새로운 배열을 reindex에 넣어준다. 기존 데이터프레임에 존재하지 않는 행 인덱스가 새롭게 추가되는 경우 그 행의 데이터 값은 NaN이 된다. fill_value NaN 대신에 유효한 값을 넣기 위해선 fill_value 옵션에 원하는 값을 넣어준다. 사실 reindex는 행이나 컬럼 추출할 때도 활용할 수 있다. reindex로 행 추출 reindex(기존 인덱스) 기존에 있는 인덱스를 넣어주면 행 추출처럼 된다. 사실 loc를 이용해 동일한 결과를 낼 수 있..
판다스 - 미국 신생아 이름 : 마지막 글자의 변화 https://steadiness-193.tistory.com/85 판다스 - 신생아 이름 (전처리) 데이터 불러오기 신생아 이름에 관련된 데이터는 메모장에 쉼표로 구분되어 있으며 연도별로 파일이 구성되어 있다. 이렇게 2010년까지 있다. 2002년의 메모장을 살펴보면 이름,성별,출생 수 이렇 steadiness-193.tistory.com 위 포스팅에서 만든 names 데이터프레임을 이용한다. 여기서 마지막 글자의 변화가 어떻게 바뀌었는지 알아보자 이를 위해 마지막 글자를 담은 시리즈를 만든다. 이 시리즈의 name이 기존 컬럼의 name과 겹칠 수 있으니 last_letter로 이름을 바꿔준다. 이제 위 시리즈를 이용해서 피벗테이블을 만들어보자 last_letters 시리즈로 인덱스를 주었고 피벗테..
판다스 - 미국 신생아 이름2 : 유행 분석, 이름 사용 경향 https://steadiness-193.tistory.com/85 판다스 - 신생아 이름 (전처리) 데이터 불러오기 신생아 이름에 관련된 데이터는 메모장에 쉼표로 구분되어 있으며 연도별로 파일이 구성되어 있다. 이렇게 2010년까지 있다. 2002년의 메모장을 살펴보면 이름,성별,출생 수 이렇 steadiness-193.tistory.com 위 포스팅에서 전처리한 데이터를 가져와 유행 분석을 해보자 우선 연도와 이름에 대한 출생 수(합)를 피벗테이블로 만들면 이름이 너무 많으니(6868 컬럼) 이 중에서 몇개의 이름만 뽑아, (John, Harry, Mary, Marilyn) 그래프로 나타내면 아래와 같이 나온다. 위 4개의 이름은 유행 때는 반짝하다가 점점 인기가 사그라드는 것을 볼 수 있다. 다양한..
판다스 - 미국 신생아 이름 : 전처리 데이터 불러오기 신생아 이름에 관련된 데이터는 메모장에 쉼표로 구분되어 있으며 연도별로 파일이 구성되어 있다. 이렇게 2010년까지 있다. 2002년의 메모장을 살펴보면 이름,성별,출생 수 이렇게 되어있다. 데이터를 불러와 합치기 위해 glob를 불러온다. babynames 폴더에 있는 모든 경로를 paths에 담아온 뒤 파일명에 있는 연도수를 이용해서 데이터프레임을 df_list에 차곡히 쌓은 다음 pd.concat을 이용하여 names라는 최종 데이터프레임을 만든다. 피벗 테이블로 살펴보기 연도와 성별에 따른 출생 수를 볼 수 있다. 이를 시각화해서 보면 1940년대부턴 남아의 출생 수가 계속 더 높아짐을 확인할 수 있다. 각 연도/성별별 이름이, 연도/성별별 전체 출생수에서 차지하는 비율 확인 우선..
판다스 - 시간 범위 수정하고 데이터 밀어내기 : date_range, first_valid_index, shift 데이터 불러오기 에볼라 바이러스에 대한 데이터이다. 각 나라별 발생 케이스가 언제부터인지 입력되어 있다. 이를 그래프로 보자 우리가 보고자 하는 것이 에볼라의 확산 속도라면 출발선이 같아야 비교가 가능할 것이다. 다만 원래 데이터프레임의 일자도 구멍이 난 부분이 많다. 따라서 인덱스부터 다시 설정해야 한다. 기존의 데이터프레임은 2014년 3월 22일부터 2015년 1월 5일까지 총 122행이지만 원래대로라면 290일이 맞다. 이제 새로운 인덱스로 다시 인덱스를 설정하자. 이제 290행으로 잘 맞춰졌으니 각 컬럼별로 2014년 3월 22일 행에 첫 데이터가 나올 수 있게 옮겨야 한다. 이는 첫 발생일에서 각 데이터가 처음 입력된 날을 빼면 된다. 자세한 사용법은 아래의 포스팅 참조 https://stea..