1. 기초 통계 분석
- describe
수치형 데이터 | 범주형 데이터 | ||
count | 데이터 개수 | count | 데이터 개수 |
mean | 평균 | unique | 고유 데이터 값 개수 |
std | 표준편차 | top | 가장 많이 출현한 데이터 수 |
min | 최솟값 | freq | 가장 많이 출현한 데이터 빈도 |
max | 최대값 |
- info
각 컬럼변 데이터 타입 및 결측치 확인
df.info()
- 상관관계 분석
변수간 선형 상관관계의 강도를 -1 ~ 1 사이의 값으로 계산해서 측정한다.
df_num.corr()
# 'pearson' (기본값): 표준 피어슨 상관 계수를 계산
# 선형관계(이상치가 적고 정규분포에 가까울때)가 있을때 유용
-----------------------------------------------------------------------------------------------
df_num.corr(method = 'kendall')
# 켄달 타우 계수를 계산
# 데이터셋의 크기가 작고 이상치가 많을때 사용
-----------------------------------------------------------------------------------------------
df_num.corr(method='spearman')
# 스피어만 순위 상관 계수를 계산
# 데이터셋의 크기가 작고 이상치가 많을때 사용
# 상관관계 시각화
sns.heatmap(df_num.corr(),
annot = True, # 실제 값 화면에 나타내기
cmap = 'RdYlBu_r', # Red, Yellow, Blue 색상으로 표시
vmin = -1, vmax = 1, #컬러차트 -1 ~ 1 범위로 표시
)
-----------------------------------------------------------------------------------------------
# clustermap은 heatmap의 한단계 진화버전
# 데이터의 유사성 기반으로 행과 열 재비열해서 비슷한 특성의 변수끼리 서로 가깝게 배치
sns.clustermap(df_num.corr(),
annot = True, # 실제 값 화면에 나타내기
cmap = 'RdYlBu_r', # Red, Yellow, Blue 색상으로 표시
vmin = -1, vmax = 1, #컬러차트 -1 ~ 1 범위로 표시
)
2. DataFrame 복사
데이터 프레임을 카피하는 이유는 원본 데이터를 보존하면서 복사된 데이터에 대한 변경이 원본 데이터에 영향을 주지 않도록 하기 위함이다.
df_copy = df.copy()
# 원본과 카피본의 주소를 입력하면 다른 주소 값이 나오는 것을 알 수 있음
id(df), id(df_copy)
3. 결측치 처리하기
- 결측치 확인
df.isnull()
# True, False 값으로 반환
-----------------------------------------------------------------------------------------------
df.isnull().sum()
- bar plot으로 시각화
!pip install missingno
import missingno as msno
msno.bar(df)
- 결측치 삭제
# 결측치가 포함된 행 제거
df.dropna(axis = 0)
-----------------------------------------------------------------------------------------------
# 결측치가 포함된 열제거
df.dropna(axis = 1)
- 결측치 채우기
# 평균
mean = df1['age'].mean()
-----------------------------------------------------------------------------------------------
# 중간값
median = df1['age'].median()
4. Group by
- 기초 문법
# 평균(mean)
df_int = df[['total_bill', 'tip', 'size','day']]
df_int.groupby('day').mean()
-----------------------------------------------------------------------------------------------
# 분산(var)
df_int = df[['total_bill', 'tip', 'size','day']]
df_int.groupby('day').var()
- 다중 통계량
# 다중 통계량 구할때 agg 안에 list로 넣는다
df_int.groupby('day').agg(['mean', 'var'])
-----------------------------------------------------------------------------------------------
# 각기 다른 통계량을 구하고 싶을때 딕셔너리 형태로
df_int.groupby('day').agg({'total_bill': 'mean',
'tip': ['sum', 'var'],
'size': 'median'
})
5. 기타
챗GPT 파이썬으로 사용하기(?)
!pip install openai
import openai
import pandas as pd
** 긍정 부정 분류 필요한 파일 read하기**
API_KEY = '본인 API 키 입력하기'
client = openai.OpenAI(api_key = API_KEY)
def make_review_pn(review):
prompt = f'''
아래 리뷰 읽고 긍정인지 부정인지 판단해서 긍정 또는 부정 만 말해줘
리뷰: {review}
'''
response = client.chat.completions.create(
model = "사용할 모델 이름 넣기 ex) gpt-4o-mini",
messages = [{"role":"user", "content":prompt}])
return response.choices[0].message['content'].strip()
df_review_10['긍정/부정'] = df_review_10['Review_text'].apply(make_review_pn)
df_review_10
'Today I Learned (TIL) > Python' 카테고리의 다른 글
[TIL] Python 챌린지 - 6회차 (0) | 2024.08.08 |
---|---|
[TIL] Python 챌린지 - 5회차 (0) | 2024.08.07 |
[TIL] 통계학 기초 - 6주차 (0) | 2024.08.05 |
[TIL] 통계학 기초 - 5주차 (0) | 2024.08.05 |
[TIL] 통계학 기초 - 4주차 (0) | 2024.08.02 |