# 데이터마님
# 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
계산
상관관계 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)
'Daily > Get certificate' 카테고리의 다른 글
[빅분기 실기] 3유형 (0) | 2024.06.14 |
---|---|
[빅분기 실기] 2유형 (0) | 2024.06.14 |
[OPIc] IH 한번에 따기 (해커스클라라, 대학연합오픽) (0) | 2022.12.07 |
[ADsP] 통계전공자 1주일 독학 합격 후기 (0) | 2020.12.23 |
[SQLD] 통계전공자 1주일 독학 합격 후기 (0) | 2020.12.08 |
댓글