1980 년대 : OLTP, OLAP
  • OLTP: on-Line transaction processing 온라인 거래 처리 

- eg: 상품 주문, 회원정보 수정 , 은행이체

- 주컴퓨터와 통신 회성으로 접속하여 있는 복수 사용자의 단말에서 발생한 드랜잭션을 주 컴퓨터에서 처리하여 그결과를 사용자에게 되돌려주는 처리형태.

 

  • OLAP: on-Line analytical Processing ,온라인 분석처리

-eg : 10년가 A사의 직급적 임금 상승률 <- not 1건의 거래에 대한 것

- 다차언으로 이루어진 데이터로부터 통계적인 요약 정보를 제공할수 있는 기술, 다차원 데이터를 대화식으로 분석하기 위한 소프트웨어 

https://www.linkedin.com/pulse/explain-example-oltp-vs-olap-michelle-xie

2000년대 CRM SCM 
  • CRM: customer Relationship Management 

- 고객별 구매이력 데이터 베이스를 분석하고 고객에 대한 이해를 돕고 이를 바탕으로 각종 마케팅 전략을 동해 보다 높은 이익을 창출할수 있는 솔루션.

 

  • SCM : supply chain Management 

-제조,물류,유통업체 등 유통공급망에 참여하는 모든 업체들이 협력바탕으로 정보기술 을 활용, 재고의 최적화 하기 위한 솔루션.

-기업의 외부 공급체 또는 제츄 업체와 통합된 정보 시스템으로 연예하여 시간과 비용을 최적화 시키기위한것 

-자재구매 데이터, 생산, 재고 데이터, 유통/판매 데이터, 고객 데이터로 구성

 

분야별 기업의 내부 데이터베이스 솔루션 : 제조 부분
  • Data Warehouse 

- 기업 내의 의사 결정 지원 application 을 위해 정보 제공하는 하나의 통합된 데이터 저장 공간 

- ETL(extract, transform,load): 주기적인 내부 및 외부 데이터 베이스로 부터 정보를 추출하고 정해진 규약에 따라 정보를 변환 한 후에 정보를 적재함. 

- 데이터들은 시간적 흐름에 따라 변화하는 값을 일정하게 유지 

  • Data warehouse 의 4대 특징 

1. 데이터 통합 : 데이터들은 전사적인 차원에서 일관된 형식으로 정의

2. 데이터의 시계열성: 관리되는 데이터들은 시간의 흐름에 따라 변화 하는 값을 저장함.

3. 데이터의 주제지향적 : 특정 주제에 따라 데이터들을 분류 저장 관리됨 (분류하지만 따로 관리 하는것은 아니다, 분류해서 관리하는것은 Data Mart)

4. 비소멸성(비휘발성) : Batch 작업에 의해 생신외에 변하지 않음 (빈번한 삽입, 삭제아님)

 

  • Datamart

- 전자적으로 구축된 데이터 웨어하우스로부터 특정 주제, 부서중심으로 구축된 소규모 단일주제의 데이터 웨어하우스.

- 재무, 생산, 운영과 같은 특정 조직의 특정업무 분야에 초점 

  • ERP

-Enterprise Resource Planning, 제조업을 포함한 다양한 비즈니스 분야에서 생산, 구매, 재고, 주문, 공급자와의 거래, 고객서비스 제공등 주요 프로세스관리를 돕는 여러 모듈로 구성된 통합된 application 

  • BI (business intelligence) 

- 기업의 datawearhouse 에 저장된 데이터에 접근해 경영의사결정에 필요한 정보를 획득하고 이를 경영 활동에 활용하는것 

-데이터를 통합분석하여 기업활동에 연관된 의사결정을 돕는 프로세스

-여러곳에 산재하여 있는 데이터를 수집하여 체계적이고 일목요연하게 정리하므로써 사용자가 필요하는 정보를 정확한 시간에 제공할수 있는 환경 by 가드너 

- 하나의 특정 비즈니스 질문에 답변하도록 설계 <- 단위 

 

  • ad hoc report 

- BI 와 빅데이터 분석의 차이점을 표현한 키워드,일회용으로 작성되는 임시 보고서 BI 도구를 사용하면 조직의 모든 가용자가 IT 직원에게 부담주지 않음 특정비지니스 질문에 답변 하고 해당 데이터를 시각적으로 표현할수 있으며 구조화된 보고서랑은 다르다.

- Optimization, forecast, insight : 빅데이터 키워드 

 

  • BA(business analytics) 

-경영 의사 결정을 위해 통계적이고 수학적인 분석에 초점을 둔 기법

-성과에 대한 이해와 비지니스 동할력에 초점을 둔 분석 방법 

-사전에 예측하고 최적화 하기위해 BI 보다 진보된 형태 

 

분야별 기업의 내부 데이터베이스 솔루션 : 금융부분
  • 블록체인(Block chain) 

기존 금융회사의 중앙집중형 서버에 거래 기록을 보관 하는 방식에서 벗어나 거래에 참여하는 모든 사용자에게 거래의 내용을 보내주며 거래때 마다 이를 대조하는 데이터 위조 방지기술 

https://media.geeksforgeeks.org/wp-content/uploads/blockchain-trncation.png

분야별 기업의 내부 데이터베이스 솔루션 : 유통부분
  • KMS (Knowledge Management system)

-조직 내의 지식을 체계적으로 관리 하는 시스템.

  • RFID (RF, Radio Requency)

무선 주파수를 이용하여 대상을 식별하는 기술 

-RF 태그에 사용 목적에 알맞은 정보를 저장 하여 저굥대상에 부탁한후 판독기에 해당 되는 RFID 디러를 통해 정보를 인식함 

'Coming > ADsP' 카테고리의 다른 글

ADsP 과목 1 : 데이터의 이해 (1)  (1) 2022.10.05
데이터 분석 기법의 이해  (0) 2022.09.26

 

데이터의 정의 

데이터는 개별 자체로의 의미는 중요 하지 않고,fact(객관적인사실)에 중요. 

데이터를 통하여 추론, 예측, 전망, 추정 한다. 하나의 데이터가 아닌, 다른 객채와 상호관계 속에서 가치를 갖는다 

 

데이터의 유형 ★

Qualitative (정성적 데이터) 질적 데이터: 

- 자료의 성질, 특징을 자세히 풀어 쓰는 방식 

- 언어, 문자로 표현 (eg 기상특보, SNS 에 올린글, 주관식 조사)

비정형 데이터 형태로 저장, 분석에 시간과 비용이 필요 

 

Quantitative data (정량적 데이터)  양적 데이터: 

-수치, 기호, 도형 으로 표시(예시 : 온도,습도, 강우량, 풍속)

-데이터 양이증가 하더라도 저장과 분석이 용이함. 

암묵지 VS 형식지 

가장 널리 알려진 지식의 차원은 Polanyi 에 의해 구분된 "암묵지와 형식지" 

암묵지(무형지식 via 경험) 형식지(유형지식 via 유형지식)
학습과 체험을 통해 개인이 습득 (현장 작업과 간은 경험을 통해서 획득) 교과서 메뉴얼 비디오, DB등으로 형상화 된 지식을 의미
시행착오와 오랜 경험을 통해 개인에게 습득  
eg 김장김치담기, 자전거타기, 운전  eg) 회계, 재무관련 대차대조표 요구 되는 지식의 메뉴얼 
공유가 어려움  공유가 쉬움 
암묵지와 형식지의 상호작용지식경영의 핵심 이슈!! 
※지식경영이란?

개인의 암묵지와 집단의 형식지가 나선형의 형태로 회전하면서 생성, 발전, 전환되는 지식의 발전을 기반으로 한 기업의 경영 

https://www.kais99.org/jkais/journal/v13n6/16/46g6/46g6.pdf

암묵지, 형식지의 4단계 지식 전환모드  (위 사진 참고)

1단계 : 공동화(socialization) : 암묵지 지식 노하우를 다른사람에게 알려주는것 (암-암) 

2단계:  표출화( exteralization) : 암묵적 지식 노화우를 핵이나 교본등 형식지로 만드는것 (암-형)

3단계:  연결화(combination) : 책이나 교본( 형식지)에 자신이 알고 있는 새로운 지식(형식지)을 추가 하는것 (형-형)

4단계:  내면화(internalization) : 만들어진 책이나 교본(형식지)를 보고 다른 직원들이 암묵적인 지식(노하우)를 습득 (형-암)

 

데이터와 정보의 관계 

Data -> Information -> Knowledge -> Wisdon 계층 구조 

*data : 타 데이터와 상관관계가 없는 가공하기 전의 순수 수치나 기호 _ a 마트 100원, b 마트 200 원

information : 데이터 가공상관/연관 관계속에서 의미가 도출된것_  a마트가 b 마트 보다 싸다 

Knowledge : 상호연결된 정보 패턴을 이해 토대로 예측한 결과물_  상대적으로 저렴한 a 마트에서 사야지 

Wisdon: 근본원리에 대한 깊은이해 를 바탕으로 도출된 아이디어 _ a 마트가 다른 상품또한 b보다 저렴할듯.

 

Database 의 특징. 

통합 데이터 (integrated) : 데이터베이스에 감은 내용의 데이터가 중복 되지 않는다 ( 중복을 제거함)

저장 데이터(stored) : 자기디스크나 자기테이프 등과 같이 컴퓨터가 접근할수 있는 저장 매체에 저장 되는것을 의미 

공용 데이터(shared) : 여러 사용자에게 서로 다른 목적으로 데이터 베이스의 데이터를 공동으로 이용

변화 하는 데이터(changed) : 새로운 데이터의 추가, 기존 데이터의 삭제, 갱신으로 항상 변화 하면서도 항상 현재의 정확한 데이터를 유지  -> not 정량적 데이터 상태 

 

Data-Base Management System(DBMS)

DBMS : 사용자와 데이터베이스 사이에 사용자의 요구에 따라 정보를 처리해주고 데이터베이스를 관리 해주는 소프트웨어. 

DBMS or a Database Management System is the computer software that enables storing, manipulating, managing and securing a large set of data.

 

 

RDBMS(Relational Database Management System) ODBMS(Objected-Orentied Database management system) 
관계형 데이터베이스 관리 시스템 
: s a database system software that manages and maintains data in the tabular format.
객체 지향데이터베이스 관리 시스템 
정형화된 테이블로 구성된 데이터 항목들의 집합체 객체들을 생성하여 계층에서 체계적으로 정리하고, 다시 계층들을 하위 계층으로 부터 속성과 방법들을 물려 받을수 있는
DBMS
MySQL(오픈소스,RDBMS), Oracle Database (상용 RDBMS) 복잡한 데이터 구조를 표현 및 관리하는 DBMS
SQL : RDBMS의 데이터를 관리하기위해 설계된 특수 목적의 프로그래밍 언어. 
:Structured Query Language is used to operate on the data stored in a databas

챔벌린과 데이먼드.F 보이스가 처음 개발 
 

RDBMS
https://www.stechies.com/userfiles/images/DMBS-RDBMS.jpg

 

https://media.geeksforgeeks.org/wp-content/uploads/20201224205618/oo.png

데이터베이스 셀계 절차 ★

요구조건분석 -> 개념적 설계 -> 논리적 설계 -> 물리적설계 

*요구조건분석 : 데이터베이스 사용자, 사용목적, 사용범위, 제약조건 등을 정리. 명세서 작성. 

개념적 설계 : E-R 모델, 정보를 추상적 개념으로 표현 하는 과정, DBMS 독립적 E-R다이어그램 작성.

논리적 설계 : 자료를 컴퓨터가 이해할수 있도록 DBMS 의 논리적인 자료 구조로 변환 

물리적 설계 : 논리적 구조로 표현된 데이터를 물리적 구조의 데이터 변환 하는 과정 

https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRiVyTewKFP8e0QVwMybKo6lVx0CwhPRPCVgw&usqp=CAU

 

NoSQL 

RDBMS 보다 덜 제한적인 일관성 모델을 이용 하는 데이터의 저장 및 검색을 위한 메커니즘 제공, 디자인 단순화, 수편적 확장성, 세세한 통제등을 포함 

기존의 RDBMS가 갖고 있는 특성 뿐만 아니라 다른 특성을 부가적으로 지원함.

 

https://www.clariontech.com/hs-fs/hubfs/SQL-NOSQL.png?width=813&name=SQL-NOSQL.png

NoSQL 저장 방식 도구 : MongoDB , Apache HBase, Redis <------->MySQL(RDBMS)

MongoDB: 데이터 교환시 비산(BSON: Binary JSON) 문서 형대로 저장 하여 여러 서버에 분산 저장 및 확장이 용이 하며 방대한 데이터 처리가 용이, C++로 작성된

Apache HBase: 하둡 플랫폼을 위해 비관계성 분산데이터 데이타 베이스. 구글의 빅테이블을 본보기로 삼았으며, 자바로 쓰여졌다. 

Redis: remote Ditionary Server "키-값' 구조의 비정형 데이터를 저장하고 관리 하기 위해 오픈소스의 비관계성 데이터관리 시스템 

 

'Coming > ADsP' 카테고리의 다른 글

ADsp 과목 1 :기업 내부 DB  (1) 2022.10.05
데이터 분석 기법의 이해  (0) 2022.09.26

R 은 데이터 형(타입) 은 기본형, 구조형, 복합형으로 나눌수 있음. + special value 

 

기본형 : numeric(수치형), charater(문자형), Logical 

구조형: scalar, factor, vector, metrix, array 

복합형: list, data frame, date table

Special value

- NULL: 변수값이 초기화 되지 않음 

-NA: Not available, 데이터 값 없음 (결측치)

-NaN: Not Available Number, 계산 불가능 

-INF: infinite, 무한대 

 

R코드의 기초

print() 출력 형식을 지정할 필요 없음 - 한번에 하나의 객체로만 출력  <- 파티썬이랑 비슷? 

cat() 여러 항목을 묶어서 연경된 결과로 출력 

 

1. 변수값 할당하기 

파이썬에서 주로 = 였다면, R code에서는 

=,<- ,<<-,-> 대입연산자 

2. 변수 목록 보기 

ls(), ls.str

 

3. 변수를 삭제 

rm()

 

4. 벡터 생성하기 

; what is 벡터?  기본 값들을 모아두는 변수이다. 

(1) c() 

원소로 구성될수도 있지만, 여러가지 벡터를 하나로 합칠수도 있다.

 

(2) seq() 

연속적인 정수 벡터를 생성하는 함수: 시작값에서 최종값 까지 연속적이 숫자를 생성. seq 함수는 간격과 결과값의 길이를 제한 가능 

0부터 20까지 2의 간격만큼의 숫자로 나열한것. 

 

(3) req

숫자나 변수의 값을 time 인자에 지정한 회수 만큼 반복 

1를 5 번 반복.

1에서4까지 각각2번 반복. 

 

  • 1. 데이터 처리 

혼자 책보고 그려봄 이해바탕으로 그려봄

데이터를 위와 같이 활용 한다. 

 

DW와 DW 를 통하여 분석 데이터를 가져와서 사용한다. 

  • ODS 는 운영데이터를 저장 하는 장소로 기존 운영 시스템(legacy) 의 데이터가 정제된 데이터 이므로 DM 나 DW 과 결합하여 분석을 활용 할수 있다. (시험에 나오는 문장으로 잘이해해야함) 
  • staging 영역(임시저장된 데이터) 에서 가져온 데이터는 정제되지 않은 데이터 이므로 데이터의 전처리를 하여 DW나 DM과 결합하여 사용한다.
  • 2. 시각화 (시각화 그래프) 
  • 가장 낮은 수준의 분석 -> 복잡한 분석 보다 더 효율적으로 보여줌 
  • 대용량 데이터를 다루는 빅데이터 분석에서는-> 시각화 필수 
  • 탐색적 분석 -> 시각화 필수 
  • Social networ analsis (SNA) 분석을 할때 자주 사용 된다 (아래의 그림 참조)

SNA 분석 자생생물의 사회연결망(국립생물자원관 제공)

  • 3.GIS 공간분석(spatial analysis)
  • 공간적 차원과 관련 속성을 시각화 하는 분석  
  • 지도 위에 관련 속성을 생성하고 크기, 모양, 선굵기, 색 등으로 구분 

  • ★4.탐색적 자로 분석 (EDA) 

(1) 다양한 차원의 값을 조합 하여 특이한 점이나 의미 있는 사실을 도출하고 분석 의해 최종 목표를 달성해가는 과정 

데이터의 특성이나 내재하는 구조적 관계를 알아야한다. 

정의_summary 

1.데이터 형태를 이해 2. 의미를 찾아내는 과정 ====> 자료를 직관적으로 바라보는 과정(시각화에 집중)

 

효율성을 확대하기 위해 

a. 의미있는 변수의 집단과 아닌 집단을 구분 해야함 (필터를 통하여 eg. 1차2차,3차...) 

300의 변수를 ----> 1차 100 (의미있는집단), 2차 50(의미있는집단), 150 (의미없는집단) 

 

(2) EDA 의 4가지 주제 

1. 저항성의 강조 : 수집된 자료의 결측값과 이상값이 있을때도 영향을 적게 받는 성질 (평균값 보다 중앙값을 선호)

2. 잔차의 계산: 잔차를 구해서 왜 보통값이랑 다른지? 주경향에서 벗어난 값이 왜 존재 하는가 ?

3. 자료변수의 재표현 : 원래 변수를 변환 -> 해석을 단순화 하기 위해서 

4. 그래프를 통한 현시성 :시각적으로 표현

 

  • 5. 데이터 마이닝 

대용량의 자료로부터 정보를 요약하고 미래에 대한 예측을 목표로 하는 자료에 존재 하는 관계, 패턴, 규칙을 탐색하고 이를 모형화 함으로써 이전에 알려지지 않은 유용한 지식을 추축하는 분석방법. 

데이터가 크고 정보가 다양할수록 활용하기 유리한 분석 방법이다. 

 

Data mining의 5 stap 

 

1 step  목적 정의 : 데이터 마이닝 도입 목적을 명확하게 함 

2 step 데이터준비 : 데이터 정제(cleaning) 를 통해 데이터 품질 확보까지 포함( 데이터양을 충분히 확보) 

3 step 데이터 가공 : 목적변수를 정의하고, 필요한 데이터를 데이터 마이닝소프트웨어에 적용할수있게 가공및 준비단계 ( 충분한 CPU와 메모리, 디스크 공간 등 개발 환경 구축이 선행) 

4 step 데이터 마이닝 기법 적용 : 모델을 목적에 맞게 선택하고 소프트 웨어를 사용하는데 필요한 값 지정 

5 step 검증 : 경과에 대한 검증 시행 

2 - 4 step 출처[2Brain.kr

데이터마이닝 관련 비지니스의 의사결정에 영향을 주는사례 

http://bigdata.dongguk.ac.kr/lectures/dm/_book/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A7%88%EC%9D%B4%EB%8B%9D%EA%B0%9C%EC%9A%94.html

 

--> 4 step 데이터 마이닝 기법 은 어떤 것들이 있을까 ?

분류(classification) : 새롭게 나타나는 현상을 검토 하여 기존의 분류, 정의된 집합에 배정 하는것

의사나무 결정, Memory-based reasoning 등 

의사 나무 결정 (Decision Tree)

추론(Estimation) : 주어진 입력데이터를 사용하여 알려지지 않은 결과 갓ㅂ을 추정 하는것 

연속된 변수값을 추정, 신경망 모형 

 

연관분석(Association Analysis) : '같이 팔리는 물건' 같이 아이템의 연관성을 파악하는 분석

카탈로그 배열 및 교차 판매, 공격적 판촉행사 등의 마케팅 계획 

eg 월마트에서 맥주와 기저귀가 강한 연관성 파악 -> 가까이 배치 -> 매출이 증가 

 

예측(Prediction) : 미래에 대한 예측, 추정 하는것을 제외하면 분류나 추정과 동일한 의미 

장바구니분석, 의사결정나무, 신경망모형

 

군집(Clustering): 미리 정의된 기준이나 예시에 의해서가 아닌 레코드 자체가 가진다른 레코드와의 유사성에 의해 그룹화되고 이질성에 의해 세분화됨(테이터마이닝이나 모델링의 준비단계로서 사용됨)

 

★기술(Description) : 데이터가 가진 특징 및 의미를 단순한 설명하는것 

데이터가 암시하는 바에 대해 설명 및 그에대한 답을 찾아 낼수 있어야함

'Coming > ADsP' 카테고리의 다른 글

ADsp 과목 1 :기업 내부 DB  (1) 2022.10.05
ADsP 과목 1 : 데이터의 이해 (1)  (1) 2022.10.05
  • 클래스 : 변수&매서드(함수)를 정해 놓는 틀

 

  • 클래스를 사용 하는방법

1. class 를 입려하고,

2. 대문자로 시작하는 클래스 이름 설정( 관례적인 약속) 

3. 안에 들어갈 함수와 변수 설정  


class Mingcal:

  def setdate(self,first,second):

    self.first=first

    self.second=second

a=Mingcal()

a.setdate(1,2)

print(a.first)

print(a.second)

 

1

2

 

데이타를 셋업함

 

데이타 셋업을 통하여 계산을 해보았다. 


class Mingcal:

  def setdate(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result

a=Mingcal()

a.setdate(4,2)

print(a.add())

 

6


여기서 왜 setdate 를 굳이 하는 지 궁금했음 왜냐면, 바로 date를 아래와 같이 셋업을 동시에 할 경우 짧게 코드를 짤수 있다.

 


class MingCal:

  def add(self,firstsecond):

    self.first = first

    self.second = second

    result= self.first+self.second

    return result

a=MingCal()

print(a.add(1,2))


근데 이렇게 짜지 않는 이유는 이렇게 한다면 class 를 쓸 필요가 없을거같음. 다른 함수를 함께 쓸때도 다시 self.somthing 변수 매번정의 해야하는 코드를 짜야 하기 때문이다. 그렇기 때문에 아래와 같이 setdate를 해놓고 아래에 다른 *를 계산하는 함수도 함께 하여 구조체를 만들수 있음.


class Mingcal:

  def setdata(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result

  def mul(self):

    result=self.first*self.second

    return result

a=Mingcal()

a.setdata(1,2)

print(a.add())

print(a.mul())

3

2


클라스를 사용 하면서, 가장 먼저 실행 해야는걸 __init__ 이라고 한다. 

그럼 __init__을 사용하였을때와 안하였을때의 차이는 멀까?


class Mingcal:

  def __init__(self,first,second):

    self.first=first

    self.second=second

  def setdata(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result

a=Mingcal(1,2)

print(a.add())

3


가장먼저 __init__ 를실행 하게 된다. 그렇기 때믄 a=Mingcal 을 정의 할때 Mingcal() 변수를 공란으로 두는것이 아닌(someting, something) 을 기입 하라고 오류가 발생함. 위와 같은 예시로 바로 a.setdate(1,2) 과정없이 a를 정의할때 변수를 기재하여야함 

 

 

  • 클래스의 상속 

 

정의한 클래스(부모)를 또다른 클래스(자식)에서 불러 올수있다. 즉, 부모에서 짜놓은 클래스를 자식이 그래로 가져와서 자식 클래스에서 사용할수있는것!변형 또한 가능하다.


class Mingcal:

  def __init__(self,first,second):

    self.first=first

    self.second=second

  def setdata(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result

class MoreMingcal(Mingcal):

  pass

a=MoreMingcal(1,2)

print(a.add())

3


 부모 class 에 없는 매서드(함수) 를 추가 할수 있다. 부모의 클라스에 ** 제곱을 추가해보자


class Mingcal:

  def __init__(self,first,second):

    self.first=first

    self.second=second

  def setdata(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result


class MoreMingcal(Mingcal):

  def pow(self):

    result= self.first**self.second

    return result

a=MoreMingcal(1,2)

print(a.pow())

1


부모의 클라스에서 변형도 가능 하다. div 매서드를 변형해보자 


class Mingcal:

  def __init__(self,first,second):

    self.first=first

    self.second=second

  def setdata(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result

  def div(self):

    result=self.first/self.second

    return result

class MoreMingcal(Mingcal):

  def div(self):

    if self.second==0:

      return 0

    else:

       self.first/self.second

a=MoreMingcal(4,0)

print(a.div())

0


마지막으로 클라스변수, 객체 변수 를 알아보자. 위와같이 변수를__init__을 사용하여 self.first 는 something 으로 한후, a=Mincal(1,2) 이렇게 줄수 있지만, 바로 클라스의 변수를 줄수 있다.


class Mingcal:

  first=1

  second=6

  # def __init__(self,first,second):

  #   self.first=first

  #   self.second=second

  def setdata(self,first,second):

    self.first=first

    self.second=second

  def add(self):

    result=self.first+self.second

    return result

a=Mingcal()

b=Mingcal()

print(a.first)

print(b.first)

1

1


클라스를 정의한 a,b 모두 first =1 이라는 값을 내는 것을 알수 있다. 그럼 클라스의 변수 값을 바꿀수 있을까 ? 


class Family:

  lastname="킴"

Family.lastname="박"

print(Family.lastname)

 

a=Family()

b=Family()

print(a.lastname)

print(b.lastname)


위와같이 클라스 자체의 로직을 바꿀수있다.

  • Immutable_ 정수, 실수,문자열,튜플

 

a=1
def vartest(a):
    a=a+1
vartest(a)
print(a)

정수 1 은 변하지 않는다. global frames 가 a=1 이기 때문에 print 하였을때 그대로 1 을 출력함 

  • mutable_ 리스트, 집합,딕셔너리 

 

a=[1,2,3]

def vartest(a):

    a=a.append(4)

vartest(a)

print(a)

  • 사용자의 입력과 출력 

input 함수를 사용할때 아래 출력값에 입력할수있게 생김 

number=input("숫자를 입력하세요:")

print(number)

출력값에 123을 침 

  • 파일 읽고 쓰기 

#파일 생성하기 

f=open("새파일.txt",'w')

f.close()

파일 열기 모드 설명
r 읽기모드- 파일을 읽기만 할때 사용
w 쓰기모드- 파일에 내용을 쓸때 사용
a 추가모드- 파일의 마지막에 새로운 내용을 추가시킬때 사용

#파일생성하고 w 작성하기  

f=open("Ming.txt",'w')

for i in range(1,11):                 * i 라는 변수를 range (1,11)에서 하나씩 추출하여 date 에 적용하는 반복문

  date="%d번째 줄입니다.\n"%i

  f.write(date)                         *f.write 라는 함수를 이용하여 해당차일에 date 를 기재 함 

f.close()                                 *항상 저장하고 close 

1번째 줄입니다.
2번째 줄입니다.
3번째 줄입니다.
4번째 줄입니다.
5번째 줄입니다.
6번째 줄입니다.
7번째 줄입니다.
8번째 줄입니다.
9번째 줄입니다.
10번째 줄입니다.

 

#파일읽기

f=open("Ming.txt",'r')

line= f.readline()                  *맨 처음 라인을 가지고 올때 사용됨  

while line :                         *Ture 라는 뜻(반복문)

  print(line)                         

  line= f.readline()                 * 출력후 다시 반복문으로 가기전에 line에 그다음줄에 을 input 함 

f.close()

 

다른방법(readline) : 한줄 읽는 함수 그러므로 전체를 다 읽기 위해서 반복문

f=open("Ming.txt",'r')

while True:

  line=f.readline()  

  if not line: break

  print(line)

f.close()

 

다른방법2 (readlines) : 리스트 형대로 읽는 함수 그러므로 전체를 다 읽기 위해서 반복문

f=open("Ming.txt",'r')

lines=f.readlines() 

for line in lines:

  print(line)

f.close()

 

다른방법3(read) :통째로 다 읽는 함수

f=open("Ming.txt",'r')

line=f.read() 

print(line)

f.close()

 

 

with open("new.text",'w') as f:                       * 파일을 오픈한것을 닫는다 라는의미

 f.write("life is too short, you need python")     * 따러 f.close() 함수를 따로 안써 줘도됨 

'Coming > Python_왕초보' 카테고리의 다른 글

Python_클래스  (0) 2021.05.01
Python_immutable VS mutable  (0) 2021.04.29
Python_함수(feat. 들여쓰기)  (0) 2021.04.27
python_제어문(조건문, 반복문)  (0) 2021.04.16
Python_ 리스트 vs 튜플 (번외: 집합)  (0) 2021.04.11

함수의 구조 

 

def 함수명(매개변수):

    <수행할 문장1>

    <수행할 문장2>

     .......

    reture 리턴값

 

 

def sum(a,b):

    result = a+b

    return result * 정의만 한거임, print()를 넣어 줘야함 

print(sum(1,2))

3

 

#입력값이 없는 경우

def say():

   return 'hi'

print(say())

hi

 

#return출력값이 없음

def sum(a,b):

   print("%d,%d의 합은 %d입니다."%(a,b,a+b))

sum(1,2)

1,2의 합은 3입니다.

 

 

(feat. 들여쓰기)_ 이해잘안됐음

def sum_many(*args):

  sum=0

  for i in args:

    sum=sum+i

    return sum    *args 를 넣으면 몇개의 매개변수가 들어어온다고 정의 하지 않아도 됨 

print(sum_many(1,2,3))

 

1

 

def>for 때문에 def 가 끝이나면 함수도 끝이난다.

def 안에 있는 반복문은 return(들여쓰기2번) 값을 만나면 함수ㅇ가 끝이난다.

return 을 만났기 때문에 2,3 을 실행하지 않고1 만 실행후 끝이남.  

 

def sum_many(*args):

  sum=0

  for i in args:

    sum=sum+i

  return sum

print(sum_many(1,2,3))

 

6

 

return 값이 for 문안에 포함되어 있지 않기 때문에(들여쓰기 1번), for문 실행이 끝이난뒤 

return 값을 만났으므로 최종 6을 출력한다. 

 

 

# 출력값을 튜플 형태로 낼수 있음

def sum_and_mul(a,b):

  return a+b,a*b,a-b                        * return  값이 여러개 일경우

print(sum_and_mul(1,2))

 

(3, 2, -1)

 

def sum_and_mul(a,b):

  return a+b,a*b,a-b

print(sum_and_mul(1,2)[0])                *어떤 return 값을 출력 할지.인덱싱으로 []선택할수 있음

 

# 매개변수기본값을 설정 할수 있음 (주로기본값을 맨끝에 써야함)

def say_myself(name,old,man=True):

  print('나의 이름은%s 입니다.'%name)

  print('나이는%d살입니다.'%old)

  if man:

    print('남자입니다.')

  else:

    print('여자입니다'

say_myself("밍밍",90)

 

나의 이름은밍밍 입니다.

나이는90살입니다.

남자입니다.                    

 * input 에 man 을 True 값으로 기본값을 설정하였기 때문에 output 값에 따로 쓰지 않도 기본값인 True 나옴

만약 여자 인 False 값을 내고 싶다면,아래 와 같이 output에 False를 넣는다.

say_myself("밍밍",90,False)

 

#vartest

2를 출력하기 위한 또 다른 방법은,

a=1
def vartest():
  global a 
  a=a+1
vartest()
print(a)

2

 

#lambda (간단한 함수정의를 축약하여 표현할수 있는 함수)_ list 에 함수를 쓸수 있음 

 

#def add(a,b):

  #return a+b

#print(add(1,2)) * 값이 3이 된다, 이걸 아래와 같이 lambda 함수를 사용하여 간단하게 표현 가능함

 

add=lambda a,b:a+b

print(add(1,2))

3

 

#함수를 리스트 안에 넣은 예시

myList=[lambda a,b:a+b,lambda a,b:a*b]

print(myList[0](1,2))

3

 

+ Recent posts