
pandas는 데이터 조작 및 분석을 위한 파이썬 프로그래밍 언어 용으로 작성된 소프트웨어 라이브러리이다.
pandas 숫자 테이블과 시계열을 조작하기 위한 데이터 구조와 연산을 제공한다.
pandas는 numpy와 더불어 데이터 분석에서 필수적인 라이브러리라고 할 수 있다.
import pandas
import pandas as pd
데이터프레임은 데이터 분석에서 사용하는 데이터 구조로 관계형 데이터베이스의 테이블 또는 엑셀과 같은 형태

하나의 정보에 대한 데이터들의 집합으로, 데이터프레임에서 하나의 열을 떼어낸 것

path = 'csv 파일 경로'
data = pd.read_csv(padh)
df.head() # 상위 5개 데이터 확인 (default)
df.head(3) # 상위 3개 데이터 확인
df.tail() # 하위 5개 데이터 확인 (default)
df.tail(3) # 하위 3개 데이터 확인
df.shape # 데이터프레임 모양 확인
df.columns # 열 이름 확인
df.columns() # 열 정보 확인
df.dtypes() # 열 확인
df.info() # 인덱스, 값 개수, 데이터 형식 정보 등 확인
df.columns() # 기초 통계 정보 확인
# 데이터 정렬
df.sort_index(ascending=False) # 인덱스 기준 정렬
df.sort_values(by='열 이름', ascending=False) # 단일 열 정렬
df.sort_values(by=['열 이름1', '열 이름2'], ascending=[False, True]) # 복합 열 정렬
# 고유값 확인
df['열 이름'].unique() # day 열 고유값 확인
df['열 이름'].value_counts() # 특정 열 고유값 개수 확인
# 특정 열 조회
df['열 이름'] # 시리즈 열 조회
df.열이름
df[['열 이름']] # 데이터프레임 열 조회, 칼럼 이름을 리스트로 입력한 것
df.loc[df.['열 이름'] > 0.5] # 열 이름의 값이 0.5보다 큰 행 조회
df.loc[(df.['열 이름1'] > 0.5) & (df.['day'] == 'Sat')] # and로 여러 조건 사용
df.loc[(df.['열 이름1'] > 0.5) | (df.['day'] == 'Sat')] # or로 여러 조건 사용
df.loc[ : , ['열 이름1', '열 이름2']] # 특정 열의 모든 행 조회
df.loc[df['day'].isin(['Sat', 'Sun'])]
dataframe.groupby('집계기준변수', as_index= )['집계대상변수'].집계함수
df.groupby('day', as_index=True)['열 이름'].sum() # 시리즈용 groupby
df.groupby('day', as_index=True)[['열 이름']].sum() # 데이터프레임용 groupby
# day별 열 이름 합계 (데이터프레임)
df.groupby('day', as_index=False)['열 이름'].sum()
df_sum = df.groupby('day', as_index=False)['열 이름'].sum()
# 열 이름1, 열 이름2 합계 조회
df.groupby('day', as_index=False)[['열 이름1', '열 이름2']].sum()
# day별 나머지 열들 합계 조회
df.groupby('day', as_index=False).sum()
# day + age별 나머지 열들 합계 조회
df.groupby(['day', 'age'], as_index=False).sum()
# day별 열 이름 합계, 평균, 최댓값, 최솟값
df.groupby('day')['열 이름'].agg(['sum', 'mean', 'max', 'min'])
# day별 열 이름1, 열 이름2 합계, 평균
df.groupby('day')['열 이름1', '열 이름2'].agg(['sum', 'mean'])
# day별 열 이름1 평균, 열 이름2 합계
df.groupby('day', as_index=False).agg({'열 이름1':'mean', '열 이름2':'sum'})
# 열 이름 변경
df.columns = ['열 이름1', '열 이름2', '열 이름3', ... 열 이름n,]
# rename() 메소드 사용
df.rename(columns={'열 이름1': '새로운 열 이름1',
'열 이름2': '새로운 열 이름2',
'열 이름3': '새로운 열 이름3',
'열 이름4': '새로운 열 이름4',
'열 이름5': '새로운 열 이름5'}, inplace=True)
# 열 추가
df['열1+열2'] = df['열 이름1'] + df['열 이름2'] # 열 이름1과 열 이름2를 더한 값 추가
df.insert(1, ‘열1/열2', df['열 이름1'] / df['열 이름2'])
# 열 추가
df['열1+열2'] = df['열 이름1'] + df['열 이름2'] # 열 이름1과 열 이름2를 더한 값 추가
df.insert(1, ‘열1/열2', df['열 이름1'] / df['열 이름2'])
drop() 메소드를 사용해 열 삭제
# 열 삭제
df.drop('열 이름', axis=1, inplace=True)
df.drop(['열 이름1', '열 이름2'], axis=1, inplace=True)
df[‘열 이름’] = 0 # 열 이름의 모든 값을 0을 바꾸기
# 열 이름의 값이 10보다 작을 경우 0으로 바꾸기
df.loc[tip[‘열 이름’] < 10, ‘열 이름’] = 0
# 열 이름이 10보다 작을 경우 0, 아니면 1로 바꾸기
df[‘열 이름’] = np.where(tip[‘열 이름’] < 10, 0, 1)
df['sex'] = df['sex'].map({'Male': 1, 'Female': 0}) # 범주형 값을 변경할 때 사용
# 크기에 따라 3등분하여 등급을 부여 (숫자형 변수를 범주형으로 변경)
df['열 이름'] = pd.cut(tip['열 이름’], 3, labels=['a', 'b', 'c'] )
df_con = pd.concat([df1, df2], join='outer', axis=1)
df_con = pd.concat([df1, df2], join='inner', axis=1)

df_merge = pd.merge(df1, df2, on='열 이름', how='inner')
df_merge = pd.merge(df1, df2, on='열 이름', how='inner')
df.pivot(index, column, values)
df['date'].df.date # YYYY-MM-DD(문자)
df['date'].df.year # 연(4자리 숫자)
df['date'].df.month # 월(숫자)
df['date'].df.month_name() # 월(문자)
df['date'].df.day # 일(숫자)
df['date'].df.time # HH:MM:SS(문자)
df['date'].df.hour # 시(숫자)
df['date'].df.minute # 분(숫자)
df['date'].df.second # 초(숫자)
df['date'].df.quarter # 분기(숫자)
df['date'].df.day_name() # 요일이름(문자)
df['date'].df.weekday # 요일숫자(0-월, 1-화...) (=dayofweek)
df['date'].df.weekofyear # 연 기준 몇주째(숫자) (=week)
df['date'].df.dayofyear # 연 기준 몇일째(숫자)
df['date'].df.days_in_month # 월 일수(숫자) (=daysinmonth)
# day기준 전 날 데이터를 가져옴 (첫 번째 index는 NaN)
df['date_shift1'] = df['date'].shitf()
# day기준 이틀 전 데이터를 가져옴 (첫 번째, 두 번째 index는 NaN)
df['date_shift2'] = df['date'].shitf(2)
# day기준 다음 날 데이터를 가져옴 (첫 번째, 두 번째 index는 NaN)
df['date_shift-1'] = df['date'].shitf(-1)
# 당일 포함 전 날과 이틀 전 데이터의 평균을 추가 (전 날과 이틀 전 데이터 NaN)
df['date_roll_mean_3'] = df['date'].rolling(3).mean()
# 당일 포함 전 날과 이틀 전 데이터 중 가장 큰 값 추가 (전 날과 이틀 전 데이터 NaN)
df['date_roll_max_3'] = df['date'].rolling(3).max()
# min_periods=1 : 최소 1개의 데이터에서 mean을 추가 (NaN없이 모든 데이터 값 추가)
df['date_roll_mean_3'] = df['date'].rolling(3, min_periods=1).mean()
# 당일 데이터 - 전 날 데이터
df['date_diff1'] = df['date'].diff()
# 당일 데이터 - 이틀 전 데이터
df['date_diff2'] = df['date'].diff(2)