사전 캠프 TIL

12월 5일 TIL

meoca1257 2024. 12. 5. 17:45


문제 정의 및 가설 설정 -> 데이터 분석 기본 세팅 -> 데이터 분석 -> 분석 결과 시각화 하기 -> 최종 결론

판다스 (2주차-4)

상관관계 분석을 위한 판다스

1)판다스 사용 선언 
 1-1) import pandas as pd + Ctrl / Enter => 판다스 사용 하겠다 명령어

2)데이터 가져오기
 2-1) 파일 가져오기
 2-2) titanic = pd.read_table('train.csv',sep=',') 타이타닉으로 명며한 트레인 파일 읽겠다 명령어 
 * titanic=pd.read_table('파일이름.xlsx',engine='openpyx') 타이타닉으로 명명한 트레인 엑셀 파일 읽겠다 명령어

3)데이터 확인 및 표 읽기
 3-1) titanic.head() 타이타닉으로 명명한 트레인 파일 가져와 명령어
  * titanic.head(5) 타이타닉으로 명명한 트레인 파일의 앞행 5개 가져와 명령어
 3-2) print(titanic.isnull().sum()) 타이타닉으로 명명한 트레인 파일에서 공백 찾아봐 명령어

4)공백란 제거하기
 4-1) titanic=titanic.dropna() 공백이 있으면 타이타닉으로 명명한 트레인 파일에서 공백 없애 명령어

5) 데이터 분석 
 5-1) corr=titanic.corr(method='pearson') 타이타닉 트레인 파일에서 피얼슨 방법론으로 상관관계 구해 명령어
 5-2) corr 상관관계 제대로 구해졌는지 올려봐 명령어

PassengerId Pclass Sex Age SibSp Parch Fare Survived
PassengerId 1.000000 -0.035349 -0.024575 0.036847 -0.082398 -0.011617 0.009592 0.029340
Pclass -0.035349 1.000000 -0.155460 -0.369226 0.067247 0.025683 -0.554182 -0.359653
Sex -0.024575 -0.155460 1.000000 -0.093254 0.103950 0.246972 0.184994 0.538826
Age 0.036847 -0.369226 -0.093254 1.000000 -0.308247 -0.189119 0.096067 -0.077221
SibSp -0.082398 0.067247 0.103950 -0.308247 1.000000 0.383820 0.138329 -0.017358
Parch -0.011617 0.025683 0.246972 -0.189119 0.383820 1.000000 0.205119 0.093317
Fare 0.009592 -0.554182 0.184994 0.096067 0.138329 0.205119 1.000000 0.268189
Survived 0.029340 -0.359653 0.538826 -0.077221 -0.017358 0.093317 0.268189 1.000000

 5-3) corr=corr[corr.Survived !=1] 타이타닉 생존자 상관관계를 알아보는데 생존자와 생존자 상관관계는 당연히 
1 이므로 이 내용을 삭제해 명령어
 5-4) corr     Survived가 제대로 삭제 됐는지 올려봐 확인하게 명령어

PassengerId Pclass Sex Age SibSp Parch Fare Survived
PassengerId 1.000000 -0.035349 -0.024575 0.036847 -0.082398 -0.011617 0.009592 0.029340
Pclass -0.035349 1.000000 -0.155460 -0.369226 0.067247 0.025683 -0.554182 -0.359653
Sex -0.024575 -0.155460 1.000000 -0.093254 0.103950 0.246972 0.184994 0.538826
Age 0.036847 -0.369226 -0.093254 1.000000 -0.308247 -0.189119 0.096067 -0.077221
SibSp -0.082398 0.067247 0.103950 -0.308247 1.000000 0.383820 0.138329 -0.017358
Parch -0.011617 0.025683 0.246972 -0.189119 0.383820 1.000000 0.205119 0.093317
Fare 0.009592 -0.554182 0.184994 0.096067 0.138329 0.205119 1.000000 0.268189



맷플롯리브 (2주차-5)
1)맷플롯리브 사용 선언
 1-1) import matplotlib.pyplot as plt 맷플롯리브 사용 선언 명령어

2)그래프 그리기
 2-1) corr.plot() 기존 corr 로 상관관계 도출했던 자료를 그래프로 만들어 명령어
 2-2) corr['Survived'].plot() 보고 싶은건 Survived 상관관계 니까 Survived 관련 결과물만 그래프로 만들어 명령어
 * corr.plot() 명령어는 지우고 명령어 넣어야함 (안지우면 corr.plot()가 우선 명령어라 corr['Survived'].plot() 는 무시함)

3)그래프로 사용한 부분만 남기기
 3-1) corr = corr.drop(['PassengerId'], axis ='rows') 
       corr['Survived'].plot() corr에다가 Passengerld만 빼고 Survived 관련 그래프 만들겠다 명령어
  * corr['Survived'].plot()가 아래에 들어가야함 위에 있으면 위에 명령어만 실행하고 Passengerld 빼란 명령어 무시함

4)원하는 그래프로 변경하기
 4-1) corr['Survived'].plot.bar() 막대 그래프로 보고 싶다 명령어


** plt.xticks(rotation=45) x축 레이블 45도 회전하기 명령어 




2주차-6
목표 : 지금까지는 상관관계가 큰 것만 확인하고 타이타닉은 성별, 요금, 좌석등급이 생존율과 관련 있음을 확인했다면
나이와 생존율은 정말 관계가 없는지 확인해볼 예정
하지만 데이터에는 나이관련 내용이 없음

넘파이는 데이터 연산을 빠르고 쉽게 할 수 있게 도와주는 라이브러리임
=> 파이썬으로 수치를 계산 할 때, 여러 함수들을 제공하여 많은 양의 복잡한 수치를 계산 할 때 거의 필수적으로
사용되는 라이브러리다.

시본은 맷플롯리브 로 부터 만들어진 데이터 시각화를 위한 라이브러리
=> 랜덤으로 분포되어 있는 데이터를 시각화 할 때 주로 사용됨. 그리고 기본 맷플롯리브보다 더 다양한 스타일을 
그래프에 적용 할 수 있다. (막대,선 그래프가 아닌 여러가지)

1) 라이브러리 불러오기
 1-1) import pandas as pd 판다스 사용한다 명령어
 1-2) import matplotlib.pyplot as plt 맷플롯리브 사용한다 명령어
 1-3) import numpy as np  넘피 사용한다 명령어
 1-4) import seaborn as sns 시본 사용한다 명령어
 1-5) titanic = pd.read_table('파일경로',sep=',') 타이타닉으로 명명한 트레인 파일 가져와 명령어

print(titanic.isnull().sum()) 타이타닉 표에서 공란 찾아라 명령어
titanic = titanic.dropna() 타이타닉 표에서 공란 제거해라 명령어
titanic.describe() 타이타닉 표에서 평균값, 표준편차, 최솟값, 최댓값 구해라 명령어

PassengerId Pclass Sex Age SibSp Parch Fare Survived
count 714.000000 714.000000 714.000000 714.000000 714.000000 714.000000 714.000000 714.000000
mean 448.582633 2.236695 0.365546 29.699118 0.512605 0.431373 34.694514 0.406162
std 259.119524 0.838250 0.481921 14.526497 0.929783 0.853289 52.918930 0.491460
min 1.000000 1.000000 0.000000 0.420000 0.000000 0.000000 0.000000 0.000000
25% 222.250000 1.000000 0.000000 20.125000 0.000000 0.000000 8.050000 0.000000
50% 445.000000 2.000000 0.000000 28.000000 0.000000 0.000000 15.741700 0.000000
75% 677.750000 3.000000 1.000000 38.000000 1.000000 1.000000 33.375000 1.000000
max 891.000000 3.000000 1.000000 80.000000 5.000000 6.000000 512.329200 1.000000
* mean : 평균값, std : 표준편차, min : 최솟값, max : 최댓값
* 평균 29.69살이고 표준 편차는 14살, 전체 인원중 50%에는 28살이 차지 늙은이 80살 애 0.4살 이다

6) 승객의 나이에 대한 분포도 그래프로 나타내보기
 6-1) #나이별로 히스토그램 구하기
titanic['Age'].hist(bins=40,figsize=(18,8),grid=True) 
* hist() 함수를 통해서 히스토그램 그래프 제작 가능 (바 그래프는 간격이 띄어져 있고 히스토그램은 간격이 없음)
* 18은 x축 길이, 8은 y축 길이를 나타냄
* bins는 그래프에 표시될 바 갯수를 나타냄

7) 나이별 구분 및 생존율 확인 하기
 7-1) #나이별 구분 및 각 나이별 생존율 확인 하기
titanic['Age_cat'] = pd.cut(titanic['Age'],bins=[0,3,7,15,30,60,100],include_lowest=True,labels=['baby','children','teenage','young','adult','old'])
타이타닉 표에 대해 Age 관에서 구분할건데 0살,3살,7살,15살....기준으로 애기,애,십대,젊은,젊은이,늙은이로 구분해

 7-2) titanic.groupby(’Age_cat’).mean() Age_cat을 주축으로 평균값을 구해 명령어
 * groupby : 원하는 컬럼을 기준으로 그룹을 묶을 수 있도록 만들어주는 함수

PassengerId Pclass Sex Age SibSp Parch Fare Survived
Age_cat
baby 396.700000 2.533333 0.400000 1.672333 1.733333 1.366667 33.364307 0.666667
children 466.700000 2.650000 0.600000 4.950000 1.750000 1.350000 27.905830 0.700000
teenage 442.060606 2.696970 0.575758 11.500000 1.727273 1.121212 35.217430 0.454545
young 435.058282 2.426380 0.352761 23.262270 0.355828 0.263804 28.015413 0.358896
adult 470.388693 1.954064 0.353357 41.132509 0.363958 0.392226 42.429225 0.420495
old 432.545455 1.590909 0.136364 66.022727 0.136364 0.272727 41.371214 0.227273
-> 젊을 수록 살아남았다

8) 나이대와 생존율 관계 그래프 그리기
 8-1) plt.figure(figsize=(14,5)) 그래프 크기 설정
 8-2) sns.barplot(x='Age_cat',y='Survived',data=titanic) 바 그래프 그리기 (x축 = Age_cat, y축 = Survived)
 8-3) plt.show() 그래프 나타내기




2주차 숙제 (완)
파이썬을 활용하여 원주민 당뇨병 발병에 가장 영향을 미치는 요소를 찾아보자


 

 

 

데이터 분석 3주차 

3주차-1


그래프 여러가지 써보기, 직장인 버전으로 파이썬 익숙해지기 

데이터로 체크할 수 있게 맹글어보자

목표 1. 최적의 타이밍에 완주를 독려하는 고객 관리 메세지를 보내보자.
메세지 최적의 시간대를 찾자
-> 수강생들이 가장 많이 혹은 가장 적게 듣는 시간과 요일을 데이터 분석으로 찾기

목표 2. 수강 수요가 많은 지역을 찾자.
수강 수요가 많은 지역 찾자
-> 가장 수강을 많이 하는 지역을 데이터 분석으로 찾기

데이터 분석 순서 
1) 문제 정의 및 가설 설정 
2) 데이터 분석 기본 세팅
3) 데이터 분석 (판다스)
4) 분석 결과 시각화 (맷플롯리브)
5) 최종 결론


3주차-2

목표 1. 최적의 타이밍에 완주를 독려하는 고객 관리 메세지를 보내보자.
메세지 최적의 시간대를 찾자
-> 수강생들이 가장 많이 혹은 가장 적게 듣는 시간과 요일을 데이터 분석으로 찾기

1) 판다스 설정 
 1-1) import pandas as pd 판다스 설정, pd를 판다스라 정정할게 명령어

2) 변수값 설정
 2-1) ad=pd.read_table('/content/access_detail.csv',sep=',') ad라는 변수값으로 해당 테이블을 읽어와라 
 * access_detail.csv 파일 우클릭 후 경로 복사하면 /content/access_detail.csv 나옴 
 * sep = seperate 약어

 2-2) ad.head() ad 파일의 5개의 지문 보여줘
 * 2-1)까지 타이핑 후 Ctrl + Enter 했을 때 오류 안뜨면 괜찮은건데 더블 체크용으로 쓰임

            lecture_id             access_date             user_id
0 5f266927e67b8fcf4340c087 2020-08-18 23:15:34 78ff837c7cea9f33
1 5f266927e67b8fcf4340c087 2020-08-04 11:56:07 2987aa87d23c9e3d
2 5f266927e67b8fcf4340c087 2020-08-03 12:19:58 23182525e9996864
3 5f266927e67b8fcf4340c087 2020-08-08 15:15:16 ffb6913842d617a5
4 5f266927e67b8fcf4340c087 2020-08-04 10:30:59 2c6822e7e833dc95




3주차-3

1) 필요 데이터 확인 
 * acess_detail.csv 자료엔 사람들 id, 강의한 id, 접속 시간이 기재되어 있는데 사람들id 는 쓸모없음
 * acess_detail.csv 자료엔 접속 시간이 2020-08-18 23:15:34 로 기재되어 있는데 요일과 시간만 필요함

2) 시간 데이터 전처리 해주기
  * print(type(1)) Q. 1의 타입 뭐야?  A. <class 'int'> 정수형 이다 
  * print(type("hello"))  Q. hello의 타입은 뭐야? A. <class 'str'> 문자열 이다
 2-1) access_data 데이터 종류 확인
 print(type(ad["access_date"][0])) Q. ad에 있는 access_date 맨 처음은 어떤 타입이야? A. <class 'str'> 문자열 이다
  => 문자열(문자)이 아닌 정수형(날짜)로 바꿔줘야함 
 2-2) 날짜(시간) 데이터 형태로 변경
 format='%Y-%m-%dT%H:%M:%S.%f'
 ad['access_date_time'] = pd.to_datetime(sparta_data['access_date'], format=format)
 ad.tail(5)
 * %Y는 년도, %m은 월, %d는 일

 코드 못 읽고 있음 명일 수정 예정
 
 

'사전 캠프 TIL' 카테고리의 다른 글

12월9일 TIL  (4) 2024.12.09
12월6일 TIL  (0) 2024.12.06
12월4일 TIL  (4) 2024.12.04
12월 3일 TIL  (3) 2024.12.03
QA / QC 란?  (0) 2024.12.02