Search

Class 03. 파이썬의 데이터 타입과 DATAFRAME

파이썬을 이용한 데이터 분석을 위해 기본적으로 알아야 할 데이터 타입(자료형)과 DATAFRAME에 대해 살펴봅니다.

3-1. String

문자열을 다루기 위한 데이터 타입입니다.
싱글따옴표(’)와 더블따옴표(”)
싱글따옴표나 더블따옴표를 사용해 문자열 값을 지정합니다.
문자열 자체에 싱글따옴표가 필요한 경우, 충돌을 피하기 위해 더블따옴표로 문자열을 지정합니다.
Ex)
에러: str1 = ‘나는 ‘사과’가 좋아요’
싱글따옴표로 처리된 문자열 내부에 싱글따옴표 사용 불가
정상: str2 = “나는 ‘사과’가 좋아요”
더블따옴표로 처리된 문자열 내부에는 싱글따옴표 사용 가능
더블따옴표 세개(""")
여러 줄에 걸친 문자열을 정의할 때 사용합니다.
문자열 포맷팅
문자열과 외부의 값을 조합하기 위해 문자열 포맷팅 기능을 사용합니다.
%s: 문자열 내에 다른 문자열을 삽입하기 위해 사용
%d: 문자열 내에 정수형 숫자를 삽입하기 위해 사용
str.format: 문자열(str) 안에 {}를 사용하고, format 안에 차례대로 삽입할 문자를 입력합니다.
f-String(Formatted String Literals)
Python 3.6 이상에서 사용 가능합니다.
문자열 앞에 f를 붙이고 문자열 내에 {}를 이용해 문자열 외부의 변수 값을 사용할 수 있습니다.
문자열 특수 값 표현
문자열 안에 \t를 사용해 탭을 표현합니다.
\n을 사용해 엔터를 표현합니다.
Raw문자열: 문자열 앞에 r을 사용하면 Raw문자열이 되며, 문자열 안에 \t나 \n이 무시되고 그대로 출력됩니다.

3-1-1. stringTest.py 파일 추가

PyCharm을 실행해 myStartUPQuant 프로젝트에 Class03 Directory와 stringTest.py 추가합니다.
myStartUPQuant 폴더에서 마우스 우클릭
New > Directory > Class03 입력 후 엔터
Class03 폴더에서 마우스 우클릭
New > Python File > stringTest.py 입력 후 엔터

3-1-2. stringTest.py 코드 입력해보기

코드 작성해보고 실행해보기
# Class03\stringTest.py # 싱글따옴표와 더블따옴표 print('1. 싱글따옴표와 더블따옴표') single_quote_str = 'Apple' double_quote_str = "Microsoft" print(single_quote_str) print(double_quote_str) print('\n') # 더블따옴표 세 개 사용 print('2. 더블따옴표 세 개 사용') multi_line_str = """Samsung Electronics Hyundai Motor NVIDIA""" print(multi_line_str) print('\n') # 문자열 포맷팅 (%s, %d 사용) print('3. 문자열 포맷팅 (%s, %d 사용)') company = 'Tesla' stock_price = 720 formatted_str = 'The stock price of %s is %d USD.' % (company, stock_price) print(formatted_str) print('\n') # str.format 사용 print('4. str.format 사용') formatted_str_with_format = 'The stock price of {} is {} USD.'.format(company, stock_price) print(formatted_str_with_format) print('\n') # F-String (Formatted String Literals) 사용 print('5. F-String (Formatted String Literals) 사용') formatted_str_with_fstring = f'The stock price of {company} is {stock_price} USD.' print(formatted_str_with_fstring) print('\n') # 문자열 특수 값 표현 print('6. 문자열 특수 값 표현') tab_str = 'Hello\tWorld' new_line_str = 'Hello\nWorld' raw_str = r'Hello\nWorld' print('탭 문자 포함:', tab_str) print('줄바꿈 문자 포함:', new_line_str) print('Raw 문자열:', raw_str)
Python
복사

3-2. List

여러 데이터를 순서대로 저장할 수 있는 컬렉션(Collection) 타입입니다.
Python의 대표적인 데이터 구조 중 하나입니다.
특징
다양한 데이터 타입을 저장, 하나의 리스트에 정수, 실수, 문자 등을 혼합해 저장할 수 있습니다.
순서가 존재, 리스트에 값을 추가하는 순서대로 저장합니다.
인덱스 및 슬라이싱, 인덱스를 통해 리스트의 특정 값에 접근하거나, 잘라낼 수 있습니다.
리스트의 일부 내용을 변경할 수 있습니다.

3-2-1. listTest.py 파일 추가

PyCharm을 실행해 myStartUPQuant 프로젝트의 Class03 Directory에 stringTest.py 추가합니다.
Class03 폴더에서 마우스 우클릭
New > Python File > listTest.py 입력 후 엔터

3-2-2. listTest.py 코드 입력해보기

코드 작성해보고 실행해보기
# Class03\listTest.py # 기본 리스트 정의 names = ["Samsung Electronics", "Hyundai Motor", "Microsoft", "NVIDIA", "Tesla", "Apple"] # 예제 1: 리스트 내 요소에 접근하기 print('1. 리스트 내 요소에 접근하기') print(names[0]) # 첫 번째 요소 출력 print(names[-1]) # 마지막 요소 출력 print('\n') # 줄바꿈 # 예제 2: 리스트 요소 추가 및 제거하기 print('2. 리스트 요소 추가 및 제거하기') names.append('Google') # 'Google' 추가 print("Google 추가 후:", names) names.remove('NVIDIA') # 'NVIDIA' 제거 print("NVIDIA 제거 후:", names) print('\n') # 예제 3: 리스트 슬라이싱 print('3. 리스트 슬라이싱') sub_list = names[1:4] # 두 번째부터 네 번째 요소까지 슬라이싱 print("두 번째부터 네 번째 요소:", sub_list) print('\n') # 예제 4: 리스트 요소 반복 print('4. 리스트 요소 반복') for name in names: print(name) print('\n') # 예제 5: 리스트 내 요소 검색 print('5. 리스트 내 요소 검색') if 'Apple' in names: print("Apple is in the list") else: print("Apple is not in the list") print('\n') # 예제 6: 리스트 길이 확인 print('6. 리스트 길이 확인') print("리스트의 길이:", len(names))
Python
복사

3-3. Dictionary

Dictionary(딕셔너리는) Python에서 사용되는 내장 데이터 구조 중 하나입니다.
키(Key)와 값(Value)의 쌍의 구조로 여러 데이터를 저장합니다.
순서가 없는 컬렉션이므로, 순서인덱스가 아닌 키(Key)를 통해 데이터에 접근합니다.
키는 고유해야 하며, 중복되는 키를 가질 수 없습니다.
가변적(mutable)이므로, 생성 후에도 내용을 변경할 수 있습니다.
사용 사례 및 장점:
데이터를 키와 값의 형태로 저장하기 때문에, 빠른 검색 및 업데이트가 가능합니다.
JSON 데이터와 유사한 구조를 가지므로, 웹 개발에서 데이터를 주고받을 때 흔히 사용됩니다.
복잡한 데이터 구조를 효과적으로 표현하고 관리할 수 있습니다.
기본 사용 방법:
딕셔너리 생성: my_dict = {'key1': 'value1', 'key2': 'value2'}
데이터 접근: value = my_dict['key1']
데이터 추가 및 변경: my_dict['new_key'] = 'new_value'

3-3-1. dictTest.py 파일 추가

PyCharm을 실행해 myStartUPQuant 프로젝트의 Class03 Directory에 dictTest.py 추가하기
Class03 폴더에서 마우스 우클릭
New > Python File > dictTest.py 입력 후 엔터

3-2-2. dictTest.py 코드 입력해보기

코드 작성해보고 실행해보기
# Class03\dictTest.py # 기본 딕셔너리 정의 # 주식 심볼을 키로 하고 회사명을 값으로 하는 딕셔너리 stock_symbols = { "005930.KS": "Samsung Electronics", "005380.KS": "Hyundai Motor", "MSFT": "Microsoft", "NVDA": "NVIDIA", "TSLA": "Tesla", "AAPL": "Apple" } # 예제 1: 딕셔너리 내 요소에 접근하기 print('1. 딕셔너리 내 요소에 접근하기') print(stock_symbols['005930.KS']) # '005930.KS'의 값 출력 print(stock_symbols['AAPL']) # 'AAPL'의 값 출력 print('\n') # 줄바꿈 # 예제 2: 딕셔너리 요소 추가 및 제거하기 print('2. 딕셔너리 요소 추가 및 제거하기') stock_symbols['GOOGL'] = 'Google' # 'Google' 추가 print("Google 추가 후:", stock_symbols) del stock_symbols['NVDA'] # 'NVIDIA' 제거 print("NVIDIA 제거 후:", stock_symbols) print('\n') # 예제 3: 딕셔너리 키로 반복하기 print('3. 딕셔너리 키로 반복하기') for symbol in stock_symbols: print(symbol) print('\n') # 예제 4: 딕셔너리의 키와 값으로 반복하기 print('4. 딕셔너리의 키와 값으로 반복하기') for symbol, company in stock_symbols.items(): print(f"{symbol}: {company}") print('\n') # 예제 5: 딕셔너리 내 키 검색 print('5. 딕셔너리 내 키 검색') if 'AAPL' in stock_symbols: print("AAPL is in the dictionary") else: print("AAPL is not in the dictionary") print('\n') # 예제 6: 딕셔너리 길이 확인 print('6. 딕셔너리 길이 확인') print("딕셔너리의 길이:", len(stock_symbols))
Python
복사

3-4. Pandas와 Dataframe

판다스(Pandas)
판다스는 데이터 분석 도구를 제공하는 오픈 소스 라이브러리입니다.
주요 기능
다양한 데이터 형식(예: CSV, Excel 등)의 데이터 읽기 및 쓰기 기능
데이터 정렬, 필터링, 그룹화, 변환 등의 데이터 조작 및 분석 기능
시계열 데이터 처리 기능
사용 이유
데이터 과학, 데이터 분석, 기계 학습 등에서 데이터를 효과적으로 다루기 위해 널리 사용됩니다.
데이터프레임(DataFrame)
데이터프레임은 판다스 라이브러리에서 사용되는 기본 데이터 구조
행과 열이 있는 테이블 형태의 구조를 가집니다.
특징
각 열(Column, Field)은 서로 다른 데이터 타입(예: 정수, 실수, 문자열 등)을 가질 수 있습니다.
데이터의 수정, 추가, 삭제가 가능합니다.
라벨을 통한 행과 열의 인덱싱이 가능합니다.
활용 예시
데이터 정리, 데이터 시각화, 통계적 분석, 머신 러닝 모델의 입력 데이터로 사용 등
데이터프레임(DataFrame)과 관계형 데이터
구조적 유사성
데이터프레임과 관계형 테이블 모두 '행과 열'의 구조를 가짐.
데이터는 행(레코드) 단위로 저장되며, 각 행은 열(컬럼, 필드)로 구성됨.
데이터 타입의 다양성
데이터프레임의 각 열은 서로 다른 데이터 타입을 가질 수 있음 (예: 정수, 실수, 문자열).
RDB의 테이블 역시 열마다 데이터 타입이 지정되어 있음.
인덱싱 및 검색 기능
데이터프레임은 라벨을 통한 인덱싱을 제공
RDB는 기본 키(Primary Key) 또는 인덱스를 사용하여 데이터를 빠르게 찾을 수 있음.
조건부 검색과 데이터 필터링이 가능, 복잡한 쿼리와 분석 작업에 유용함.
데이터 조작 및 변환 기능
데이터프레임은 데이터의 수정, 추가, 삭제가 간편하며, RDB에서도 SQL 명령어를 통해 유사한 작업을 수행할 수 있음.
그룹화, 정렬, 집계와 같은 고급 데이터 조작 기능을 제공함.
단, 관계형 데이터베이스의 테이블은 여러 사람이 동시에 접근해 데이터를 조작할 수 있다.
Dataframe은 기본적으로 로컬에서 혼자 컨트롤한다

3-4-1. 아나콘다 가상환경에 pandas 모듈 추가

아나콘다 가상환경에 pandas모듈을 추가 설치합니다.
pip install pandas
Pandas 관련 기능을 처리하기 위한 모듈
앞에서 finance-datareader를 설치했다면 추가 설치하지 않아도 된다.
finance-datareader 설치시 pandas가 기본적으로 같이 설치됩니다.
[2-2. 가상 환경에 FinanceDataReader 모듈 설치하기] 부분 참고

3-4-2. dataframeTest.py 파일 추가

PyCharm을 실행해 myStartUPQuant 프로젝트의 Class03 Directory에 dataframeTest.py 추가하기
Class03 폴더에서 마우스 우클릭
New > Python File > dataframeTest.py 입력 후 엔터

3-4-3. dictTest.py 코드 입력해보기

코드 작성해보고 실행해보기
# Class03\dataframeTest.py # pandas 라이브러리를 'pd'라는 이름으로 임포트합니다. # pandas는 데이터 조작 및 분석을 위한 Python 라이브러리입니다. # 'pd'라는 별칭(alias)을 사용하여 pandas 라이브러리의 함수들을 더 간편하게 호출할 수 있습니다. import pandas as pd # 데이터를 딕셔너리 형태로 생성합니다. # 'Symbol'과 'Name'이라는 키를 가지며, 각각 주식 심볼과 회사 이름을 값으로 가집니다. data = { "Symbol": ["005930.KS", "005380.KS", "MSFT", "NVDA", "TSLA", "AAPL"], "Name": ["Samsung Electronics", "Hyundai Motor", "Microsoft", "NVIDIA", "Tesla", "Apple"] } # pandas의 DataFrame 클래스를 사용하여 데이터프레임을 생성합니다. # DataFrame은 행과 열로 구성된 테이블 형태의 데이터 구조를 가지며, 여러 가지 데이터 조작을 위한 메소드를 제공합니다. df = pd.DataFrame(data) # 1. 데이터프레임 조회하기. print('1. 데이터프레임에 저장된 데이터 확인하기') print(df) print('\n') # 2. 데이터프레임의 컬럼 확인하기 # DataFrame.columns 속성을 사용하여 데이터프레임의 모든 컬럼 이름을 확인할 수 있습니다. print('2. 데이터프레임의 컬럼들 확인하기') columns = df.columns print("Columns:", columns) print('\n') # 3. 데이터프레임의 인덱스 확인하기 # DataFrame.index 속성을 사용하여 데이터프레임의 인덱스를 확인할 수 있습니다. print('3. 데이터프레임의 인덱스 값들 확인하기') indexes = df.index print("Indexes:", indexes) print('\n') # 4. 데이터프레임의 특정 컬럼의 값들 다 조회하기. # 데이터프레임의 특정 컬럼의 값들은 각각의 시리즈 객체로 구성되어 있다. print('4. 데이터프레임의 특정 값 조회하기') symbol = df['Symbol'] print('Type of column in dataframe:',type(symbol)) print(df['Symbol']) print('\n') # 5. 데이터프레임에서 특정 로우의 데이터 조회하기 # DataFrame.loc[] 또는 DataFrame.iloc[]을 사용하여 특정 데이터를 조회할 수 있습니다. # DataFrame에 입력된 데이터는 순서가 정해져 있으며, 0번부터 차례대로 데이터가 인덱싱됩니다. print('5. 데이터프레임의 특정 로우 출력하기') print('첫번쨰 로우의 데이터') print(df.iloc[0]) print('마지막 로우의 데이터') print(df.iloc[-1]) print('\n') # 6. 데이터프레임에서 특정 컬럼-특정 로우의 값만 조회하기. print('6. 데이터프레임에서 특정 컬럼-특정 로우의 값만 출력하기') print('Symbol컬럼의 두 번째(0부터 시작이므로) 로우의 값 출력:', df['Symbol'].iloc[1]) print(f"Name컬럼의 세 번째 로우의 값은 입니다. {df['Name'].iloc[2]} 여기서는 f-String을 사용했습니다.") print('\n') # 7. 루프를 돌면서 데이터프레임의 데이터를 한 로우씩 출력하기 # DataFrame.iterrows() 함수를 사용하여 데이터프레임의 각 행을 순회하고 데이터를 출력할 수 있습니다. print("Data in each row:") for index, row in df.iterrows(): # f-String을 이용해 출력합니다. print(f"Row {index}: Symbol = {row['Symbol']}, Name = {row['Name']}")
Python
복사
이외에도 데이터 분석을 위해서는 다양한 문법과 데이터 타입을 이해해야 합니다. 하지만 이를 익히는 과정이 지루할 수 있으므로 진도를 일단 나가면서, 추가로 공부가 필요한 내용이 나오면 그 시점에 별도 검색을 통해 이해해보기 바랍니다.