conda create -n <환경명> python=<버전(ex:3.8)> #환경명 :MS 파이썬 버전 : 3.8
conda activate <환경명>
pip install jupyter notebook
pip install ipykernel
python -m ipykernel install -user -name <환경명> -display-name <환경명>
IPykernel
은 주피터 노트북과 주피터 인터랙티브 컴퓨팅 프레임워크를 위한 파이썬 커널이다. 이 커널을 사용하면 노트북 환경에서 파이썬 코드를 실행하고 상호작용할 수 있다.
- 통계 개념 간단 소개
- 데이터 파트
- 가설 감정
- 상관 분석
- 분포 모형
- 비모수적 방법
- 시계열 분석
- 다변량 분석
- 통계에서 가장 기본적인 개념은 데이터
- 데이터를 이해하기 위해서는 분포와 패턴을 파악할 필요가 있음
- 통계에서 가장 중요한 개념은 가설 검정과 추론
이외에도 통계 기반 데이터 분석에는 표본 추출, 분포 가정 등 다양한 기법과 개념이 포함 될 수 있음
주의할 점
- 정확한 측정과 적절한 분포 가정이 필요함
- 연속형 데이터는 무한히 많은 값이 있기 때문에 표본 데이터로부터 모집단의 특성을 추정할 때 적절한 범위를 정해야함
!pip install pandas
!pip install matplotlib
Black Friday Sales
import pandas as pd
import matplotlib.pyplot as plt
# 데이터셋 불러오기
data= pd.read_csv('./data/BlackFriday.csv')
# User_ID별 구매 총 금액 계산
user_total_spent=data.groupby('User_ID')['Purchase'].sum()
print(user_total_spent)
User_ID
1000001 334093
1000002 810472
1000003 341635
1000004 206468
1000005 821001
...
Name: Purchase, Length: 5891, dtype: int64
matplotlib
을 이용해 시각화하기plt.hist(user_total_spent,bins=50)
plt.title('Histogram of Total Purchase Amount by User')
plt.xlabel('Total Purchase Amount')
plt.ylabel('Frequency')
plt.show()
!pip install scipy
# 밀도 그래프 시각화
plt.figure()
user_total_spent.plot.kde()
plt.title('Density plot of Total Amount by User')
plt.xlabel('Total Purchase Amount')
plt.show()
!pip install seaborn
!pip install numpy
데이터 시각화 튜토리얼
https://seaborn.pydata.org/tutorial.html
data=np.random.normal(loc=0,scale=1,size=1000)
# 데이터 분포 시각화
sns.histplot(data)
plt.show()
# 데이터 통계 지표 계산
mean= np. mean(data) #mean() : 평균
std=np.std(data) #std() : 표준편차
print('평균 : ', mean)
print('std : ',std)
평균 : -0.028850057890706715
std : 1.0073938448282973
import numpy as np
import matplotlib.pyplot as plt
# 데이터 생성
data=np.random.normal(loc=0,scale=1,size=10000)
# 중심 경향성 계산
# 평균(mean),중앙값(median),최빈값(mode)
mean = np.mean(data)
median=np.median(data)
mode=np.round(np.mean(data))
print(mean,median,mode)
0.008870126744707763 -0.0007172149572973895 0.0
# 분포 시각화
fig, ax = plt.subplots()
ax.hist(data, bins=50)
ax.axvline(mean, color='red', linestyle='dashed', linewidth=2)
ax.axvline(median, color='green', linestyle='dashed', linewidth=2)
ax.axvline(mode, color='purple', linestyle='dashed', linewidth=2)
ax.legend(['Mean: {:.2f}'.format(mean), 'Median: {:.2f}'.format(median), 'Mode: {}'.format(mode)])
ax.set_xlabel('Data Values')
ax.set_ylabel('Frequency')
ax.set_title('Data Distribution')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# 두 변수 간의 상관관계 설정
np.random.seed(0)
x=np.random.normal(loc=0,scale=1,size=100)
y=x+np.random.normal(loc=0,scale=0.5,size=100)
# 산포도 그리기
fig, ax = plt.subplots()
ax.scatter(x, y)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Scatter Plot')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# 데이터 생성
data=np.concatenate([np.random.normal(0,1,900),
np.random.normal(8,2,100),
np.random.normal(-4,2,100)])
# 상자 그림(Box Plot) 시각화
fig, ax = plt.subplots()
ax.boxplot(data)
ax.set_xlabel('Data')
ax.set_ylabel('Values')
ax.set_title('Box Plot')
plt.show()
# 히스토그램(Histogram) 시각화
fig, ax = plt.subplots()
ax.hist(data, bins=50)
ax.set_xlabel('Data')
ax.set_ylabel('Frequency')
ax.set_title('Histogram')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# 데이터 생성
np.random.seed(0)
x=np.random.normal(loc=0,scale=1,size=100)
y=2*x+np.random.normal(loc=0,scale=1,size=100)
# 2*x 해준 이유?
# 그래프가 이쁘게 나와서
# 선점도 시각화
fig, ax = plt.subplots()
ax.scatter(x, y)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Scatter Plot')
plt.show()