log.Sehee
[데이터 취업 스쿨 스터디 노트] Pandas, DataFrame / 서울시 CCTV 현황 데이터 분석 2 본문
[데이터 취업 스쿨 스터디 노트] 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