0. 개요

오늘 파이썬에서 남아있던 부분을 마저 정리하고 오늘 강의 했던 거 내용을 보려고 한다.


1. glob 함수

glob 정의 = 파일 시스템에서 파일을 찾을 때 사용되는 유용한 툴
파일 이름의 패턴 매칭을 통해 파일 검사 하고 일치하는 파일들의 리스트를 반환 (확장자,파일이름에 따라 필터링)

import glob

#현재 경로의 모든 파일 찾는 경우
file_list = glob.glob('*')

#단일 패턴으로 파일 찾기
file_list2 = glob.glob('drive')

#디렉토리 안의 모든 파일 찾기
file_list3 = glob.glob('sample_data/*')

#특정 확장자를 가진 파일만 찾기
file_list4 = glob.glob('sample_data/*.csv')
##csv, xls, txt 등 모두 가능함

 TIP) 폴더 / 디렉토리에 유용한 개념들
   1) 폴더를 구분할 경우 '/'를 사용
   2) 파일 명을 입력할 때 확장자 명을 반드시 기입
   3) 일치하는 파일이나 디렉토리 패턴을 나타낼 때 와일드카드 문자를 사용

[개념] 와일드카드 : 기호 중에서 특정 의미를 지닌 문자

  내용
* 모든 문자를 대체한다
? 문자 한자리를 대체한다
~ 와일드카드 기능을 해제한

2. os 모듈

os 모듈 정의 = 운영체제와 상호작용을 위한 다양한 함수를 제공
- 파일 시스템을 관리, 디렉토리를 탐색, 파일을 조작하는 데 사용함

  내용
파일 및 디렉토리
관리
1. 파일 생성, 이름변경, 삭제 작업을 수행
2. 디렉토리 생성, 탐색, 삭제 등의 작업을 수행
경로 관리 절대 경로, 상대 경로, 현대 작업 디렉토리 등의 경로를 관리
경로 구성 요소를 조작하고, 경로를 연결하고, 경로를 정규화
환경 변수 관리 시스템의 환경 변수를 가져오거나 설정함
실행 관리 외부 프로그램을 실행, 현재 프로세스의 종료 등의 작업을 수행
[파일 및 디렉토리 관리]
#현재 작업 디렉토리 가져오기
import os 
cwd = os.getcwd()
print(cwd)

#디렉토리 생성
import os
os.mkdir('디렉토리의 위치')

#파일 이름 변경
import os
os.rename('기존 디렉토리의 파일 이름, 신규 디렉토리의 파일 이름)

#파일 삭제
import os
os.remove(file_address = 파일 경로)
[경로 관리]
#파일 목록(경로)가져오기
import os
files = os.listdir('/content')
print(files)

#경로조작
import os
path = os.path.join('/content','sample_data','mnist_test.csv')
print(path)

3. split 함수

split 정의 = 문자열을 여러가지로 쪼개는 것(기존의 .split 와 동일)

1. 공백기준으로 문자열 분할해 리스트로 변환
sentence = "Hello, how are you doing today?"
words = sentence.split()
print(word) ## ['hello','how','are','you','doing',today?']

2. 특정 구분자를 기준으로 문자열 분할
data = "apple,banana,grape,orange"
fruits = data.split(',')
print(fruits) ## ['apple','banana','grape','orange']

3. 리스트의 각 항목을 문자열로 결합하기
word = ['hello','how','are','you','doing','today?']
sentence = ' '.join(words)
print(sentence) ## hello, how are you doing?

4. 리스트의 각 항목을 문자열로 결합, 특정 구분사를 사용하여 결합
fruits = ['apple', 'banana', 'grape','orange']
data = ','.join(furits) ## apple,banana,grape,orange

5. 여러 줄로 이루어진 문자열을 줄 단위로 분할하여 리스트로 변환하기
text = ""First line
Second line
Third line""
lines = text.split('\n')
print(lines) ##['First line','Second line','Third line']

6. 문자열을 공백으로 분할한 후 특정 개수의 항목만 가져오기
sentence = "Hello, how are you doing?"
words = sentence.split()
first_three_words = words[:3]
print(first_three_words) ##['hello','how','are']

7. 문자열에서 공백 제거 후 문자열 리스트 나열
text = "   hello    how    are    you    "
cleaned_text = text.stirp()
words = cleaned_text.split()
print(words) ##['hello','how','are','you']

rsplit() 도 있는데 이건 right split() 으로 오른쪽에서 부터 분할하도고 하는 함수를 말한다.

4. class 함수

class 함수는 객체 지향 프로그래밍(OOP)의 중요한 개념 중 하나이다.
 ** 객체 지향 프로그래밍 ➡️ 현실 세계의 사물을 모델링해 프로그래밍 하는 방법 (코드의 재사용성과 유지 보수성 유지)
class 는 객체를 만들기 위한 틀 또는 설계도이며, 다형성(polymorphism)으로 서로 다른 클래스에서 다른 기능을 수행할 수 있게 하는 기능도 갖추고 있다.

class 함수의 기분 구조

class ClassName:
   def __init__(self, parameter1, parameter2):
       self.attribute1 = parameter1
       self.attribute2 = parameter2
   
   def method1(self, parameter1, parameter2):
    #매서드 함수 작성
       pass

## __init__ : 클래스의 생성자 / 객체가 생성될 때 호출 / 초기화 작업
## 매서드 : 클래스의 동작을 정의
## 매서드의 첫번째 변수는 반드시 self 를 사용 (매서드의 속한 개체)

 1) class 와 함수의 차이점

공통점 : class 와 함수는 모두 파이썬에서 코드를 조직화하고 재사용성을 높이는 데 사용
함수 클래스
일련의 작업을 수행하는 블록 데이터와 해당 데이터를 처리하는 함수를 함께 묶어둔 형태
입력(매개변수)를 받아들이고 그에 따른 결과 반환 다른 데이터와 데이터를 다루는 코드를 함께 묶어 객체를 생성
특정한 작업을 수행하는 독립적인 코드 블록,
재사용성을 높이고 코드의 가독성을 개선
객체의 상태(속성)과 행위(메서드)를 정의하고 이를 캡슐화해 객체를 생성하고 다룸
독립적으로 정의 될 수 있음 상속을 통해 기존 클래스를 확장하고, 다형성을 지원해 유연한 코드 구조를 구현
  여러 객체를 생성하고 관리 ➡️ 코드의 구조를 향상시키고 재사용성을 높임

 2) class 함수의 특징

  내용
코드의 구조화 클래스를 사용하면 관련있는 데이터와 동작을 묶어서 구조화 가능
➡️코드의 가독성을 높이고 유지보수에 용이
재사용성 비슷한 동작을 하는 여러 객체를 생성할 수 있음
상속과 다형성 상속으로 기존 클래스를 확장하고, 다형성을 지원해 유연하고 확장 가능한 코드 작성가능
캡슐화 데이터와 데이터를 처리하는 코드를 묶어 캡슐화 함
➡️데이터의 무결성을 보장하고, 외부로부터의 접근을 제어할 수 있게 함
객체 지향 설계 현실 세계의 개념을 모델링 해 프로그래밍하는 방법
➡️현실세계의 개념을 코드로 옮겨 쉽게 이해하고 관리
매서드(Method) 속성(Attribute)
클래스에 속한 함수
특정 작업을 수행하거나 클래스의 상태를 번경
클래스나 클리스의 인스턴스에 속한 변수
클래스의 인스턴스(instance)로 호출,
해당 인스턴스의 상태에 따라 동작
클래스나 인스턴스의 상태 ➡️ 객체의 데이터를 저장
self 매개 변수 ➡️ 첫 번째 매개변수로 사용해 메서드가 속한 인스턴스를 참조 각 인스턴스마다 고유한 값을 가질 수 있는 인스턴스 속성
클래스에 속한 공유 속성(static attribute) 존재

 3) 클래스를 사용하는 예시

  [1] 데이터 구조화 = 데이터를 구조화하고 타입을 정의함
  [2] 데이터 전처리 모듈화 = 클래스를 사용하 전처리 단계를 모듈화 하고 재사용 가능한 코드를 만듬
  [3] 모델링과 분석 작업 = 데이터 분석에 사용하는 모델링 작업을 class 에 활용해 구현 가능

5. 불리언 인덱싱

불리언 인덱싱(Boolean indexing) 정의 = 조건에 따라 요소를 선택하는 방법 중 하나
  ** 리스트, 배열에서 요소를 선택할 수 있는 도구
  ** Pandas 에서 데이터를 조건에 맞게 선택할 때 많이 사용
데이터 필터링 및 선택에 매우 유용하며 데이터 분석에 자주 사용

import numpy as np

# 배열 생성
arr = np.array([1, 2, 3, 4, 5])

# 불리언 배열 생성 (조건에 따라 True 또는 False 값을 갖는 배열)
condition = np.array([True, False, True, False, True])

# 불리언 인덱싱을 사용하여 조건에 맞는 요소 선택
result = arr[condition]

# 결과 출력
print("Result using boolean indexing:", result)  # 출력: [1 3 5]

# 불리언 인덱싱을 사용하여 배열에서 짝수인 요소만 선택
evens = arr[arr % 2 == 0]

# 결과 출력
print("Even numbers using boolean indexing:", evens)  # 출력: [2 4]

6. 오늘의 아티클 스터디

원래 정규 시간대로 아티클 스터디에 대해서도 좀 정리해보려고 한다.

https://yozm.wishket.com/magazine/detail/1821/

 

데이터 시각화 101: 3데이터 속 거짓말 발견하기 | 요즘IT

간혹 직관적으로 이해된 시각화가 부정확한 정보를 전달하기도 하고, 시각적으로 오해를 불러일으키기도 합니다. 그 때문에 우리는 이러한 문제점이 왜 일어나는지 이해하고, 데이터 시각화를

yozm.wishket.com

아티클은 단순했다. 데이터를 분석하는데 있어서 절대로 데이터 리터러시를 어기지 말 것. 근데 가만 내용들을 살펴보면, 기업과 정치의 전략에 대해서도 알 수 있었다. 특히, 자신의 생각을 강조하기 위해서 데이터를 왜곡하면서 생각을 보여주는 것이었다. 그러나 그건 정당한 방법은 아니다. 데이터를 의도적으로 왜곡해서 실제로는 상관 없는데도, 억지로 우기는 것에 불과하니까.

그렇기에 왜곡된 데이터를 제대로 읽어내는 것은 중요하다고 할 수 있다. 하지만 기업은 때로 성과를 보여줘야하기도 하다. 만약에 스티브 잡스가 저런 데이터를 보여주지 않았다면, 사람들에게 애플이 얼마나 잘 나가는 지에 대해서 설득을 하지 못하니까. 데이터 리터러시와 다르게 사람을 설득하는 건 다른 것이기도 하다.

다만 이 둘의 균형을 잘 찾아야 한다고 생각한다. 기업은 재화와 용역 등을 사용해 이윤을 창출해내는 영리집단이다. 그렇기에 퍼포먼스도 하나의 움직임이라고 생각한다. 데이터 왜곡을 하지 않는 선에서 이 둘의 균형을 찾아내는 게 중요하다고 생각한다.


오늘 파이썬 실강을 들었는데 하나도 모르겠어서 내일 다시 공부한다...아.. 큰일이다 df 라던가 코드카타 알고리즘을 풀면 하나도 모르겠다. 그래서 다른 사람의 풀이도 보는데 영 막막하다 .일단은 내가 정리할 수 있는 걸 정리를 해보려고 한다. 그러면 조금이라도 나을 거 같아서.....

myo