데이터 분석 작업을 하다 보면 하나의 데이터프레임을 Excel 파일의 여러 시트에 나누어 저장해야 하는 경우가 자주 발생합니다. 예를 들어, 하나의 데이터프레임을 first_sheet, second_sheet, third_sheet라는 세 개의 시트로 내보낸다고 가정해 보겠습니다. 해결 방법 이 문제는 아래 단계를 따라 해결할 수 있습니다. xlsxwriter 모듈 임포트: Excel 변환을 위해 xlsxwriter 모듈을 사용합니다. 설치되어 있지 않다면 pip install XlsxWriter 명령으로 먼저 설치하세요. 데이터
문제 개요CSV 파일에 다음과 같은 데이터가 저장되어 있고, 이를 pandas.csv라는 이름으로 저장했다고 가정해 보겠습니다.pandas.csvId,Data 1,11 2,22 3,33 4,44 5,55 6,66 7,77 8,88 9,99 10,100마지막 두 레코드(9행과 10행)의 합계를 구하면 결과는 다음과 같습니다.마지막 두 행의 합계: Id 19 Data 199이 문제는 pandas 라이브러리를 활용해 여러 가지 방법으로 해결할 수 있습니다. 아래에서 대표적인 세 가지 방법을 살펴보겠습니다. 방법 1: tail()
pandas 라이브러리를 사용하면 Excel 파일의 데이터를 손쉽게 불러와 원하는 열만 추출할 수 있습니다. 이 글에서는 첫 번째 열과 마지막 열의 모든 행을 읽어 출력하는 Python 프로그램을 단계별로 살펴보겠습니다.사전 준비이 예제에서는 로컬 환경에 pandas.xlsx라는 이름의 Excel 파일이 저장되어 있다고 가정합니다. 파일에는 id와 productionYear 같은 열이 포함되어 있습니다.해결 방법다음 단계를 따라 문제를 해결할 수 있습니다.pd.read_excel() 메서드를 사용하여 pandas.xlsx 파일의 데
개요Pandas의 to_html() 메서드를 활용하면 CSV 파일로 저장된 데이터프레임을 손쉽게 HTML 테이블 형식으로 변환할 수 있습니다. 이 글에서는 pandas.csv 파일이 이미 준비되어 있다고 가정하고, 이를 HTML 파일로 내보내는 전체 과정을 단계별로 살펴보겠습니다.해결 방법데이터프레임을 HTML 파일로 내보내려면 아래 단계를 순서대로 따르면 됩니다.1단계: CSV 파일 읽기read_csv() 메서드를 사용해 CSV 파일을 데이터프레임으로 불러옵니다.df = pd.read_csv(pandas.csv)2단계: HTML
pandas의 date_range와 resample 메서드를 활용하면 주간 단위 시계열 데이터를 손쉽게 생성하고, 이를 월말(month-end) 빈도로 재표본화하여 각 월의 최댓값을 구할 수 있습니다. 이 글에서는 그 과정을 단계별로 살펴보겠습니다.문제 정의다음과 같이 주간(일요일) 단위로 기록된 시계열 데이터가 있을 때,DataFrame is: Id time_series 0 1 2020-01-05 1 2 2020-01-12 2 3 2020-01-19 3 4 2020-01-26 4 5 2020-02-02 5 6 2020-02-09
개요pandas를 활용하면 JSON 형식의 데이터를 손쉽게 읽어 들여 데이터프레임(DataFrame)으로 변환한 뒤, 다시 CSV 파일로 저장할 수 있습니다. 이 글에서는 그 과정을 단계별로 살펴보겠습니다.먼저 아래와 같은 샘플 JSON 데이터가 pandas_sample.json이라는 파일에 저장되어 있다고 가정해 보겠습니다.{ employee: { name: emp1, &nbs
데이터 분석 작업을 하다 보면 생성한 DataFrame을 파일로 저장했다가 나중에 다시 불러와야 하는 경우가 자주 발생합니다. 이번 글에서는 Pandas의 to_pickle()과 read_pickle() 메서드를 사용하여 DataFrame을 Pickle 파일 형식으로 내보내고, 저장된 파일에서 내용을 다시 읽어오는 방법을 알아보겠습니다.최종 결과는 아래와 같이 나타납니다.Export to pickle file: Read contents from pickle file: Fruits City 0 Apple
자기상관(Autocorrelation)은 시계열 데이터가 과거 시점의 자기 자신과 얼마나 유사한 패턴을 보이는지를 측정하는 통계 지표입니다. 이 글에서는 pandas 라이브러리의 autocorr() 메서드를 사용하여 시계열 데이터와 특정 시차(lag) 사이의 자기상관을 계산하는 방법을 단계별로 살펴보겠습니다. 목표 결과 미리 보기 다음과 같은 시계열 데이터가 있고, 시차 2에 대한 자기상관을 구한다고 가정해 보겠습니다. Series is: 0 2.0 1 10.0 2 3.0 3 4.0 4 9.0 5
시계열 데이터 자르기 개요 시계열(time series) 데이터가 포함된 데이터프레임이 있을 때, 판다스의 truncate() 함수를 사용하면 지정한 인덱스 값을 기준으로 데이터를 간단하게 잘라낼 수 있습니다. 예를 들어 아래와 같은 데이터프레임이 있고, 잘라낸 후의 결과가 다음과 같다고 가정해 보겠습니다. before truncate: Id time_series 0 1 2020-01-05 1 2 2020-01-12 2 3 2020-01-19 3 4 2020-01-26 4 5 2020-02-02 5 6 2020-02-09 6 7
데이터 분석을 하다 보면 데이터프레임(DataFrame)의 구조를 목적에 맞게 변형해야 하는 경우가 자주 발생합니다. pandas에서는 melt(), stack(), unstack(), pivot() 함수를 사용하여 넓은 형태(wide format)의 데이터프레임을 긴 형태(long format)로 변환하거나, 그 반대로 재구성할 수 있습니다.아래에서 각 함수별 해결 방법을 예제 코드와 함께 살펴보겠습니다. 모든 예제는 다음과 같은 기본 데이터프레임을 사용합니다.import pandas as pddf = pd.DataFrame({I
데이터프레임이 주어졌을 때, 특정 열을 기준으로 데이터를 그룹화한 뒤 각 그룹의 공분산 행렬을 구하고, 나아가 두 개의 열 사이의 공분산만 따로 계산해야 하는 경우가 자주 있습니다. 이 글에서는 pandas의 groupby와 cov 함수를 활용해 이를 손쉽게 처리하는 방법을 알아보겠습니다.예를 들어 다음과 같은 결과를 얻는 것이 목표입니다.그룹별 공분산 행렬: mark1 mark2 subjects maths mark1 25.0 12.500000
데이터프레임이 주어져 있고, 첫 번째 중복 행을 제거하면 다음과 같은 결과를 얻게 됩니다. Id Age 0 1 12 3 4 13 4 5 14 5 6 12 6 2 13 7 7 16 8 3 14 9 9 15 10 10 14해결 방법이 문제를 해결하기 위해 아래 단계를 따릅니다.데이터프레임을 정의합니다.Id와 Age 열을
개요데이터프레임의 인덱스를 양수(+) 방향과 음수(-) 방향으로 각각 2주기씩 이동(shift)해야 하는 경우가 있습니다. 예를 들어, 시계열 인덱스를 가진 데이터프레임에 shift 연산을 적용하면 다음과 같은 결과를 얻을 수 있습니다.양수 방향으로 2주기 이동한 결과 Id Age 2020-01-01 00:00:00 NaN NaN 2020-01-01 12:00:00 NaN NaN 2020-01-02 00:00:00 1.0 10.0 2020-01-02 12:00:00 2.0 12.0 20
이 글에서는 파이썬의 pandas를 사용하여 데이터프레임(DataFrame) 딕셔너리로 패널(Panel) 객체를 생성하고, 그 안에서 첫 번째 열의 최댓값을 구하는 방법을 단계별로 알아보겠습니다.목표 결과패널에 담긴 첫 번째 열의 최댓값을 구하면 아래와 같은 결과가 출력됩니다.maximum value of first column is ; Column1 1.377292해결 접근 방법이 문제는 다음 순서로 해결할 수 있습니다.딕셔너리의 키를 Column1로 설정하고, 값으로 pd.DataFrame(np.random.randn(5,
데이터 분석을 하다 보면 데이터프레임의 특정 열 값들을 기준으로 순위(rank)를 매겨야 하는 경우가 자주 있습니다. 이때 판다스(Pandas)의 rank() 함수를 사용하면 간단하게 해결할 수 있습니다. 특히 동일한 값을 가진 항목이 여러 개일 때 method=min 옵션을 사용하면 해당 그룹 전체에 최소 순위가 부여됩니다.문제 상황다음과 같은 데이터프레임이 있다고 가정해 보겠습니다. 여기서 Age 열을 기준으로 최소 순위(minimum rank)를 계산하는 것이 목표입니다. Id Name &nbs
패널(Panel) 객체가 하나 있고, 그 안에서 첫 번째 행의 평균을 구하려고 한다고 가정해 보겠습니다. 결과는 다음과 같은 형태가 됩니다.Average of first row is: Column1 0.274124 dtype: float64풀이 방법이 문제를 해결하기 위해 아래 단계를 순서대로 따라갑니다.딕셔너리의 키를 Column1로 설정하고, 값으로 pd.DataFrame(np.random.randn(5, 3))을 지정합니다.data = {Column1 : pd.DataFrame(np.random.randn(5, 3))}생
개요평균 절대 편차(Mean Absolute Deviation, MAD)는 각 데이터 값이 평균으로부터 얼마나 떨어져 있는지를 나타내는 통계 지표입니다. pandas 라이브러리의 mad() 메서드를 사용하면 데이터프레임의 열(컬럼) 또는 행 기준으로 이 값을 손쉽게 계산할 수 있습니다.해결 방법다음과 같은 데이터프레임이 있고, 각 열과 행의 평균 절대 편차가 아래처럼 출력된다고 가정해 보겠습니다.mad of columns: Column1 0.938776 Column2 0.600000 dtype: float64 mad o
데이터프레임이 있을 때, 분포의 모양을 정량화하면 다음과 같은 결과를 얻을 수 있다고 가정해 보겠습니다.kurtosis is: Column1 -1.526243 Column2 1.948382 dtype: float64 asymmetry distribution - skewness is: Column1 -0.280389 Column2 1.309355 dtype: float64해결 방법이 문제를 해결하려면 아래 단계를 따르면 됩니다.데이터프레임을 정의합니다.df.kurt(axis=0)을 적용하여 분포의 첨도(ku
데이터 분석을 하다 보면 특정 범위를 벗어나는 이상치(outlier)를 일괄적으로 처리해야 하는 경우가 자주 있습니다. 예를 들어, 데이터프레임의 모든 값을 최소 임계값과 최대 임계값 사이로 제한하고 싶다면 판다스(pandas)의 clip() 함수를 활용하면 됩니다.아래는 원본 데이터프레임에 최소 임계값과 최대 임계값을 적용한 결과 예시입니다.minimum threshold: Column1 Column2 0 30 30 1 34 30 2 56 30 3 78
데이터프레임 전체에 한 번에 함수를 적용하고 싶다면 pandas의 pipe() 메서드를 활용하는 것이 가장 깔끔한 방법입니다. 이 글에서는 사용자 정의 함수를 데이터프레임 전체(테이블 단위)에 적용하는 방법을 예제와 함께 살펴보겠습니다. 예를 들어 다음과 같은 데이터프레임이 있고, 여기에 테이블 단위 함수를 적용하면 아래와 같은 결과를 얻을 수 있습니다. Table wise function: Id Mark 0 6.0 85.0 1 7.0 95.0 2 8.0 75.0 3 9.0 90.0 4 10.0 95.0 해