Python 266

[Python] Pandas - 피봇테이블과 그룹분석 3

pivot_table groupby와 비슷하게 그룹분석을 하되 pivot table을 반환한다. pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, margins_name='All') data: 분석할 데이터프레임 (메서드일 때는 필요하지 않음) values: 데이터프레임에서 분석할 열 index: 행 인덱스로 들어갈 키 열 또는 키 열의 리스트 columns: 열 인덱스로 들어갈 키 열 또는 키 열의 리스트 aggfunc: 분석 메서드 fill_value: NaN 대체 값 margins: 모든 데이터를 분석한 결과를 오른쪽과 아래에 붙일지 여부 margins_name:..

[Python] Pandas - 피봇테이블과 그룹분석 2

그룹분석 키가 지정하는 조건에 맞는 데이터가 하나 이상으로 데이터 그룹을 이루는 경우, 그룹분석을 사용해 그룹의 특성을 확인해야 한다. 그룹의 특성은 미리 지정한 연산을 이용해 계산한 그룹의 대푯값으로 한다. Pandas에서는 다음과 같은 방식으로 그룹분석을 수행한다. 1. 분석할 시리즈나 데이터 프레임에 groupby 함수를 실행하여 그룹화를 한다. 2. 그룹화한 데이터에 그룹연산을 수행한다. groupby 데이터를 그룹 별로 분류하는 함수로 열 또는 열의 리스트, 행 인덱스를 매개변수로 전달한다. groupby 함수는 그룹 데이터를 나타내는 GroupBy 클래스 객체를 반환한다. GroupBy 객체는 그룹변로 연산할 수 있는 그룹연산 함수를 제공한다. 그룹연산 함수 자주 사용하는 그룹연산 함수는 다음..

[Python] Pandas - 피봇테이블과 그룹분석 1

Pivot Table 데이터 컬럼 중 두 개 컬럼을 각각 행 인덱스, 열 인덱스로 사용하여 데이터를 조회한 것이다. Pandas에서는 pivot 함수에 행 인덱스로 사용할 열, 열 인덱스로 사용할 열, 데이터로 사용할 열을 전달하여 pivot table을 생성할 수 있다. Pandas는 지정한 두 열을 행 인덱스와 열 인덱스로 바꾼 후 각 칸마다 행 인덱스와 열 인덱스가 일치하는 각각의 데이터를 찾아 채운다. 만약 데이터가 없으면 NaN 값을 채운다. pivot 함수 사용 예로 들어 아래와 같은 도시의 연도별 인구 데이터가 있다고 하자. data = { "도시": ["서울", "서울", "서울", "부산", "부산", "부산", "인천", "인천"], "연도": ["2015", "2010", "2005"..

[Python] 시간 연산 (한 달 전 구하기)

개요2022.10.24 - [Python] 날짜/시간 연산 (어제 날짜 구하기)에서 datetime.timedelta를 이용하면 시간 연산이 가능한 것을 알아보았다. 하지만 timedelta는 매개변수로 days, seconds, microseconds, milliseconds, minutes, hours, weeks와 같은 고정적인 단위를 받기 때문에 한 달 전, 1년 전 시각을 구하기에는 적절하지 않다. 그렇다면 기준일로부터 세 달 후는 어떻게 구할 수 있을까?  dateutil 설치datetime 모듈에 대한 익스텐션 중 하나이 dateutil 모듈이 필요하다. 기본으로 제공되는 모듈이 아니기 때문에 별도로 설치를 해야 한다.pip install python-dateutil    dateuitl.r..

Python 2022.12.28

[Python] Pandas - 데이터프레임 합성 2

개요 2022.12.25 - [Python] Pandas - 데이터프레임 합성 1에 이어서 두 개 이상의 DataFrame을 합치는 병합 및 연결 방법을 정리한다. 데이터 연결(concat) 기준 열을 사용하지 않고 데이터를 단순히 연결한다. 기본적으로 위/아래로 데이터 행을 연결하며, 인덱스 값 중복이 발생할 수 있다. Series 연결 s1 = pd.Series([0, 1], index=['A', 'B']) s2 = pd.Series([2, 3, 4], index=['A', 'B', 'C']) s1 s2 pd.concat([s1, s2]) # 실행 결과 A 0 B 1 dtype: int64 A 2 B 3 C 4 dtype: int64 A 0 B 1 A 2 B 3 C 4 dtype: int64 연결할 ..

[boto3] S3 내 지정한 경로 내의 하위 경로 조회

개요 aws cli로 s3 ls를 했을 때, 지정한 prefix에 존재하는 subprefix 정보를 boto3을 통해 얻고 싶다. 방법을 정리한다. client.list_objects_v2 버킷에 존재하는 객체의 일부 또는 전체(최대 1000개)를 반환한다. 조회할 버킷의 이름(Bucket), 조회할 prefix를 지정해야 한다. response = client.list_objects( Bucket='string', Delimiter='string', EncodingType='url', Marker='string', MaxKeys=123, Prefix='string', RequestPayer='requester', ExpectedBucketOwner='string' ) response 예시 { 'IsTr..

Python 2022.12.26

[Python] Pandas - 데이터프레임 합성 1 (merge / join)

개요 두 개 이상의 DataFrame을 합치는 병합 및 연결 방법을 정리한다. DataFrame 병합(merge) 두 개의 DataFrame이 공통으로 가진 열이나 인덱스를 기준으로 테이블을 합친다. 기준이 되는 열, 또는 행 데이터를 Key라고 한다. 예로 들어 아래와 같은 두 개의 DataFrame이 있다고 하자. df1 = pd.DataFrame({ '고객번호': [1001, 1002, 1003, 1004, 1005, 1006, 1007], '이름': ['둘리', '도우너', '또치', '길동', '희동', '마이콜', '영희'] }, columns=['고객번호', '이름']) df2 = pd.DataFrame({ '고객번호': [1001, 1001, 1005, 1006, 1008, 1001], '..

[Python] Pandas - 데이터프레임 인덱스 조작 2

개요 2022.12.23 - [Python] Pandas - 데이터프레임 인덱스 조작 1에 이어 DataFrame의 index를 다루는 방법을 정리한다. 다중 인덱스가 있는 경우의 인덱싱 DataFrame이 다중 인덱스를 가질 때는 튜플 형식으로 인덱싱해야 한다. 예로 들어 아래와 같은 DataFrame이 있다고 하자. np.random.seed(0) df3 = pd.DataFrame(np.round(np.random.randn(5, 4), 2), columns=[["A", "A", "B", "B"], ["C1", "C2", "C1", "C2"]]) df3.columns.names = ['Cidx1', 'Cidx2'] df3 # 실행 결과 Cidx1 A B Cidx2 C1 C2 C1 C2 0 1.76 0..

[Python] Pandas - 데이터프레임 인덱스 조작 1

개요 DataFrame의 index 다루는 방법을 정리한다. 데이터프레임 인덱스 설정 및 제거 DataFrame에 index로 들어가야 하는 데이터가 일반 데이터 열에 들어가 있거나, 데이터 열에 들어가야 하는 값이 index로 들어가 있는 경우가 있을 수 있다. 이련 경우 set_index, reset_index 함수를 이용해 index와 일반 데이터 열을 교환할 수 있다. set_index 행 인덱스를 제거하고 데이터 열 중 하나를 인덱스로 설정한다. 매개변수로 행 인덱스로 설정한 열을 지정한다. 예로 들어 아래 데이터는 index로 들어가야 하는 데이터가 C1 열에 들어가 있다. np.random.seed(0) df1 = pd.DataFrame(np.vstack([list('ABCDE'), np.r..

[Python] Pandas - 데이터 입출력(JSON)

개요 2022.12.15 - [Python] Pandas - 데이터 입출력(CSV)에 이어서 JSON 데이터를 읽고 쓰는 방법을 정리한다. JSON 데이터 읽기 pandas.read_json 함수를 이용해 JSON 파일 또는 JSON 문자열로부터 데이터를 읽어 들일 수 있다. JSON 문자열 읽기 json_str = """{ "votes": { "funny": 2, "useful": 5, "cool": 1 }, "user_id": "harveydennis", "name": "Jasmine Graham", "url": "http://example.org/user_details?userid=harveydennis", "average_stars": 3.5, "review_count": 12, "type": "..