관리 메뉴

log.Sehee

[데이터 취업 스쿨 스터디 노트] Pandas, DataFrame / 서울시 CCTV 현황 데이터 분석 2 본문

Zerobase DS School

[데이터 취업 스쿨 스터디 노트] Pandas, DataFrame / 서울시 CCTV 현황 데이터 분석 2

Sehe_e 2024. 7. 29. 22:55

 


 

Pandas

: python에서 R만큼의 강력한 데이터 핸들링 성능을 제공하는 모듈

단일 프로세서에서 최대 효율이며 코딩이 가능하고 응용 가능한 엑셀로 받아들여도 됨

 

Pandas는 통상 pd / numpy는 통상 np

import pandas as pd
import numpy as np

 

Series

: index와 value로 이루어져 있음

한 가지 데이터 타입만 가질 수 있음

# pd.Series(value값, dtype=데이터타입 지정)
pd.Series([1, 2, 3, 4], dtype=np.float64)

 

numpy 배열 사용

pd.Series(np.array([1, 2, 3]))

 

pd.Series({"Key": "Value"})

 

data = pd.Series([1, 2, 3, 4])
data % 2

 

 

DataFrame

: Series 데이터가 모여 DataFrame이 된다.

index, value, column으로 이루어져있다.

 

날짜데이터 생성

# pd.date_range('시작날짜', periods=범위)
dates = pd.date_range('20240101', periods=6)
dates

 

표준 정규 분포에서 샘플링한 난수 생성

# 6 ~ 4 범위
data = np.random.randn(6, 4)
data

 

DataFrame 생성

# pd.DataFrame(values 데이터, index=index 데이터, columns=columns 데이터)
df = pd.DataFrame(data, index=dates, columns=['A', 'B', 'C', 'D'])
df

 

head(), tail() 등의 메소드 사용 가능

index, values, columns 등의 변수 사용 가능

 

info() : 데이터 프레임의 기본 정보 확인

df.info()

 

describe() : 데이터 프레임의 기술 통계 정보 확인

count = 갯수 / mean = 평균 / std = 표준편차 / min, 25%, 50%, 75%, max = 사분위수

df.describe()

 

sort_values() : 특정 column을 기준으로 데이터를 정렬한다.

# df.sort_values(by=정렬기준 column, ascending=오름차순여부, inplace=저장여부)
df.sort_values(by='A', ascending=False, inplace=True)
df

 

데이터 선택

df['A']
# column name이 알파벳일 경우 따옴표 생략 가능. 숫자일 경우 생략 불가
df.A

 

여러 column 선택 시 리스트 형태로 해야한다.

df[['A', 'B']]

 

offset index : index나 column name으로 slice하는 경우는 끝을 포함한다.

df[0:3]

df['20240101':'20240104']

 

loc(location) : index 이름으로 특정 행, 열을 선택한다.

# df.loc(전체선택, column name 지정)
df.loc[:, ['A', 'B', 'C']]

df.loc['20240101', ['A', 'B', 'C']]

df.loc['20240101', ['A', 'B', 'C']]
df.loc['20240102':'20240105', 'A':'C']

 

lioc(inter location) : 컴퓨터가 인식하는 인덱스 값으로 선택

# DataFrame 조회
df

 

df.iloc[3]

 

# df.iloc[index, column index]
df.iloc[3, 2]

# 슬라이싱 가능
df.iloc[3:5, 0:2]

 

condition

# A 컬럼에서 0보다 큰 숫자(양수)만 선택
df['A'] > 0

# df[]로 마스킹 시 True값의 데이터만 DataFrame 형태로 출력할 수 있다.
df[df['A'] > 0]

df[df > 0]

 

Column 추가, 기존 column이 존재할 시 수정한다.

df['E'] = ['one', 'two', 'three', 'four', 'five', 'six']
df

 

isin() : 특정 요소가 있는지 확인한다.

df['E'].isin(['two', 'apple'])

# 전체 데이터 프레임에 마스킹
df[df['E'].isin(['two', 'five', 'apple'])]

 

특정 Column 제거 : del, drop

# inplace 없이 바로 적용됨
del df['E']
df

# axis = 0 가로, 1 세로
# inplace 적용 여부 선택
df.drop(['D'], axis=1)

df.drop(['20240102'])

 

apply() : 적용하고 싶은 함수를 인자값으로 넣으면 적용되어 출력

df['A'].apply('sum')

df[['C', 'D']].apply('mean')

# numpy의 함수 사용 가능
df['A'].apply(np.std)

def plusminus(n):
    return 'plus' if n > 0 else 'minus'

df['A'].apply(plusminus)
df['A'].apply(lambda n: 'plus' if n > 0 else 'minus')

 

 


내일의 학습목표

서울시 CCTV 현황 데이터 분석 3 - 5

 

 

Comments