- 과거내용
- DataFrame - 데이터타입
1. 타입 변경
#원본 데이터
col1 col2 col3
row1 1 one 1.1
row2 2 two 2.2
row3 3 three 3.3
#타입 변경
df=df.astype({'col1':'float64'})
print(df.dtypes)
col1 float64
col2 object
col3 float64
dtype: object
astype을 사용해서 특정 열의 타입을 바꾸었다.
dtype=타입 을 옵션으로 입력하면 전체 데이터의 타입을 바꿀 수 있다.
2. 열의 타입 통일
#원본 데이터
col1 col2 col3
row1 1 one 1.1
row2 2 two 2.2
row3 <NA> three <NA>
#열의 타입
df=df.convert_dtypes()
print(df.dtypes)
col1 Int64
col2 string
col3 Float64
dtype: object
convert_dtypes를 사용하면 열의 dtype을 가장 적절하게 통일시켜준다.
사용하기 전에는 <NA>가 있어 object 였지만 사용 후에는 Inty64 형태로 통일됐다.
3. 열의 dtype 추론
#원본 데이터
col1
row1 1
row2 2
row3 A
col1 object
dtype: object
#열의 타입 추론
df=df.iloc[:2]
print(df.infer_objects().dtypes)
col1 int64
dtype: object
iloc을 이용해 데이터를 나눠주고 이후 infer_objects를 사용해서
열의 dtype을 추론할 수 있다.
- DataFrame - 확인
1. 최대/최소값
#원본 데이터
col1 col2 col3
row1 1 2 100
row2 200 5 4
row3 6 300 2
#최대값
print(df.idxmax(axis=0))
col1 row2
col2 row3
col3 row1
dtype: object
idxmax는 최대, idxmin은 최소를 의미한다. 옵션으로 axis를 사용해
행과 열 중 선택할 수 있다. 추가로 skipna를 사용해 결측값이 포함된 행/열을 무시할 수 있다.
2. 공백 여부 확인
#원본 데이터
col = ['col1','col2','col3']
df = pd.DataFrame( index=idx)
#공백 여부 확인
print(df.empty)
True
empty를 사용해 True이면 공백, False이면 공백이 아니다.
NaN값도 공백이 아니기에 완전한 공백만 True가 나온다.
3. 일치하는 요소
#원본 데이터
col1 col2 col3
row1 1 2 3
row2 1 5 6
row3 2 3 4
#일치하는 요소 확인
print(df.isin([1,2]))
col1 col2 col3
row1 True True False
row2 True False False
row3 True False False
isin을 사용해서 입력한 값과 같은 경우 True, 아닌 경우 False를 반환하여
일치하는 요소를 쉽게 찾을 수 있다.
4. True/False 확인
#원본 데이터
col1 col2 col3
row1 True True False
row2 True False False
row3 True False False
#all
print(df.all())
col1 True
col2 False
col3 False
dtype: bool
#any
print(df.any())
col1 True
col2 True
col3 False
dtype: bool
위에서 all의 경우는 모든 행의 값이 True일 때 트루를 반환하고,
any는 하나의 값만 True이면 True를 반환한다.
추가로 bool_only 옵션은 bool 형식인 경우만 계산하고,
skipna는 결측치를 제외하고 계산할 수 있다.
5. 결측값 아닌 값의 수
#원본 데이터
col1 col2 col3
row1 1 2 NaN
row2 1 5 NaN
row3 2 3 4.0
#결측값 아닌 값의 수
print(df.count())
col1 3
col2 3
col3 1
dtype: int64
count를 사용해서 결측값이 아닌 요소의 개수를 얻을 수 있다.
옵션으로 axis, numeric_only 등을 사용할 수 있다.
6. 일치
#원본 데이터
df1 = pd.DataFrame(data=[[1,n],[3,2]])
df2 = pd.DataFrame(data=[[1,n],[3,2]])
#일치 여부
print(df1.equals(df2))
True
equals를 사용해서 두 데이터프레임이 같은지 확인할 수 있다.
True이면 같고, False이면 다른 것이다.
7. bool값 확인
#원본 데이터
col
row True
#불 값 확인
print(df1.bool())
True
bool을 이용해서 객체의 값이 True인지 False인지 확인할 수 있다.
8. 중복행 확인
#원본 데이터
col1 col2 col3
row1 1 2 10
row2 1 5 12
row3 1 2 4
#중복행 확인
print(df.duplicated(subset=['col1','col2']))
row1 False
row2 False
row3 True
duplicated의 옵션 중 subset을 사용해서 중복행을 확인한 것이다.
row3의 경우 row1과 값이 1,2로 같기 때문에 True가 나왔다.
나머지는 같지 않기에 False가 결과로 나온다.
이외에도 옵션 keep을 사용해 중복행을 확인할 수 있다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
EDA - 1단계 : 데이터 다루기 - 통계 (2) | 2023.07.18 |
---|---|
EDA - 1단계 : 데이터 다루기 - 축, 레이블 (3) | 2023.07.17 |
EDA - 1단계 : 데이터 다루기 - 정보 (1) | 2023.07.15 |
EDA - 1단계 : 데이터 다루기 - 가공 (2) | 2023.07.13 |
EDA - 1단계 : 데이터 다루기 - 정렬, 결합 (3) | 2023.07.11 |