Aiffel_learning/Data_analysis

2-3. pandas로 데이터 분석,변환하기 : 값 삭제, 값 불러오기, 변화하기, aggregation

이유29 2024. 6. 6. 21:53

data 값 삭제하기(drop, del)

# 특정 값을 가진 행을 삭제하려면
data = data[data['칼럼'] != 30]	# 칼럼의 값이 '30'인 행 삭제하기
# drop
# 특정 행 삭제
index_to_drop = df[df['B'] == 30].index
df.drop(index_to_drop, inplace=True)
# 칼럼 제거
data.drop('칼럼이름', axis=1, inplace)
data.drop(columns=['칼럼'], inplace=True)

# name : 라벨 이름(열) , 숫자(행)   -> 여러개의 칼럼을 입력하려면 리스트로 묶
# axis ( 0 : 디폴트 값, 행 부분 / 1 : 라벨(제목)부분)
# inplace ( False : 디폴트값, 출력했을때 한번만 보임 / True : 원본 데이터에서도 삭제됨)

# del
del data['칼럼']

값 불러오기(loc, iloc, value_counts)

# loc(행의 'index 이름' 기준)
data.loc[n]        # n행의 값 출력
data.loc[n:]       # n행부터 끝까지 값 출력
data.loc[[n,p,q]]  # n,p,q 행의 값 출력

# iloc(행의 순서(번호) 기준)
data.iloc[n]       # n번째 행의 값 출력

# value_count
data['칼럼'].value_counts()  # 각 category 별로 값이 몇개 있는지 측정

합계 구하기(sum)

data['칼럼'].value_counts().sum()
data['칼럼'].sum()
data.sum()     # 칼럼별로 합이 구해짐(문자열의 경우 전부 합쳐짐)

중복된 데이터 처리

# 중복여부 확인
data.duplicated()  # 겹치면 True, 아니면 False 출력
data[data.duplicated()]  # True인 항목들만 표시

data[data['Name'] == 'LYJ']  # 로 같은 값을 가진 항목 있는지 확인가능

# 중복항목 삭제
data = data.drop_duplicates()

 

데이터 변환

이름 변경

# 칼럼 이름 변경
data.rename({'Gendr' : 'Gender'}, axis = 1)

# index 이름 변경
data.rename({0 : 'a', 1 : 'b', 2 : 'c'})  # 특정 인덱스만 이렇게 변경가능

# 인덱스 처음부터 0~ 으로 변경(인덱스 칸이 없었으면 생성됨)
data.reset_index()

데이터 변환처리 

  1. replace : 특정 값을 다른 값으로 대체
  2. map : 시리즈의 각 요소를 지정된 함수나 매핑에 따라 변환
  3. apply : 함수를 데이터프레임의 열 또는 행에 적용
(map은 series만 적용가능, replace & apply는 dataframe, series 둘 다 적용가능)
# replace
data.replace({'male': 'M', 'female': 'F'})  # 데이터 전체에서 값대체
data['Gender'] = data['Gender'].replace({'male': 'M', 'female': 'F'})  # 특정 칼럼 지정도 가능

# map-replace 차이
data.map({'male': 'M', 'female': 'F'})  # 불가능, map은 series에서만 작동함
data['Gender'] = data['Gender'].map({'male': 'M', 'female': 'F'})  # 이건 가능

# map-appyly 차이
data['Age'].map(len)  # 이렇게 항목 당 함수 적용도 가능, series 제한
data.apply(len) # 전부 다 가능

 

aggregation (데이터 포인트를 요약하고, 그룹화하여 새로운 통계/정보를 추출)

groupby

# 성별에 따른 소득 분석(두가지 방법으로 표현할 수 있음)
grouped = salary_df['Salary'].groupby(salary_df['Gender'])
grouped = salary_df.groupby('Gender')['Salary']

* reset_index() 메소드로 생성된 groupby를 dataframe화 할 수 있음

상관관계(corr)

# 데이터 전체에서 각 칼럼끼리의 상관관계 출력
data.corr()

# 칼럼1, 칼럼2의 상관관례
data['칼럼1'].corr(data['칼럼2'])