Pandas

Pandas는 데이터 처리와 분석을 위한 Python 라이브러리이다.

행과 열로 이루어진 데이터 객체(데이터 프레임)를 만들어 데이터를 다룬다.

 

데이터프레임(Dataframe)

데이터프레임은 데이터 분석에서 가장 중요한 데이터 구조이다.

흔히 Excel구조와 같은 2차원 형태이다.

 

아래 그림이 Dataframe의 예시이다.

  • 열, 컬럼: name, number, score
  • 행, 로우: [Kim, 1, A] 와 같은 가로 한줄 한줄

DataFrame

 

시리즈 Series

시리즈는 하나의 정보에 대한 데이터의 지합을 의미한다.

1차원의 형태로 데이터 프레임에서 하나의 열을 떼어낸 것의 자료형은 Series이다.

 

 

Pandas 기초 메소드 및 함수 실습

라이브러리 불러오기

import pandas as pd

 

 

연습할 데이터 읽어오기

path = "https://raw.githubusercontent.com/Datamanim/pandas/main/lol.csv"

data = pd.read_csv(path, sep='\t') # 데이터가 \t로 구분되어 있어서 sep option을 줌.
data

 

불러온 데이터 구조 확인하기

1. df.head()

상위 데이터 조회

# 기본값: 앞쪽 상위 5개 데이터 확인
# data.head(3): 상위 3개 데이터 조회
data.head()

 

2. df.tail()

하위 데이터 조회

 

3. df.shape

# 데이터프레임의 모양 확인 (행의 수 , 열의 수) 형태
data.shape

 

4. df.info()

# 인덱스, 열, 값 개수, 데이터 형식 정보 등을 조회
data.info()

 

5. df.describe()

NaN 데이터는 자동으로 제외하고 수행한다.

  • count: 데이터 개수
  • mean: 데이터 평균
  • std: 데이터 표준편차
  • min: 데이터 최소값
  • 25%, 50%, 75%: 백분위수 지점
  • max: 데이터 최대값
# 데이터의 기초 통계 정보 확인
data.describe()

 

다양한 메소드 사용해보기

정렬

1. sort_index(ascending=False)

인덱스를 기준으로 정렬하기

- ascending=False: 내림차순

- ascending=True: 오름차순

data.sort_index(ascending=False)

 

2. sort_values(by=target, ascending=Fasle)

특정 열을 기준으로 정렬하기

 

- 열 하나 기준

data.sort_values(by="seasonId", ascending=False)

 

 

- 열 여러개 기준

data.sort_values(by=["seasonId", "winner"], ascending=False)

 

고유 값 확인

고유 값 확인을 위한 예제 데이터 불러오기

path = "https://raw.githubusercontent.com/Datamanim/datarepo/main/churnk/X_train.csv"
data = pd.read_csv(path)

 

1. value_counts()

특정 열의 고유한 값들의 개수들을 반환

data['Geography'].value_counts()

 

2. unique()

특정 열의 고유한 값들을 array 로 반환

data['Geography'].unique()

 

 

loc 메소드를 통해 특정 조건의 데이터 조회하기

df.loc[행 조건, 열 이름]

  • 열 이름 생략하면 전체 열을 조회한다.
  • 열 이름 한개로 조회하는 경우 시리즈로 조회
  • 열 이름 리스트 형태로 조회하는 경우 데이터프레임으로 조회
# Geography 열의 값이 Germany인, 데이터의 Surname 열을 조회
data.loc[data['Geography'] == "Germany", "Surname"]

 

# Geography 열의 값이 Germany인 모든 데이터의 전체 열을 조회
data.loc[data['Geography'] == "Germany"]

 

범위 조회 또는 포함 조회

1. df.isin([value1, value2, ...])

매개변수 리스트 내에 포함되는 데이터만 조회

# Geography가 Germany와 France인 데이터만 조회
data.loc[data['Geography'].isin(["Germany", "France"])]

 

2. df.between(value1, value2)

# Tenure값이 1과 4사이인 데이터만 조회
data.loc[data['Tenure'].between(1, 4)]

 

 

집계함수

df.집계함수() 사용시 모든 각 열에 대한 집계함수의 결과를 시리즈 형식으로 보여준다.

  1. sum() : 합
  2. mean() : 평균
  3. max() : 최대값
  4. min() : 최소값
  5. count() : 개수
data = pd.DataFrame([
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12],
    [13,14,15,16]
])

data

 

df.집계함수()

print(("=" * 4) + "sum" + ("=" * 4))
print(data.sum(), end="\n\n")

print(("=" * 4) + "mean" + ("=" * 4))
print(data.mean(), end="\n\n")

print(("=" * 4) + "min" + ("=" * 4))
print(data.min(), end="\n\n")

print(("=" * 4) + "max" + ("=" * 4))
print(data.max(), end="\n\n")

print(("=" * 4) + "count" + ("=" * 4))
print(data.count(), end="\n\n")

 

df[열 번호].집계함수()

0번째 열에 대한 집계함수의 결과를 반환

print(("=" * 4) + "sum" + ("=" * 4))
print(data[0].sum(), end="\n\n")

print(("=" * 4) + "mean" + ("=" * 4))
print(data[0].mean(), end="\n\n")

print(("=" * 4) + "min" + ("=" * 4))
print(data[0].min(), end="\n\n")

print(("=" * 4) + "max" + ("=" * 4))
print(data[0].max(), end="\n\n")

print(("=" * 4) + "count" + ("=" * 4))
print(data[0].count(), end="\n\n")

 

그룹으로 묶어서 집계하기 :: groupby()

문법

df.groupby('집계기준변수', as_index=False)['집계대상변수'].집계함수

  • 집계기준변수: 범주형 변수 
    • 여러개 값 가능, 리스트로 넣는다.
  • 집계대상변수: 집계함수로 집계할 변수 혹은 리스트
    • 여러개 값 가능, 리스트로 넣는다.
  • ex) 월별 매출액의 합계 
    • 집계기준변수: 월
    • 집계대상변수: 매출액
  • option
    • as_index=True
      • 집계기준 변수를 인덱스로 사용한다.
# 월별 매출액의 합계가 시리즈로 조회됨
df.groupby('월', as_index=True)['매출액'].sum()

# 월별 매출액의 합계가 데이터프레임으로 조회됨
df.groupby('월', as_index=True)[['매출액']].sum()
df.groupby('월', as_index=False)['매출액'].sum()

 

여러개의 집계함수 한번에 값 얻기

.agg()

  • 열 하나에 대해 합계, 평균 등의 집계 함수를 한 번에 수행할 수 있게 하는 메소드
  • agg() 메소드의 매개변수로 수행하길 원하는 집계함수 이름을 리스트 형태로 넣어준다.

기본 문법

# 월별 매출액의 합계, 평균, 최대값을 구한다.
df.groypby('월')['매출액'].agg(['sum', 'mean','max'])

 

 

여러 열에 대해 각 열마다 다른 집계 수행

# 월별 매출액에 대해서는 평균, 팁에 대해서는 합계를 구한다.
df.groupby('월', as_index=False).agg({'매출액': 'mean', '팁': 'sum'})

 

728x90

'Language > Python' 카테고리의 다른 글

[Pandas] 시계열 데이터 처리  (0) 2024.03.01
[Pandas] 데이터분석을 위한 데이터 전처리  (2) 2024.03.01
[Numpy] Numpy 기초  (0) 2024.02.29
[Python] List, Dictionary  (0) 2024.02.28

+ Recent posts