AI 전문가가 되고싶은 사람
파이썬 프로그래밍 (pandas) 복습 본문
데이터프레임
테이블 형태, 엑셀 형태 ( 보통은 csv파일, 엑셀 파일 또는 DB에서 읽어옴 )
1. 인덱스와 열 이름이 없는 형태
데이터프레임은 실무에서는 자주 볼 수 없음
2. 열 이름을 지정한 형태
인덱스를 지정할 필요가 없는 경우가 많으므로 자주 보게 되는 형태
3. 인덱스와 열 이름을 지정한 형태
대부분 주식 시세와 같은 날짜가 인덱스로 지정되는 경우
데이터프레임 만들기 ( pd.DataFrame() )
대부분 리스트, 딕셔너리, Numpy 배열로부터 데이터프레임을 만듦
데이터 프레임을 만들기 위해서는 (데이터, 열 이름, 인덱스 이름 )이 필요
열 이름 지정 x -> 열 번호에 기반한 정수가 열 이름이 됨
인덱스 이름 지정 x -> 행 번호에 기반한 정수가 인덱스 이름이 됨
csv파일 읽어오기
data = pd.read_csv(path)
상위 데이터 확인 ( head )
data.head()
하위 데이터 확인 ( tail )
data.tail()
크기 확인 ( shape )
data.shape
열 확인 ( columns )
print(data.columns)
데이터프레임을 리스트 함수에 넣으면 열 이름이 리스트로 반환
list(data)
자료형 확인 ( int64 : 정수, float64 : 실수, object : 문자열 )
data.dtypes
열 자료형, 값 개수 확인
data.info()
기초통계정보 확인
데이터에 대한 많은 정보를 제공하는 중요한 메소드
개수, 평균, 표준편차, 최솟값, 사분위값, 최댓값 표시
data.describe()
정렬해서 보기
sort_values() 메소드로 특정 열을 기준으로 정렬
ascending 옵션을 설정해 기본값 오름차순(True) , 내림차순(False)
data.sorted_values(by='특정 열', ascending = (True or False))
특정 열1이 동률이면 특정 열2로 정렬하기
data.sort_values(by=['특정 열1', '특정 열2'], ascending=[True, False])
별도로 저장하고, 뒤죽박죽 섞여 있는 인덱스 reset
temp = data.sort_values(by=['특정 열1', '특정 열2'], ascending=[True, False])
temp.reset_index(drop = True) # 기존 인덱스 없앨 지 그대로 둘 지
기본 집계
고윳값 확인 ( unique() )
print(data['특정 열'].unique())
고윳값과 개수 확인 ( value_counts() )
print(data['특정 열'].value_counts())
특정 열의 합계, 최댓값, 평균값, 중앙값
print(data['특정 열'].sum()) # 합계
print(data['특정 열'].max()) # 최댓값
print(data['특정 열'].mean()) # 평균
print(data['특정 열'].median()) # 중앙값
DataFrame 조회
시리즈와 데이터프레임
1. 데이터 프레임 : 2차원 구조
2. 시리즈 : 1차원 구조
* 데이터프레임에서 열 하나를 띄어 내면 시리즈
특정 열 조회
df.loc[ : , [열 이름1, 열 이름2,...]] 형태로 조회할 열 이름을 리스트로 지정
열 부분은 생략 가능, 행 부분은 생략 x + 조회할 열이 하나면 리스트 형태가 아니어도 됨
#특정 열 조회 : 시리즈로 조회
data['특정 열']
# data.특정 열
# 특정 열1, 특정 열2 조회 : 데이터 프레임
data[['특정 열1','특정 열2']]
조건으로 조회
df.loc[조건] 형태로 조건을 지정해 조건에 만족하는 데이터만 조회 가능
* 우선 조건이 제대로 판단이 되는지 확인한 후 그 조건을 대 괄호 안에 넣기
1. 단일 조건 조회
data['특정 열'] > 10 # 결과는 True, False
# 특정 열 값이 10 보다 큰 행 조회
data.loc[data['특정 열'] > 10]
2. 여러 조건 조회
[] 안에 조건을 여러 개 연결할 때 and와 or 대신에 &와 |를 사용해야 합니다.
# and로 여러 조건 연결
# (조건1) & (조건2)
data.loc[(data['특정 열'] > 10) & (data['특정 열'] == 4)]
# |로 여러 조건 연결
# (조건1) | (조건2)
data.loc[(data['특정 열'] > 10) | (data['특정 열'] == 4)]
3. isin(), between()
isin([값1, 값2, ..., 값 n]) : 값1 또는 값2 또는... 값 n인 데이터만 조회
*주의 : isin(리스트) 값들을 리스트 형태로 입력해야 함
# 값 나열
data.loc[data['특정 열'].isin([1,4])]
# 같은 의미
data.loc[(data['특정 열'] == 1) | (data['특정 열'] == 4)]
between(값1,값2) : 값1 ~ 값2까지 범위 안의 데이터만 조회
inclusvie = 'both' (기본값)
* 'left', 'right', 'neither'
# 범위 지정
data.loc[data['특정 열'].between(25, 30)]
# and 조건
data.loc[(data['특정 열'] >= 25) & (data['특정 열'] <= 30)]
4. 조건을 만족하는 행의 일부 열 조회
# 조건에 맞는 하나의 열 조회
data.loc[data['특정 열1'] >= 10000, ['특정 열2']]
# 조건에 맞는 여러 열 조회
data.loc[data['특정 열'] >= 10000, ['특정 열1', '특정 열2', '특정 열3']]
데이터프레임 집계
# 특정 열 합계
data['특정 열'].sum()
# 특정 열1, 특정 열2 각각의 평균
data[['특정 열1', '특정 열2']].mean()
1. 집계하기
- as_index = True 설정(기본값)하면 집계 기준이 되는 열이 인덱스 열이 됨
# 특정 열1 별 특정 열2 평균 --> 시리즈
data.groupby('특정 열1', as_index=True)['특정 열2'].mean()
# 특정 열1 별 특정 열2 평균 --> 데이터프레임
data.groupby('특정 열1', as_index=True)[['특정 열2']].mean()
- as_index = False를 설정하면 행 번호를 기반으로 한 정수 값이 인덱스로 설정됨
2. 여러 열 집계
# 특정 열1 기준으로 특정 열2와 특정 열3의 평균 구하기
data.groupby('특정 열1', as_index=False)[['특정 열2','특정 열3']].mean()
# '특정 열1', '특정 열2'별 나머지 열들 평균 조회
data_sum = data.groupby(['특정 열1', '특정 열2'], as_index=False)[['특정 열3','특정 열4']].mean()
3. 여러 함수로 한꺼번에 집계
# df.groupby().agg(['함수1','함수2',...]]
data_agg = data.groupby('특정 열1', as_index=False)[['특정 열2']].agg(['min','max','mean'])
'기자단 활동' 카테고리의 다른 글
분산 분석 ( ANOVA) 및 이변량 분석 복습 (0) | 2024.03.01 |
---|---|
가설 검정, 중심 극한 정리, t-test 정리 및 복습 (2) | 2024.02.28 |
파이썬 시각화와 단변량 분석 복습 ( + 시계열 데이터 처리 ) (1) | 2024.02.28 |
파이썬 프로그래밍 ( 데이터 프레임 변경 및 결합 ) 복습 (1) | 2024.02.26 |
파이썬 프로그래밍 ( Numpy ) 복습 (0) | 2024.02.23 |