빅분기 1유형
| topics | |
| types | |
| contexts | 자격증 |
| tags |
#빅분기 #파이썬 #판다스
|
빅분기 1유형 - 파이썬 판다스
https://www.kaggle.com/code/user245364/1-100
파이썬, 판다스
# 함수기억안날때
print(help(df.dropna))
print(dir(df)) # 이게가지고잇는 속성과 함수를 볼수잇음
# 상관관계(피처간의)
df.corr(numeric_only=True)
# 시리즈를 데이터프레임으로
.to_frame()
# 멀티인덱스의 시리즈접근
value = s[('US', 'Pinot Noir')]
# 값 종류, 종류수
.unique() .nunique()
df.drop("시즌", axis=0, inplace=True) # axis는 0이 기본이고 이건 가로를 의미함
df.to_csv('cafe2.csv', index=False) # 인덱스포함하지않겟다
# 인덱스 기준 (기본값 ascending=True)
df.sort_index(ascending=False)
# 값기준 정렬 걍 컬럼이름만 잇어도됨
df.sort_values(['가격', '메뉴'],ascending=[False, True], inplace=True)
# 인덱스 새로 만들기 drop=True
df.reset_index(drop=True)
# [] 안에조건이 나오면 그냥이조건이 만족하는 행을구하는것임
df[df['칼로리'] < 50] # 조건만족하는 행
df['A'] # 컬럼만 선택
# 조건연산자도 가능
df[cond1 & cond2]
df[cond1 | cond2]
cond = df['메뉴'].isin(['녹차'])
df[cond]
# 값변경
change = {'룽고':'아메리카노', '그린티':'녹차'} # {이전값:새값}
df.replace(change, inplace=True) # 값이 완전히 일치해여험
df['A'] = df['A'].str.replace('분석', '시각화') # string에서 값교체하는것과같음(부분교체가능)
# str붙는순간 널문자열로대하겟다
df['A'].str.split()
df['A'].str.contains('기본')
str.lower() str.upper()
# 시리즈값확인
menu = pd.Series(['맛난버거 세트', '매운 치킨버거', '더블 치즈버거'])
menu.isin(['맛난버거 세트', '더블 치즈버거'])
# 통계
print("최대값: ",df['가격'].max())
print("최소값: ",df['가격'].min())
print("평균값: ",df['가격'].mean())
print("중앙값: ",df['가격'].median())
print("합계: ",df['가격'].sum())
print("표준편차: ",df['가격'].std())
print("분산: ",df['가격'].var())
print("최빈값: ",df['원산지'].mode()[0]) #최빈값이 여러개일 수도 있으니까!!
print("최빈값의 인덱스: ",df['가격'].idxmax())
# 분위수
print("분위수 25% 값", df['가격'].quantile(.25))
print("분위수 75% 값", df['가격'].quantile(.75))
cond = df['가격'].quantile(.25) > df['가격']
df[cond]
# melt 여러개칼람을하나의 칼람으로 합침
# id_vars : 유지될 칼럼, value_vars 합처질 칼럼
# 기본값은 각각 'variable', 'value'입니다.
# 원래 컬럼이 name, math, eng, kor가 잇으면
pd.melt(df, id_vars=['Name'])
# 이러면 variable의 값으로(math,eng,kor)가 생김
# 그루핑 (sql생각하면될듯)
# 원두와 할인율 기준, 평균
df.groupby(['원산지']).mean(numeric_only=True) # 사진확인
ndf = df.groupby(['원산지', '메뉴']).agg(['mean', 'sum']) # 이렇게 되면 멀티인덱스됨
# groupby , agg안에꺼가 다 인덱스됨
# agg여러집계함수동시적용
# 시계열데이터
df['DateTime2'] = pd.to_datetime(df['DateTime2'], format='%Y-%m-%d %H-%M-%S')
df['year'] = df['DateTime1'].dt.year # month, day, hour, minute, second
df['DateTime1'].dt.dayofweek # 요일 0: 월요일'
df['DateTime1'].dt.to_period('Y')
# Y : 연도, Q : 분기(yyyyQn) , M : yyyy-mm , D : yyyy-mm-dd ,H: 2024-06-16 13:00
# 시간차이로 계싼가능 뒤에다 s붙여야함
day = pd.Timedelta(days=99)
df['100day'] = df['DateTime4'] + day
# 병합
full_menu = pd.concat([appetizer, main], axis=1) # 수평
full_menu = pd.concat([appetizer, main], ignore_index=True) # 기본 0(수직으로 병합)
# 두 데이터프레임을 'Menu'를 기준으로 병합 (innerjoin)
menu_info = pd.merge(price, cal, on='Menu')
# count, size (행개수새는거)
# count < 결측치 제외 , size < 결측치포함
# groupby
reviews.groupby(['price']).max(numeric_only=True)
reviews.groupby('price')['points'].max().sort_index()
# 애는 point기준으로 집계
# apply
def func(row):
# row는 Series, 행 전체 정보 사용 가능
return row['A'] + row['B']
df['new_col'] = df.apply(func, axis=1)
# map
import pandas as pd
df = pd.DataFrame({'col': ['A', 'B', 'C', 'A']})
mapping = {'A': 2, 'B': 0, 'C': 1}
df['col_encoded'] = df['col'].map(mapping)
print(df)
group