Python 데이터 분석

Python 데이터분석 기초 7 - 색인(loc, iloc), 결측값 채우기, 순서 재배치

코딩탕탕 2022. 10. 31. 11:23

 

# 색인
import pandas as pd
import numpy as np

# Series의 재색인
data = pd.Series([1, 3, 2], index = (1, 4, 2)) # index는 list, tuple, set 가능하다.
print(data)

print('순서를 재배치')
data2 = data.reindex((1, 2, 4))
print(data2)

print()
data3 = data2.reindex([0, 1, 2, 3, 4, 5])
print(data3) # 없는 인덱싱을 넣으면 대응값이 없는 인덱스는 NaN(결측값)이 된다.

data3 = data2.reindex([0, 1, 2, 3, 4, 5], method = 'pad')
print(data3) # 이전 값으로 결측값을 채운다.

print('NaN(결측값) 채우기') # NaN(결측값) 채우기
data3 = data2.reindex([0, 1, 2, 3, 4, 5], method = 'ffill')
print(data3) # 이전 값으로 결측값을 채운다.

data3 = data2.reindex([0, 1, 2, 3, 4, 5], method = 'bfill')
print(data3) # 다음 값으로 결측값을 채운다.

data3 = data2.reindex([0, 1, 2, 3, 4, 5], method = 'backfill')
print(data3) # 다음 값으로 결측값을 채운다.

print('--------')
df = pd.DataFrame(np.arange(12).reshape(4, 3), index = ['1월', '2월', '3월', '4월'], columns = ['강남', '강북', '서초'])
print(df)

print(df['강남'])         # 강남 열만 출력한다.
print(df['강남'] > 3)     # True, False를 반환받는다.
print(df[df['강남'] > 3]) # 강남 열 중에 3 초과된 값의 행을 출력한다.

print('슬라이싱 관련 method : 복수 인덱싱 loc - 라벨 지원, iloc - 숫자 지원')
print(df.loc['3월', :]) # 3월행 모든 열 호출
print(df.loc[:'2월'])   # 2월 이하 행 호출
print(df.loc[:'2월', ['서초']]) # 2월 이하 행 서초열 호출

print()
print(df.iloc[2])        # 2행 호출
print(df.iloc[2, :])     # 2행 호출
print(df.iloc[:3])       # 3행 미만 호출
print(df.iloc[:3, 2])    # 3행 미만 2열 호출
print(df.iloc[1:3, 1:3]) # 1행 2행, 1열, 2열 호출

<console>
1    1
4    3
2    2
dtype: int64
순서를 재배치
1    1
2    2
4    3
dtype: int64

0    NaN
1    1.0
2    2.0
3    NaN
4    3.0
5    NaN
dtype: float64
0    NaN
1    1.0
2    2.0
3    2.0
4    3.0
5    3.0
dtype: float64
NaN(결측값) 채우기
0    NaN
1    1.0
2    2.0
3    2.0
4    3.0
5    3.0
dtype: float64
0    1.0
1    1.0
2    2.0
3    3.0
4    3.0
5    NaN
dtype: float64
0    1.0
1    1.0
2    2.0
3    3.0
4    3.0
5    NaN
dtype: float64
--------
    강남  강북  서초
1월   0   1   2
2월   3   4   5
3월   6   7   8
4월   9  10  11
1월    0
2월    3
3월    6
4월    9
Name: 강남, dtype: int32
1월    False
2월    False
3월     True
4월     True
Name: 강남, dtype: bool
    강남  강북  서초
3월   6   7   8
4월   9  10  11
슬라이싱 관련 method : 복수 인덱싱 loc - 라벨 지원, iloc - 숫자 지원
강남    6
강북    7
서초    8
Name: 3월, dtype: int32
    강남  강북  서초
1월   0   1   2
2월   3   4   5
    서초
1월   2
2월   5

강남    6
강북    7
서초    8
Name: 3월, dtype: int32
강남    6
강북    7
서초    8
Name: 3월, dtype: int32
    강남  강북  서초
1월   0   1   2
2월   3   4   5
3월   6   7   8
1월    2
2월    5
3월    8
Name: 서초, dtype: int32
    강북  서초
2월   4   5
3월   7   8