본문 바로가기

TIL

[231211] Phython: 변수, 리스트, 딕셔너리, 조건/반복/비교연산자, 상관관계

* 수강 강의명: 데이터 분석 종합반 - 2주차 

 [요약] 

0. 구글 Colab 시작하기

- 온라인 파이썬 데이터 분석을 학습 플랫폼 https://colab.research.google.com/notebooks/welcome.ipynb

 

1. 데이터 분석에 필요한 파이썬 문법 

1)  변수

- 특정한 이름이 있는 데이터를 담는 컨테이터로, 변수를 통해 데이터를 쉽게 불러올 수 있음 ex. 변수 = 값 

x = 5, y = 2, z = "hello"
print(x)
print(z) 
print(x+y)
------------result------------
5
hello
7
* x, y, z가 변수에 해당되며, 변수에 속한 데이터가 숫자일 경우 기본 사칙 연산 적용 가능

 

2) 리스트

- 순서가 있는 데이터들의 모음집으로 작성 시 대괄호를 사용함 ex. 리스트 = [데이터1, 데이터2, 데이터3 ... ] 

- 리스트 안의 순서는 0부터 시작됨

a_list = [1, 2, 3, 'four', [4, 5]]
print(a_list[0])
print(a_list[3])
print(a_list[4][1]) 
------------result------------
1
four 
5

 

3) 딕셔너리 

- 사전과 유사하게 '이름'과 '이름에 해당하는 값'이 쌍으로 이뤄진 데이터들의 모음집으로 작성 시 중괄호를 사용함

ex.  딕셔너리 = {'키(key)’ : 값(value), '키(key)’ : 값(value) ,  … }

- 원하는 정보인 키(key)를 호출하면 그에 상응하는 값을 쉽게 출력할 수 있음

student_age = {'Jack': 32, 'Ritika': 31, 'Mark' : 22, 'Mathew' : 27}
student_age['Jack']
------------result------------
32

 

4) 조건문 

- 특정한 조건에 맞는 데이터를 추출하기 위한 명령어 

[기본 구조] 
if <조건문>:
   <조건이 성립되면 실행되는 문>
else:
   <조건이 성립되지 않으면 실행되는 문)>

[1_하나의 조건] if / else 
age = 20

if age >= 20:
   print('성인입니다')  > 조건이 참이면 성인입니다를 출력
else:
   print('청소년이에요')   > 조건이 거짓이면 청소년이에요를 출력

[2_복수의 조건] if / elif / else 
age = 65
if age > 80:
   print('아직 정정하시군요')
elif age > 60:
   print('인생은 60부터!')
else:
   print('아직어려요!')

 

** 파이썬은 들여쓰기(indent)로 코드의 블록(시작과 끝) 단위를 나누기 때문에 들여쓰기 여부에 따라 에러가 발생함

 

5) 반복문 

- 데이터를 호출 하기 위한 반복 수행 작업이 필요할 때, 반복되는 작업을 코드 몇 줄로 자동화하는 것

[기본 구조]
- for 변수 in 리스트 : 
       수행할 문장 

fruits = ['사과', '배', '감', '귤']
for fruit in fruits:   >> fruit 은 임의로 지은 이름
     print(fruit)   >> 사과, 배, 감, 귤 하나씩 꺼내어 출력함

 

 

6) 비교 연산자

 - 주어진 두개의 값을 비교하고, 해당 결과를 'True(참)', 'False(거짓)'으로 출력함. 조건문에 유용하게 사용됨 

x = 5
y = 10
ans1 = x > y
ans2 = y > x
print(ans1)  >> False
print(ans2)  >> True

 

[+] 조건문 + 반복문 + 연산자 활용  

Q. 학생 이름과 키가 기록된 데이터에서 키가 170 이상인 학생을 출력하기 

student_height = {"김철수" : 171, "이슬기": 160, "양승화": 180, "이진화": 175}

for x in student_height:
     if(student_height[x]>170):
         print(x)
------------result------------
김철수
양승화
이진화

 

2. Pandas로 상관관계 구하기1) 순서 요약
① Pandas 사용 선언하기 ② 데이터 가져오기 ③ 데이터 확인 및 표 읽기 ④ 공백란 제거하기 ⑤ 상관계 구하기
 
2) 상세 코드
① Pandas 사용 선언하기
import pandas as pd

② 데이터 가져오기
- csv일 경우: titanic = pd.read_table('파일경로',sep=',')  
- excel일 경우:  titanic = pd.read_excel('파일이름.xlsx',engine='openpyxl')  

③ 데이터 확인 및 표 읽기
titanic.head(n)

④ 공백란 제거하기
print(titanic.isnull().sum())
titanic = titanic.dropna()

⑤ 상관계수 구하기
corr=titanic.corr(method='pearson')
corr = corr[corr.Survived !=1] > 상관계수 Survived 요소가 1(최대)이 아닌 수만 불러오기
corr  > 결과 확인하기 

 

3. Matplotlib으로 분석 결과 시각화 하기

1) 순서 요약
① matplotlib 사용 선언하기 ② 그래프 그리기  ③ 그래프로 사용할 부분만 남기기 ④ 원하는 그래프로 변경하기

2) 상세 코드
① matplotlib 사용 선언하기
import matplotlib.pyplot as plt

② 그래프 그리기  
corr.plot()

③ 그래프로 사용할 부분만 남기기 
corr = corr.drop(['PassengerId'], axis ='rows')    >> 필요 없는 항목 삭제
corr['Survived'].plot()

④ 원하는 그래프로 변경하기
corr['Survived'].plot.bar()   >> 막대그래프로 변경 

 

4. 추가 라이브러리 정보

-  넘파이(numpy): 데이터 연산을 빠르고 쉽게 할 수 있게 도와주는 라이브러리
-  씨본(seaborn):  matplotlib보다 다양한 스타일의 그래프 생성이 가능한 데이터 시각화 라이브러리. 랜덤 분포된 데이터를 시각화에 주로 사용됨

- 각 라이브러리 불러오는 코드

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

 

 

[정리]

1) 어떤 문제가 있었나 

2) 내가 시도해본 건 무엇인가

3) 어떻게 해결했나

4) 무엇을 새롭게 알았나

- SQL 코드카타 풀이 중 다른 정답과 비교하면서 하기 문법을 발견하여 추후 상세한 코드 활용법 공부 필요

 : INNER/LEFT JOIN  + USING, IFNULL, DATEDIFF, ROW_NUMBER 

- 파이썬 문법은 외운다고 될 것 같지 않아서, 남은 3~5주차 수업을 최대한 빠르게 훑은 후 복습이 필요함