Oxygen Cherry - Pencil
본문 바로가기

새싹 데이터 분석 교육 (24.05.13~24.08.16)/TIL

[성동2기 전Z전능 데이터 분석가] 0603

728x90

 

파이썬 기초 1일차

❇️ 오늘 배운 내용 
[파이썬 기초]
환경설정 하는 법, 파이썬 장점과 데이터 분석에 유용한 이유
조건문, 변수, 연산자, 입출력문 등 

 

 

주요 개념

 

  1. 아나콘다3 주피터랩 
  2. 숫자형 변수 int(정수) float(소수)
  3. 문자형 변수 string 
  4. 리스트 변수 lsit[] string" " 딕셔너리{ : } 
  5. 연산자: 산술, 비교(관계 ==, !=, <, > 등), 논리(and or)
  6. 입출력문  print input
  7. 조건문 elif 
  8. 줄넘김 \n 

 


| 하루종일 파이썬 강의

 

  • 사람들이 파이썬 쓰는 이유 
  1. 다양한 오픈소스 라이브러리가 많아서 이것저것 활용할 수 있다
  2. 무료로 사용할 수 있음
    데이터 분석 툴도 무료고, 사용자가 많고 교육자료도 많다
  3. 하이레벨 언어 중에 난이도가 가장 쉽다
    초보자에게 추천되는 자바, c, 파이썬 중 제일 쉬움.
    c언어는 하나하나 촘촘하고 길게 입력해야 되는데 파이썬은 간결한 문법과 다양한 내장 함수가 있어서 쌉가능.
  4. 대량의 데이터를 처리할 수 있다
    [각자 다른 강점]
    - c: 보안, 정밀성
    - 자바: 웹
    - 파이썬: 빅데이터, ai

⇒ 빅데이터 처리에 유리 

 

 

 

  • 파이썬 환경 설정 
  1. 아나콘다3 검색해서, 스킵 누르고 설치
  2. 주피터랩 런처 클릭하여 가동
    크롬, 엣지 등 본인이 쓰는 브라우저로 열릴텐데 그게 정상. 안정성은 크롬이 제일 낫지만 사실 상관은없다. 
  3. 데이터 분석용 폴더 생성 
  4. 주피터랩 메인 화면의 노트북- 파이썬 클릭! 

 

사용자명이 한글이면 아나콘다3이 안움직이는 모양이다. 설치명도 한글이면 안움직였다. 한글 차별;; -_-

나는 됐는데 안되는 분도 있었음. 대체용으로 피를? 쓰면 된다카드라. 

 

 

 

 

세팅 오류나신 분들 해결하는 동안, 대충 잡코딩 끄적여봤다. 
이런 간단한 코드도 오류 나길래;; 뭐지 싶었는데 옆자리 코딩 경력자분께 여쭤보니 해결되었다. 

1. print (a) ⇒ 함수랑 붙여써야 한다. 근데 난 띄워쓰기 했음 ㅋㅋ 
2. 리스트 출력은 따로 앞에 * 붙여야 한다. 
3. 파이썬은 ; 이거 안넣어도 되는데, 난 모든 줄에 이걸 붙였다. if문 같은 조건문에만 붙으면 충분하다. 

밑에 거는... 마침 입출력문부터 배우기 때문에 잡을 수 있겠다. 

왜 안되는지는 추후 작성 ㅋㅋ 

 

 


 

 

입출력문

 

문자  - "쌍따움표 안에 넣으면 문자다"

숫자 - 쌍따움표 안에 넣으면 문자 취급. 

print("안녕하세요, 적당히 바람이 시원해 기분이 너무 좋아요 유후~")

 

인풋만 넣고 프린트 안넣으면 ...

넣는 칸만 생기고 다시 안뜨는 거임.... 

 

변수명 = input("안내문") 
print(변수명)

/ 쉬프트+엔터

"안내문" [사용자가 값 입력할 수 있는 영역 - 입력 후 엔터]

/ 
사용자가 입력한 값

 

  • 인풋은 변수를 지정하고 해야 한다. 
  • 인풋 괄호 안은 안내메세지.
  • 프린트로 변수를 출력하면 사용자가 입력한 값이 나온다. 출력 안하면 안나옴. 
  • 인풋으로 입력한 값은 문자열로 출력된다. 숫자 처리 하려면 변환해줘야 함. (int, float)

  • 파이썬은 절차 지항 언어라 아래에서 변수 지정값 바꿔도 잘 작동됨. 물론 오류 생길 수는 있겠으나 실습하는데는 문제 안됨. 
    참고: 자바 스크립트 객체 지향 언어 
  • 객체 지향 언어와 절자 치향 언어의 장단점을 여쭤봤으나 아직 잘 모르겠음. 
    주피터랩은 단락마다 따로 처리해서 (함수 지정은 이어지지만) 오류에 덜 민감하다는 것은 잘 알았다.(원리는 모르겠다)
    (저번에 개발자 친구에게 들었었는데 객체 지향의.. 원리 생각안남. 객체, 자바 스크립트, 위로 끌어올려줘서 어쩌고만 간신히 기억함. 더 떠올려봐야지.)

 

 

문자형 변수
  • 변수란? 다양한 값을 저장하는 공간. 파이썬에는 한글 명칭 가능함. 
  • 딕셔너리: {키:vaiue, 키:vaiue, ...} 데이터베이스에 활용

  • srting " "로 감싸져 있으면 모두 문자열 변수. 
    • 이것도 일종의 list라서 index로 일부 글자 뺴낼 수 있음. 
    • 인덱스해서 빼낸 글자끼리 합쳐 새로운 문장 만들 수 있다. 
  • list[ ] : 여러 데이터로 이루어진 변수. 숫자, "문자" 등 
    • index로 값 뺴낼 수 있음. 

 

  • "ㅁㅁ" + "ㅁㅁ" 하면 
    ㅁㅁㅁㅁ (문자열끼리 붙음)
    "ㅁㅁ" + " " + "ㅁㅁ" 하면 
    ㅁㅁ ㅁㅁ 
  • "ㅁㅁ", "ㅁㅁ" 하면 
    ㅁㅁ ㅁㅁ

 

  • 함수명[?:?] 인덱스
    • 첫번째부터 0 1 2 이케 셈. 0부터 시작. 
    • [0:2] 하면 첫번째(0)부터 2번째까지(3 이전)라는 거임. 3번째 까지 아님. 
      내가 1~3번째 자리 숫자 구하고 싶다 하면 -1:그대로 하면 됨. 

    • 마이너스 붙이면 뒤에서부터 시작. 뒤에서부터 -1 -2... 
    • [2:] 2 이후 (그러니까 세번쨰 포함한 그 이후부터)
    • [:2] 2 이전 (세번째를 포함하지 않고 그 전부터)

*이거 자꾸 헷갈림 ㅋㅋㅋ 

 

 

 

숫자형(데이터 타입) 변수

 

a = int(input("몇 살임? 숫자로 입력해줘."))

print(a)
  • 숫자형 (음수 포함)
    • int() : 정수, 0
      • 소수점 입력하면 오류가 난다. → 조건문 달아서 오류 띄워주면 됨. 
      • 대신 바이트가 적다. 
    • float : 소수점 
      • 정수를 입력해도 오류가 안남. 소수점이든 정수든 사용자가 뭘 입력할지 모를 땐 이걸 쓰기. 
          조건문 안달아도 되니까 코딩 초보나 귀찮고 양 많은 거 싫으면 이걸로?
      • 대신 소수점이 붙어서 깔끔해 보이지는 않는다. 바이트도 더 나감.
    • 둘이 저장하는 방식이 다름. 
    • input으로 받은 값(입력받은 값)은 string(문자열)이기 때문에 input 바깥을 int이나 float로 감싸야 한다. 

  • int : 버림
  • round : 반올림 
  • 변수 지정할 때 int 같은 거 달아버리는 게 편함. 나중에 print 할 때 넣으려면 하나하나 달아야 하니까. 

 

 

 

사칙연산 (산술 연산자)

 

 

  • ==
  • /
  • *
  • //
  • %
  • 부호가 조금 다르지만 일반 수학처럼 괄호 넣기 가능

 

  • "문자열"에 * 곱하기 하면 반복해서 입력이 됨. 

 

 

연산자

 

  • != 같지 않다 ( ... =! 아님)

  • 비교 연산자는 문자끼리도 비교할 수 있다! 
    각자 부여받은 번호가 있는데 먼저 만들어진 순, 통상적으로 정렬된 순(앞에 있는 것이 적은..)으로 숫자가 작다 
    • 대문자 < 소문자
    • a < b 
    • 한국어 < 일본어 < 영어 

 

 

string method (편리한 문자열 내장함수)

 

 

  • print(변수명.capitalize())
    첫글자만 대문자로
  • print(변수명.upper()) 
    전체 대문자로.
  • lower 전체 소문자로. 
    • 이미 다 소문자인 거 로워 씌워도 오류 안남. 원래 대부분 이미 그렇게 된 거 다시 처리해도 오류 안난다. 
  • print(upper(변수)) 
    print(capitalize("apple")) 
    이런 거 오류 뜸. 
    보통 함수 안의 괄호는 뭐를 넣으라는 뜻 넣어도 된다는 뜻이지만 이런 몇몇 거는 특이하게도 앞에 달아야 한다. 
    왜인지는 다음에 알려주시겠다고 하셨음. 
  • len(변수명) 
    길이 계산해서 숫자로 돌려줌. 평범하게 괄호 안에 이름 넣는 형태. 
  • 이런 거에 인덱스 넣어서 몇몇 부분만 활용해도 됨. 

 

 

 

조건문
변수 = 

if 무슨 조건:
	print( ... 
elif 뭐시기...:
	print( ...
else:
	print( ...

여기는 엑셀과 다르게 end if 같은 게 없다. 

 

elif, : , 들여쓰기 명심하기. 

필요한 변수는 미리 정의해놓기. 

int도 필요하면 미리 둘러놓기. 

 

 

 

초반에 오류 났던 부분 고쳤다

 

오늘 수업 초반에 혼자 끄적거리고 오류 왕창 났던 부분, 오늘 진도로 다 나갔기 때문에 고쳐보았다. 

 

이것은 틀리는 과정

함수가 리스트 형일 때 *붙여서 뽑냐 안뽑냐의 차이  

and도 아니고 OR도 아니고 (변수명 생략) == 0 도 아님

오류 없애고 맞는 거 쳤음 

else에는 칠 필요 없다. 

요 부분 틀린 이유는 아마... int 처리를 안해서라고 생각. (왜 안되는진 원리까지는?) 

 

 

 

여백 두기

/n 아님 

\n 이거임 

 

강사님이 가르쳐주시는 거 받아적었는데 저렇게 됐다. 

어떻게 돌리는지는 내일 여쭤봐야지. 

 

  • 출력칸 가독성 있게 띄우는 법 
    print("\n")
  • print 안에서 줄바꿈 하는 법
    print(내용\n 내용\n 내용...)

 

+) 다음날 추가 ㅋㅋ

이렇게 바꾸면 됨 ㅋㅋ 마크다운으로 되어있었음 ㅋㅋ


 

여담

 

정리하기 전레드 귀찮고 

잘 정리된 블로그는 많으니 

걍 내가 헷갈릴 수 있는 부분 위주로만 올린다. 

 

 

 

다음에 복습하면서 연습문제 다시 풀어봐야지. 

이번에는 안풀고 대충 머리속으로만 생각하고 넘긴 파트도 많다. 

 

 

엑셀이든 뭐든 걍 수식 통일하라고. -_-

노션 등에 글 쓰려면 어디서는 쉬프트 엔터해서 줄넘기니까 

여기서 자꾸 쉬트 엔터 해서 결과값 보고 난리다. 

헷갈려헷갈려

 


 

[회고]

 

 

1. 나 왜 나름대로 잘 따라가고 있지? 올 ㅋ 나름 자신감 생기는구만. 

- 응용해서 알아서 뭔가 뚝딱뚝딱 하고 있다. 

- 강사님이 설명해주시는 부분 주석 달면서 잘 적어놓고 잘 이해했다. 

- 연습문제도 별로 어렵지 않게 풀었다. 

 

물론 오늘은 기초 내용이고, 이전에 개발 기초 영상 같은 거 본 적 있고, 주변 개발자분들이 개발 지식 대강이나마 알려준 적도 많았긴 하다. 그게 아무래도 도움된 거 같다.

 

아니었으면 대체 변수는 무슨 개념이고 함수는 뭐지 무슨 관계지 갑자기 이런 개념이 왜 나오지 왜 인풋 할 때도 넣고 프린트 할 떄도 넣지 했을 것이다. 

 

 

2. 왜 저번에 개발 공부를 했을 때는 어렵고 복잡하고 귀찮다는 생각만 들었는데 지금은 다를까? 좀더 자세히 추측을 적자. 

  • 파이썬이 쉬워서?
    자바 스크립트도 쉬운 편에 속하는 언어. 그리고 그럴거면 파이썬 배웠을 때 흥미 느꼈어야 함.
  • 개발 필요성을 더 느껴서?
    개발 기획 기타 등등 잘하는 사람을 더 많이 보기도 했고 주변에 개발자가 많은 편이라 그들을 이해하고 싶다는 욕망이 축적되어서?
  • 강사님이 쉽게 가르쳐주셔서? 
    일단 초장부터 질문하기 편한 환경을 조성해주신 점, ppt 깔끔하게 구성하신 점, 주피터랩이라는 좋은 실습도구로 하는 점은 도움이 되었다. 
    그러나 나는 원리를 이해해야 되는 사람 같은데 이 교육의 특성 상 빨리빨리 지나가야 하다 보니 원리부터 차근차근 가르칠 시간은 없는 것 같다. 이건 전공자도 같은 생각이었다. 
  • 기반 지식이 있어서? 많진 않아도 아예 없는 건 아니므로? < 유력한 추측 
    그러나 이걸로 영향이 그렇게 큰가? 
  • 아침 역질문에 잘 대답해서 자기효능감이 상승했기에? 
    아침에 강사님이 역질문으로 파이썬 왜 쓰냐고 했는데 내가 잘 알고 있엇다. 여기서 뿌듯해서 자기 효능감이 올라간건가? 그게 영향을 끼친건가? 
  • 오늘 컨디션이 좋아서? 
    잠 = 부족해서 아까 살짝 졸았다. 기술블로그 쓰는 시간에도 20분 정도 잠들었다. 
    기분 = 걍 크게 나쁘진 않다. 
  • 약을 먹어서 내 본래 뛰어난 집중력이 발휘되었나? 
    내가 본래 뛰어난 집중력을 가지고 있는지 미지수고 
    약을 먹는다 해서 그런 웅장한 효과가 나오는지도 미지수고 

 

3. 개발 이전에 체계화 사고 훈련부터

아마 체계화 사고를 습득한 경향도 있는 것 같다. 이게 핵심 이유지 않을까? 10년 전 나라면 강사님께 질문도 제대로 못하지 않았을까? 강사님이 잘 가르쳐 주셔도 내가 일단 .. 

2년 전인가? 개발을 처음 접할 떄는 코드를 입력하면서 오류도 더 많이 냈다. 

난 제대로 입력한 거 같은데, 뭐가 틀린지도 모르겠는데, 자꾸 오류가 나서 진행이 안되고, 그렇다고 여기저기 물어보기에는 너무 기초인 거 같고... 

 

나는 여러 가지 이유로 체계화하는 법을 습득해왔다. 

평소 생각을 전개할 때도 정리해서 말할 떄가 많아졌고, 그 점은 마음에 든다. (물론 늘 정리하는 건 아님 ㅋ)

 

이런 점 때문에 개발적 사고가 내면화 되어 가고 있을지도 몰른다. 

 

예전에 부트캠프에서 이런 질문을 했었다. 

"개발자들의 뇌구조는 어떻게 되어 있길래 개발이란 무시무시한 걸 합니까?"

이제는 좀 감이 온다. 

그들은.... 그들은 무시무시한.. 개발적 사고의 소유자들... 

 

그러니, 개발을 더 쉽게 이해하려면 

당장 코드 학습에 뛰어들기 보다 

무언가를 체계화하고 정리하는 훈련부터 하는 게 좋을 거라는 생각이 든다. 

그런 걸 해본 학생이 더 잘배우지 않을까? 

 

 

4. 좀더 인내심이 생겻을지도 모른다. 

개발을 못하는 사람이란 걸 납득해서 욕심이 없는 걸 수도 있고... 

좀더 세부사항을 잘 보게 된걸지도 모른다. 그래서 오류는 좀 적어졌다. 

아니 사실 어려운 부분이아니라서 그런 걸 수도. 

 

뭔가 내려놓은 것도 있는듯, 

원래라면 왜 연산자라고 부르지 

왜 이건 되고 저건 어쩌고 저쩌고 무슨 원리지?! 했을지도 모른다.

 


#청년취업사관학교 #데이터분석가 #데이터분석가부트캠프 #DA교육 #데이터분석교육 #실무프로젝트 #실무경험 #취업포트폴리오 #포트폴리오 #취업연계교육 #코멘토 #모비니티 

728x90