데이터 분석

<파이썬 데이터 분석가 되기 - 2주차> 02장. 데이터 처리 라이브러리, 판다스

난쟁이 개발자 2025. 1. 26. 07:27
반응형

판다스 공식 사이트에서 제공하는 치트시트 이다. 혹시나 부족한 부분은 참고하면서 공부하였다.

1. 기본 세팅

import pandas as pd

 

2. 데이터 구조

# 시리즈
series_data = pd.Series([True, 3.14, 'ABC'])

print(type(series_data))
print(series_data)
# 데이터프레임
df = pd.DataFrame({'c0' : [1,2,3],
                   'c1' : [4,5,6],
                   'c2' : [7,8,9]})

print(df)
print(type(df))

 

3. 데이터 로딩

데이터 생성

dict_netflix = {
'show_id':[1, 2, 3, 4, 5, 6, 7, 8],
'type':['TV Show', 'TV Show', 'Movie', 'Movie', 'Movie', 'TV Show', 'Movie', 'Movie'],
'title':['Squid Game', 'Stranger Things', 'Sherlock Holmes', 'Iron Man & Captain America: Heroes United', 'Bird Box', 'Anne with an E', 'About Time', 'Inception'],
'director':[np.nan, np.nan, 'Guy Ritchie', 'Leo Riley', 'Susanne Bier', np.nan, 'Richard Curtis', 'Christopher Nolan'],
'cast':['Lee Jung-jae', 'Winona Ryder', 'Robert Downey Jr', 'Adrian Pasdar', 'Sandra Bullock','Amybeth McNulty', 'Domhnall Gleeson', 'Leonardo DiCaprio'],
'country':[np.nan, 'United States', 'United States, Germany', 'United States', 'United States', 'Canada', np.nan, 'United States'],
'release_year':[2021, 2019, 2009, 2014, 2018, 2019, 2013, 2010],
'duration':[300, 800, 128, 71, 124, 900, 123, 148],
'listed_in':[np.nan, 'TV Horror', 'Action & Adventure', np.nan, np.nan, np.nan, np.nan, np.nan]
}

netflix = pd.DataFrame(dict_netflix)
netflix

데이터 불러오기

netflix = pd.read_csv('./netflix_selena.csv')
netflix

데이터 저장

netflix.to_csv('netflix_new.csv', index=False)

 

4. 데이터 탐색

df.head(n) 처음 n개 행 출력 (기본 5)
df.tail(n) 마지막 n개 행 출력
df.info() 데이터 타입/메모리 정보
df.describe() 수치형 데이터 통계 요약
df.shape (행 수, 열 수) 튜플
df.columns 열 이름 목록

 

5. 데이터 선택 / 필터링

(1) 열 선택

# 단일 열
title = netflix['title']
# 다중 열
title_releas_year = netflix[['title', 'release_year']]

(2) 행 선택

# 위치 기반 (iloc)
df.iloc[0]          # 0번째 행
df.iloc[1:3]        # 1~2번째 행

# 레이블 기반 (loc)
df.loc[0, 'country']    # 0번행의 'country' 값

(3) 조건 필터링

# 기본 필터
over_2015 = netflix[netflix['release_year'] > 2015]
under_2015 = netflix[~netflix['release_year'] > 2015]

# 복합 조건
over2015_tv = netflix[(netflix['release_year'] > 2015) & (netflix['type'] == 'TV Show')]

 

6. 데이터 조작

(1) 결측치 처리

df.isnull()     # 결측치 확인
df.fillna(0)    # 0으로 채우기
df.dropna()     # 결측치 행 제거

(2) 열 추가/삭제

# 열 추가
netflix['2duration'] = netflix['duration'] * 2

# 열 삭제
netflix.drop('2duration', axis=1, inplace=True)

(3) 정렬

df.sort_values('release_year', ascending=False)

(4) 그룹화 & 집계

# 종류별, 나라별 집계
netflix.groupby(['type', 'country'])[['release_year', 'duration']].mean()
data = {
    'store' : ['A', 'A', 'B', 'B', 'C', 'C', 'A', 'B', 'C', 'A'],
    'month' : ['Jan', 'Feb', 'Jan', 'Feb', 'Jan', 'Feb', 'Mar', 'Mar', 'Mar', 'Apr'],
    'sales' : [200, 220, 150, 180, 250, 270, 300, 310, 320, 330],
    'profit' : [20, 25, 15, 20, 30, 35, 50, 45, 55, 60]
}
df = pd.DataFrame(data)
df

# 다중 집계
summary_stats = df.groupby('store').agg({
    'sales' : ['sum', 'mean', 'max', 'min'],
    'profit' : ['sum', 'mean', 'max', 'min']
})

 

7. 데이터 병합

# 세로 결합
pd.concat([df1, df2], axis=0)

# 가로 결합
pd.merge(df1,df2, on='새컬럼')

 

8. 유용한 기능 ( 조금 더 공부 후에 채워넣을 예정

(1) 함수 적용

 

(2) 피벗 테이블

 

반응형