Python/NumPy | Pandas 72

[Python] 빈 DataFrame 생성 / 확인

개요 DataFrame을 다루다보니 빈 DataFrame을 생성하거나 DataFrame이 비어있는지 여부를 확인해야 하는 경우가 있었다. 방법을 간단히 정리해둔다. 빈 DataFrame 생성 DataFrame을 생성할 때는 컬럼과 데이터를 딕셔너리로 정의해서 생성자로 전달했다. 다만 빈 DataFrame을 생성할 때는 데이터 없이 생성자를 호출하면 된다. df = pd.DataFrame() print(df) # 실행 결과 Empty DataFrame Columns: [] Index: [] 컬럼이 있는 빈 DataFrame 생성 데이터는 없지만, 컬럼을 지정하여 DataFrame을 생성해야 할 때는, columns 매개변수로 컬럼 이름만 전달한다. df = pd.DataFrame(columns=['날짜']..

[Python] Pandas - 시계열 자료 다루기 3

dt datetime 자료형을 다룰 때는 dt 접근자를 이용해 datetime 자료형이 가진 속성과 메서드를 사용할 수 있다. 아래의 데이터를 예로 들어 정리한다. s = pd.Series(pd.date_range("2020-12-25", periods=100, freq="D")) s # 실행 결과 0 2020-12-25 1 2020-12-26 2 2020-12-27 3 2020-12-28 4 2020-12-29 ... 95 2021-03-30 96 2021-03-31 97 2021-04-01 98 2021-04-02 99 2021-04-03 Length: 100, dtype: datetime64[ns] 년, 월, 요일 정보 얻기 dt 속성을 통해 year, month, day, weekday 정보를 얻..

[Python] Pandas - 시계열 자료 다루기 2

resample 시간 간격을 재조정하는 함수이다. 시간 구간이 작아지면 데이터 양이 증가하여 업 샘플링이라고 하고, 시간 구간이 커지면 데이터 양이 감소하여 다운 샘플링이라고 한다. 다운 샘플링 예로 들어 아래와 같은 일자별 데이터가 있다고 하자. ts = pd.Series(np.random.randn(100), index=pd.date_range( "2018-1-1", periods=100, freq="D")) ts.tail(10) # 실행 결과 2018-04-01 0.422802 2018-04-02 1.948651 2018-04-03 -0.567525 2018-04-04 1.592544 2018-04-05 1.947456 2018-04-06 0.966879 2018-04-07 0.136668 2018..

[Python] Pandas - 시계열 자료 다루기 1

시계열 자료 인덱스가 날짜, 시간이 데이터를 시계열 자료라고 한다. Pandas에서 시계열 자료를 생성하기 위해서는 특정한 순간에 기록된 타임스탬프 형식의 자료를 다루기 위한 DatetimeIndex 자료형으로 만들어야 한다. 인덱스인 타임스탬프가 일정한 간격일 필요는 없다. DatetimeIndex는 아래와 같은 함수를 이용해 생성한다. to_datetime 날짜, 시간을 나타내는 문자열을 datetime 자료형으로 변환한 뒤 Datetimeindex를 생성한다. date_str = ["2018, 1, 1", "2018, 1, 4", "2018, 1, 5", "2018, 1, 6"] idx = pd.to_datetime(date_str) idx # 실행 결과 DatetimeIndex(['2018-01-..

[Python] Pandas - DataFrame column 추가

개요 pandas DataFrame에 column 추가하는 방법을 정리한다. 일반적인 방법 Dictionary와 비슷하게 대괄호에 column 이름을 지정하여 값을 초기화한다. 추가되는 열은 가장 오른쪽에 위치한다. df1 = pd.DataFrame({ '고객번호': [1001, 1002, 1003, 1004, 1005, 1006, 1007], '이름': ['둘리', '도우너', '또치', '길동', '희동', '마이콜', '영희'] }, columns=['고객번호', '이름']) df1 df1['금액'] = 0 df1 # 실행 결과 고객번호이름 01001둘리 11002도우너 21003또치 31004길동 41005희동 51006마이콜 61007영희 고객번호이름금액 01001둘리0 11002도우너0 210..

[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] 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 연결할 ..

[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], '..

1 2 3 4 5 6 7 8