[Python] 01_ isnull(),droupna(),corr(), hist(), cut()
#스파르타

음수, 양수와 상관 없이 숫자가 클수록 상관 관계가 큰 편이라고 생각하면 됩니다!
- 양수일 경우 : 한 변수가 증가함에 따라 다른 변수도 증가하는 경향을 보이는 것
- 음수일 경우 : 한 변수의 수치가 증가할 때 다른 변수는 감소하는 경향을 보이는 것
이제부터 파이썬
import pandas as pd
titanic=pd.read_table('train.csv', sep=',') titanic.head() titanic = titanic.dropna() corr=titanic.corr(method='pearson') corr |
(1) Pandas 라이브러리 사용 선언하기
import pandas as pd
(2) 데이터를 Colab 으로 가져오기
titanic=pd.read_table('파일경로', sep=',')
(3) 표 읽기 및 데이터 확인
#데이터의 처음 n줄의 데이터를 출력합니다.
#아무 입력이 없을 경우 5줄을 기본으로 출력합니다.
titanic.head(n)
(4) 공백란 제거 하기
# 1.Null(공백) 데이터 파악하기
print(titanic.isnull().sum())
# 2. 공백 데이터 제거하기
titanic = titanic.dropna()
(5) 상관계수 구하기
corr=titanic.corr(method='pearson')
(6)결과 확인 하기
corr

* 타이타닉 호 나이대별로 생존률 좀 더 정확히 알아보기
(1) 라이브러리 불러오기
import pandas as pd
import matplotlib.pyplot as plt import numpy as np import seaborn as sns |
*numpy: 넘파이는 데이터 연산을 빠르고 쉽게 할 수 있게 도와주는 라이브러리
*seaborn: seaborn은 matplotlib 으로 부터 만들어진 데이터 시각화를 위한 라이브러리
(2) 데이터 불러오기
titanic = pd.read_table('파일경로',sep=',')
|
(3) 데이터 확인하기
titanic.head()
|
(4) 데이터 확인 하기 및 결측치 제거 하기
print(titanic.isnull().sum())
titanic = titanic.dropna() |
(5) 타이타닉 데이터 통계치 요약하기
titanic.describe()
|
(6) 승객의 나이에 대한 분포도 그래프로 나타내보기
#나이별로 히스토그램 구하기
titanic['Age'].hist(bins=40,figsize=(18,8),grid=True) |
*hist() 함수를 통해서 히스토그램을 그릴 수 있음.
* bins: 히스토그램의 가로축 구간의 개수
* figsize(가로길이,세로길이)
* grid: 말 그대로 그리드 추가하는 것
(7) 나이별 구분 및 생존율 확인 하기
#나이별 구분 및 각 나이별 생존율 확인 하기
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']) #연령대를 기준으로 평균 값을 구해 볼수 있어요! titanic.groupby('Age_cat').mean() |

*groupby: 원하는 컬럼을 기준으로 그룹을 묶을 수 있도록 만들어주는 함수
*mean(): 평균값을 구하는 함수
(8) 나이대와 생존율 관계 그래프 그리기
#그래프 크기 설정
plt.figure(figsize=(14,5)) # 바 그래프 그리기 (x축 = Age_cat, y축 = Survived) sns.barplot(x='Age_cat',y='Survived',data=titanic) # 그래프 나타내기 plt.show() |
* 당뇨병 발병에 가장 큰 영향을 미치는 요소는 글루코스(혈당) 수치라고 가설 문제
#Pandas 라이브러리 불러오기
import pandas as pd #피마 인디언 당뇨병 파일 불러오기 diabetes = pd.read_table('diabetes.csv',sep=',') #데이터 앞부분 확인 하기 diabetes.head() #데이터가 null인 데이터 출력하기 print(diabetes.isnull().sum()) #데이터가 null인 데이터 제거 하기 diabetes = diabetes.dropna() #상관관계 분석하기 corr = diabetes.corr(method='pearson') #Outcome 상관관계 계수가 1인 요소 제외하고 출력하기 corr = corr[corr.Outcome !=1] corr #matplotlib으로 시각화 하기 import matplotlib.pyplot as plt corr['Outcome'].plot() #바 그래프로 변경하기 corr['Outcome'].plot.bar() |
목표 : 수강생들이 가장 많이 혹은 가장 적게 듣는 시간과 요일을 데이터 분석으로 찾기
#pandas이용선언
import pandas as pd #분석할 데이터 불러 오기 sparta_data= pd.read_table('/content/access_detail.csv', sep=',') #데이터 살펴보기. (head를 통해 상위 데이터 5개 확인 가능) sparta_data.head() #파이썬의 type()함수를 쓰면, 데이터의 종류를 확인 할수 있어요 :) print(type(sparta_data['access_date'][1])) #sparta_date 정보에서 access_date 열에서 데이터 첫번째 부분만 확인 하면 되겠죠? # access_date는 날짜 및 시간이 아닌 "문자열"로 나타남 #날짜 원하는 형태로 지정하기 # to_datetime() 은 괄호 안, 해당 열의 데이터를 날짜와 시간 데이터로 변경해줌 format='%Y-%m-%dT%H:%M:%S.%f' sparta_data['access_date_time'] = pd.to_datetime(sparta_data['access_date'], format=format) sparta_data.tail(5) #[날짜 컬럼].dt.day_name 으로 해당 날짜의 요일을 가져 올 수 있음. sparta_data['access_date_time_weekday'] = sparta_data['access_date_time'].dt.day_name() sparta_data['access_date_time_hour'] = sparta_data['access_date_time'].dt.hour sparta_data.tail(5) weeks = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] weekdata = sparta_data.groupby('access_date_time_weekday')['user_id'].count() weekdata = weekdata.agg(weeks) #week의 리스트에 따라 데이터들을 다시 한 번 재배열 할수 있음. # [날짜 컬럼].dt.hour 을 사용하면 해당 날짜의 시간 값을 가져 올 수 있음. # sort_index()는 데이터를 오름차순으로 정렬해줌. # 내림차순은 sort_index(ascending=False) hourdata = sparta_data.groupby('access_date_time_hour')['user_id'].count() hourdata = hourdata.sort_index() hourdata |