본문 바로가기
Daily/Get certificate

[빅분기 실기] 1유형

by HANNI하니 2024. 6. 14.

# 데이터마님

# 7회 기출 변형

https://www.datamanim.com/dataset/practice/ex7.html
 
개수 세기
len(df)
개수(널값 제외) count()
행개수 shape[0]
열개수 shape[1]
 
결측치
dropna()
fillna()
fillna(method = 'ffill') # 직전의 행 값으로 채우기
bfill # 다음행, 위 값으로 채우기
isnull()
notnull()
 
정렬
sort_values().index[-2]
 
인덱스
인덱스 최대값 idxmax()
인덱스 리셋 reset_index(drop=True) # drop안하면 기존인덱스가 칼럼으로 저장됨
sort_values().reset_index().iloc[2].values
sort_value('칼럼명')
value_counts().sort_index[()['A']
 
index[0] # 인덱스
values[0] # 값
 
loc[행,열] / iloc[행,열]  # 행, 열 가져오기
loc[:,칼럼이름] / iloc[:,칼럼번호] # 열만 가져오기
loc[행이름] / iloc[인덱스번호] # 행만 가져오기
df.loc[df.변수 >= 200, '변수'] = 199 # 200보다 큰 값의 변수값은 199로 변경하기
https://wikidocs.net/193903

3) 데이터프레임 DataFrame : 인덱싱,iloc,loc

[TOC] >판다스의 기본인덱싱을 배워볼거예요. 시리즈에서 이미 배웠던 내용이기 때문에 쉽게 읽힐거예요. >판다스의 고급인덱싱 iloc와 loc를 알아볼거예요. >iloc는 정수…

wikidocs.net

 
 
 
계산
상관관계 corr()
df[['age', 'balance']].corr().iloc[0,1]
np.corrcoef(df.age,df.balance)[0][1]
 
절댓값 abs()
반올림 round() # float라고 오류뜨면 .round(1) 대신 round(변수,1)로 한다.
표준편차 std()
중앙값 median()
 
표준화
1) 공식대입 (ddof=0) 모표준편차
((칼럼 - 칼럼.mean()) / 칼럼.std(ddof=0)).max()
2) zscore
from scipy.stats import zscore
zscore(칼럼.dropna()).max()
 
IQR = q3-q1
1사분위수 q1 = quantile(0.25)
2사분위수 q2 = quantile(0.5)
3사분위수 q3 = quantile(0.75)
 
타입 변경
astype('str')
df.select_dtypes(exclude='int') # int 형식이 아닌 칼럼타입만 뽑기
df.Temperature.str.replace('*','',regex=True).astype('float') # 문자들을 *로 바꾸고 없앤후, float 숫자타입으로 바꾼다.
df.age = df.age.str.replace("*","").astype('int)
정수형 int()
 
str
df.title.str.split('feat.').str[1].dropna().str[:-1].str.strip() # 분할
str.split() # 띄어쓰기로 분할
df.artist.str.lower().str.contains('q') # 대소문자 변경, 값 포함되어있는지 확인
 
explode()
리스트 속 원소들 한 칼럼으로 전개/나열하기

 

숫자 6개 아니면 나머지 0으로 채우기
str.zfill(6)
pd.to_datetime(df['출동일자'].astype('str') + df['출동시각'].astype('str').str.zfill(6))
 
날짜 데이터
pd_to_datetime('칼럼명').dt.total_seconds() # 초기준으로 구하기
df.날짜칼럼명.dt.strftime("%Y-%m") # 날짜 형식 지정
 
 
그루핑
df.groupby(['기준칼럼'])
df[['day','month']] 와 df.groupby(['day','month']) 는 같다.
 
피벗테이블
예. 각 job에 따라 marital 칼럼 속 divorced/married 인원의 비율 확인 후 가장 높은 값 출력
t = df.groupby(['job','marital']).size().reset_index() # 두 칼럼으로 그루핑
pivotdf = t.pivot_table(index='job', columns = 'married')[0] # 가로축, 세로축 칼럼 지정
pivotdf = pivotdf.fillna(0) # 없는 값은 0으로 채우기
pivotdf['ratio'] = pivotdf['divorced'] / pivotdf['married'] # 비율 구하기
result = pivotdf.sort_values('ratio').ratio.values[-1] # 가장 높은 값 구하기
print(result)
 
 
리스트 내 반복문
# 정렬된 데이터. 3개월(z)마다 분기(y)+1. 다돌면 연도(x)는 2018에서 2019년으로 이동
df['분기'] = [x + '_' + str(y) for x in ['2018',2019'] for y in rage(1,5) for z in range(3)]
# 전입이 들어있는 모든 칼럼에서 전출이 들어있는 모든 칼럼 빼기
df[[x for x in df.columns if '전입' in x]].sum(axis=1) - df[[x for x in df.columns if '전출' in x]].sum(axis=1)
 
리스트내 값 있는지 확인
isin('a')
df['rank'],isin(range(1,51))
 
프레임형식으로 변환
to_frame()
 
함수대입
map(함수명)
map(lambda x:dic[x])
apply(함수명)

 

 
set
두개의 다른 데이터 개수 구할 때
len(set(df_2010_filter['Country Code']) & set(df_1990_filter['Country Code']))
 
T.diff().T 두 변수값의 차이
result = abs(df.groupby(['Generation'])[['Speed','Defense']].mean().T.diff().T)
 

댓글