728x90
반응형
SMALL
728x90
반응형
SMALL

오늘 포스팅에서는 파이썬을 활용하여 숫자와 문자의 변형과 list를 관리하는 법에 대하여 알아보도록 하겠습니다.

list 관리를 설명하기 전에 간단하게 숫자와 문자의 변형을 어떻게 하는지에 대하여 알아보도록 하겠습니다.

숫자/문자의 변형 chr(숫자)/ord('알파벳')
print(65)
# JAVA -> print((char)65) 강제 변형 = type casting
print(chr(65))                                      # chr 함수 사용
print(ord('B'))

list 관리 

앞서 언급된 단어 'CRUD'의 의미에 대하여 먼저 설명해드리도록 하겠습니다.

모든 프로그램 언어를 사용하기위해서는 딱 4가지만 기억하고 다룰 줄만 아시면! 기본기는 단단하다고 보시면 됩니다

Create Read Upload Delete 데이터를 어떻게 생성하고, 불러오고, 추가하고, 삭제할 수 있는지 입니다!

이제 list로 데이터를 관리해보도록 하겠습니다~!

CRUD - Create
# list 라는 자료형 자체가 존재 -> [] or {} or ()
a = [10, 20, 30, 40]
print(a)                                            # 출력결과 -> [숫자들] <- list type
b = ['강아지', '호랑이', '코끼리']                       # 요소 -> 숫자 문자 다 허용
print(b)
c = [10, '호랑이', 3.14, True]                       # 서로다른 타입의 항목으로 넣어 맴버들의 설정이 가능 (Only Python)
print(c)

CRUD - Read
a = [10, 20, 30, 40]

1. 통짜로 a전체 출력

print(a)

2. 필요한 인덱스 번호만 출력

print(a[0], a[1], a[2], a[3])           # print(a[4]) <- out of bound / list index out of range

3. for i in 문장

for i in a:
    print(i, end=' ')
print()

for i in [1, 2, 3, 4]:                              # i 는 반복 카운팅용(looping)
    print(i, end=' ')
print()

for value in a:                                     # BUT 여기서는 내용을 꺼내기 떄문에 i 보다는 value, i10, data 를 더 선호
    print(value, end=' ')
print()

CRUD - Update
# 내부적으로 숫자를 대입하는 단순 과정이 아닌 삭제후 추가
a = [10, 20, 30, 40]
a[0] = 50
print(a)

print(id(a[0]), id(a[1]))                           # 고유민증번호

a[0] = 60
print(id(a[0]), id(a[1]))                           # 기존의 들어있는 data 를 삭제시키고 생성했다는것을 보여주는것

CRUD - Delete
a = [10, 20, 30, 40]
del(a[0])                                           # del, remove, erase (depends on language)
print(a)
print(len(a))                                       # a 의 길이를 보여준다 length or size (depends on language)

list 활용 - 내부 list( 1차원, 2차원, 3차원)
a = [10, '호랑이', [20, '코끼리', [30, '독수리']]]

print(a)                                            # list 포함 출력
print(a[2])                                         # 내부 list 만 출력
print(a[2][0], a[2][1])                             # 내부 list 의 선택적 출력
print(a[2][2][0], a[2][2][1])                       # 내부 list 속 내부 list 의 선택적 출력

a = 'Apple'
b = ['A', 'p', 'p', 'l', 'e']
print(a)
print(b)                                            # list 속 알파벳 요소
print(a[0], b[0])

a[0] = 'B' # err>> 문자열은 갱신 X

b[0] = 'B'                                          # list 로 관리된 문자는 갱신 가능
print(b)

a = [인덱스0, 인덱스 1, 인덱스 2] ← a = [10, '호랑이', [20, '코끼리', [30, '독수리']]]

index [0] : int

index [1] : str

index [2] : list

list 활용 - Update & Delete 활용
a = ['a', 'b', 'c', 'd', 'e']
print(a[1:3])                                       # 인덱스 번호 1 ~ 3앞 (3-1)개를 가져오기

a[1:3] = ['F', 'G']                                 # index 1, 3 삭제후, 'F''G'가 새로 갱신
print(a)

a[1:3] = ['H', 'I', 'J', 'K', 'L']                  # index 1, 2가 삭제 됬다고 2개만 갱신할수있는것이 아닌 그 자리로 여러개 대입
print(a)

a = ['a', 'b', 'c', 'd', 'e']
a[1:3] = []                                         # 특정부분만 delete 하고 싶을때 사용
print(a)

a = ['a', 'b', 'c', 'd', 'e']                       # 순수하게 삭제만 한다 (추가라는 개념자체가 없다)
del(a[1:3])
print(a)

list 활용 - append (항목 추가), insert (원하는 항목에 추가), pop (제거)
a = ['o', 'r', 'a', 'n', 'g', 'e']

1. append

print(a)

a.append('f')                                       # list 안에 항목을 추가 시키고 싶을때 append -> 맨뒤 추가
print(a)

a.append(10)                                        # type 상관없이 추가 가능
print(a)

2. insert

a.insert(1, 10)                                     # insert 함수는 원하는 인덱스 번호앞에 추가된다
print(a)

3. pop

a.pop()                                             # 무조건 맨 마지막에 있는 data 를 제거한다
print(a)

a.pop(3)                                            # 원하는 특정 위치의 data 를 제거
print(a)                                            # pop 은 인덱스를 지정해서 제거 , del 은 list 구간 지정 제거

Exception 처리 remove, index(찾고자 하는 인덱스 번호 찾기)

1. remove

a.remove('r')                                       # r을 검색을해서 검색된 r을 제거 시키고 한번을 제거 시키면 중단되기 때문에 뒤에는 지워지지 않는다
print(a)

try:                                                # 예외가 발생하면 try 로 exception 을 잡아준다
    a.remove('t')                                   # 검색에 실패하면 error 발생 (검색에서 반드시 있다고 판단될떄 사용)
except:                                             # 프로그램에서 못찾을 경우 exception 처리를 한다
    print('예외가 발생하였습니다')
    pass
print('호랑이')

2. index

a = ['o', 'r', 'a', 'n', 'r', 'e']

b = a.index('r')                                    # 찾은곳의 인덱스 번호를 알려준다
print(b)

try:
    a.index('t')                                    # index 는 return 값이 있다
except:
    print('예외가 발생하였습니다')
    pass
print('호랑이')

sort 함수 - 비용이 많이 든다 (메모리와 시간 둘중 하나를 선택)
a = ['a', 'c', 'e', 'f', 'd', 'b']
a.sort()                                            # 알파벳 순서대로 정렬을 시켜준다 (sort default )
print(a)                                            # sort 함수는 비용이 많이 든다 -> 1. 시간이 오래걸림 2. 메모리를 많이 사용

reverse() - 역순행이 아니라, 앞과 뒤의 data를 교환
a = ['a', 'c', 'e', 'f', 'd', 'b']
# 이미 정렬이 되어있는 배열을 쓰면 빠르다
a.reverse()                                         # 앞과 뒤의 data 를 swap 시켜준다
print(a)

지금까지 list를 활용한 CRUD에 대하여 알아보았습니다.

다음 포스팅으로는 append와 extend 차이, tuple과 list를 다루는 법등 많이 헷갈리는 함수와 dictionary의 CRUD에 대하여 알아보도록 하겠습니다~!

728x90
반응형
LIST
728x90
반응형
SMALL

이번 포스팅에서는 참일 때 실행될 문장의 참/거짓 조건으로 변환하는 연산자인 삼항 연산과 list(range())를 사용하여 숫자를 증가시키는 방법과 마지막으로 for문에 대하여 알아보도록 하겠습니다.

삼항 연산
num = 23
while True:
    print(num)
    num = num // 2 if num % 2 == 0 else (num * 3) + 1     # = 참일떄 실행 될 문장 if 참 조건 else 거짓 조건
    if num == 1:
        print(num)
        print('프로그램을 종료합니다')
        break

list(range(시작 숫자, 마지막 숫자 +1, step증가))
print(range(0, 10), type(range(0, 10)))              # range 는 단독 사용 X
                                                     # 0 < = x < 10 -> 첫번쨰 숫자부터 시작하여 마지막 숫자 앞까지 출력
a = list(range(0, 10))                               # 단독으로 사용 못하고 list 이용 -> 연속된 데이터를 관리하고싶을떄 사용
print(a)
print(list(range(5, 10)))                            # (linked 생략된 단어) list = []
print(list(range(3, 20, 2)))                         # 3 부터 19까지 step 증가를 2씩 출력

for 문

조건문 사용 시에는 tab(들여 쓰기)에 주의해야 합니다~!!

for i in [0, 1, 2, 3, 4]:
    print(i)

for i in [0, 1, 2, 3, 4]:
    print(i, end=' ')
print()                                             # 다음출력을 위해서 줄바꿈해주는 것은 for 문 밖에서 출력

for i in ['월, 화, 수, 목, 금, 토, 일']:
    print(i, end=' ')
print()

for i in ['강아지, 고양이, 햄스터']:
    print(i, end=' ')
print()

for i in range(0, 10):                              # For 문의 정석 코드
    print(i, end=' ')
print()

예제. 1) 구구단 5단 출력
for i in range(1, 10):
    print('5 *', i, '=', i * 5)

예제. 2) 1-10까지의 합
sum = 0
for i in range(1, 11):
    sum += i
    print(sum)

※ range를 사용할때는 마지막 숫자 +1 구별 주의

 

중첩 For 문
for i in range(0, 3):
    for j in range(0, 4):
        print('[', i, j, ']', end=' ')
print()

중첩 for 문 예제) 결과값 두 자리 숫자로 나타내기 (00, 01, 02...)
k = 0
for i in range(3):                                  # 0은 생략 가능
    for j in range(0, 4):
        print('%02d' % k, end=' ')
        k += 1
print()

다음 포스팅에서는 이어서 숫자/문자 변형, list 관리(CRUD)등 리스트 활용에 대하여 알아보도록 하겠습니다

728x90
반응형
LIST
728x90
반응형
SMALL

pandas는 dataframe을 주로 다루기 위한 라이브러리이며, dataframe을 자유롭게 가공할 수 있습니다.

 

이번 포스팅에서는 파이썬을 활용한 데이터 분석에서 가장많이 활용되는 Data Analysis Library인 pandas에 대해서 알아보도록 하겠습니다. (DataFrame 생성, 정제 및 준비, 삭제, Data 내보내기)

 

pandas는 크게 세가지의 자료구조를 지원하고 있습니다.

1차원 자료구조인 Series, 2차원 자료구조인 DataFrame, 그리고 3차원 자료구조인 Panel을 지원하는데 그 중, 2차원 자료구조로 행과 열이 있는 테이블 데이타(Tabular Data)를 공부해 봅시다.

 

  • Data 분석을 위한 lib

  • DataFrame Create

  • CRUD in Dataframe

CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다.

사용자 인터페이스가 갖추어야 할 기능(정보의 참조/검색/갱신)을 가리키는 용어로서도 사용된다.

주로 Database 에서 사용되는 말이지만, 생각해보면 입력된 데이터로부터 어떤 처리과정을 거쳐도 CRUD는 다 적용되는것 같아서 저는 모든 프로그밍 언어를 배울때 중요한 기본기로 봅니다.

 

# CREATE

# READ

# UPDATE

# READ

# DELETE

# READ

  • 키값 or 연속적인 키값을 도출하기

===== 구분선 은 보기 편하시길바라며 ... 햏

  • df.head() / df.tail() -> sample data 출력하기

보기의 예제는 data의 크기가 작아서 한눈에 보기가 쉽지만, big data를 가져오면 10000개가 넘는 row를 가진 dataframe들이 많습니다. 그때, 가장 기본적으로 확인해야하는것이 sample data를 출력하여 data가 가진 정보를 분석하는 것입니다.

  • df = pd.DataFrame(c).T 전치행렬, 컬럼명 변경

     

     

.T (전치 행렬) 를 사용하지 않는 경우 columns 의 갯수를 맞춰주면된다

Pandas를 이용한 DATA 내보내기

  • DataFrame 생성하여 쉼표로 구분된 형식의 새로운csv파일 만들기

print(df)
print(db)

  • 파일을 생성하는 방법

숫자를 수로 사용 - 파일을 분리 혹은 수정본을 위해 구분하여 사용합니다.

 

숫자 순차를 사용하는 이유 - 외부에 있는 파일을 읽을떄 일반적으로 많이 사용합니다.

 

for문을 사용하면 여러개의 파일을 한번에 생선할 수 있다.

 

  • 파일을 생성하지 않고 Test

sys 모듈 : python interpreter 와 관련된 정보와 기능을 제공
sys 모듈을 통해 파일생성을 하지 않고 data를 볼수있다.

 

  • ...,None,... 사이에 None 값 replace

NULL값 대신 다른 문자나 숫자로 대체도 가능하다

  • DataFrame 안에 값이 없을 경우

NaN 값으로 대체되어 출력


DATA 정제 및 준비

  • 결측데이터 여부 확인

  • 결측데이터가 있을때 결측치 채우기

df.to_csv(sys.stdout, na_rep='호랑이') 파일내보내기시 결측값 대처하기

  • 누락된 데이터 골라내기

  • 데이터 변형

  • 데이터 치환

728x90
반응형
LIST

+ Recent posts