개발일지/Python

[Python] 01_ isnull(),droupna(),corr(), hist(), cut()

리베린 2024. 1. 17. 17:03

#스파르타

음수, 양수와 상관 없이 숫자가 클수록 상관 관계가 큰 편이라고 생각하면 됩니다!

  • 양수일 경우 : 한 변수가 증가함에 따라 다른 변수도 증가하는 경향을 보이는 것
  • 음수일 경우 : 한 변수의 수치가 증가할 때 다른 변수는 감소하는 경향을 보이는 것

 


이제부터 파이썬

 
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()
cut함수에 대한 설명 https://wikidocs.net/216879

*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