본문 바로가기
코드잇

[Data science toolkit] - ing

by 봉그리봉봉 2024. 7. 4.

🔨주피터 노트북 

- 데이터 사이언스는 주피터 노트북 사용 - > 데이터를 다양한 각도에서 살피고 분석하는 과정을 하나의 노트로 남겨두기

- 지금까지 쓴 코드와 각각의 실행 결과를 누적해서 볼 수 있음 - 마치 공책에 정리 하듯 

왜? 여러 방향으로 데이터를 살펴보고, 여러 방법을 사용해보 -> 인사이트를 찾아내는 과정을 결과물로 봄.

✂️ 넘파이( NUMPY) - 1.26.4

데이터 관련 연산들을 효과적으로 ! 

🔧 판다스 (PANDAS)  - 2.1.4

표 형식 데이터를 다루기 위해 ! 

🪛맷플롭립(MATPLOTLIB) - 3.8.0

효과적인 인사이트 전달, 시각화 

 

 

----

🔨주피터 노트북 

- esc 누르면 코드를 못  치는 상태가 됨, 엔터 a 위에 셀 추가, b 아래에 셀 추가. dd - 삭제

- 주피터 노트북에서는 셀의 제일 마지막 값만 출력 - 결과값이 따로 없다면 출력x

-아래에서 변수의 값을 수정해도 위에 올라가서 재실행하면 걔한테도 반영 -> 결국 실행된 순서에 따라 달라짐

- run all cells -> 초기화x -> 초기화 하려면 커널을 리셋하여 run을 해야함 

 

# 분석과정을 잘 전달하려면 스토리텔링이 중요함 

 

 

# 데이터 사이언스 - 큰 제목
## 데이터 사이언스 - 
### 데이터 사이언스
# 데이터 사이언스
**글씨 굵게**
* 글자가 기울어짐
- 글씨
- 판다스
- 점이 있는 리스트
1. 리스트
2. 리스트
3. 숫자 리스트도 가능 

 


✂️ 넘파이( NUMPY) - Numerical Python 

Numerical : 수와 관련된 ➡️ 수치적인 연산에 최적화된 파이썬 도구

넘파이의 가장 기본 :  Numpy Array [넘파이 배열] 

- 파이썬의 리스트와 유사 = 많은 양의 데이터를 담을 수 있다는 점에서 데이터 사이언스에서 유리 

장점: 많은 양의 데이터를 다루게 메모리 최적화 & 연산 최적화

- 내부적으로 c언어로 최적화되어 있음.. 속도 나이스, 다른 라이브러리와 결합 가능.

* 판다스도 넘파이 기반으로 만들어짐 -> 금방 습득 가능 

다소 복잡
그냥 더해버리면

n dimensional array : n 차원의 배열 

 

 

 


🪛맷플롭립(MATPLOTLIB) - 3.8.0

marker 종류 

https://matplotlib.org/stable/api/markers_api.html#module-matplotlib.markers

 

matplotlib.markers — Matplotlib 3.9.0 documentation

matplotlib.markers Functions to handle markers; used by the marker functionality of plot, scatter, and errorbar. All possible markers are defined here: marker symbol description "." point "," pixel "o" circle "v" triangle_down "^" triangle_up "<" triangle_

matplotlib.org

 

그래프 사이즈 설정 

 

Matplotlib에서는 그래프의 크기를 기본적으로 인치 단위로 표현

따로 설정을 하지 않으면 가로 6인치, 세로 4인치 크기의 그래프가 나옵니다.

 

pyplot의 figure()라는 함수를 호출해서, 

그래프의 크기를 의미하는 figsize라는 파라미터에 가로 길이, 세로 길이 순서로 튜플 값을 넘기면 됨니다

plt.figure(figsize=(10, 4)) 
plt.scatter(height_array, weight_array)
plt.title('Height and Weight')
plt.xlabel('Height (cm)')
plt.ylabel('Weight (kg)')
plt.show()

-> 다음 그래프 그릴 땐 초기값 6*4로 되어 있음.

 

전체적으로 그래프 크기를 통일하고 싶을 땐?

pyplot의 rcParams 속성에 직접 접근하여 그래프 사이즈의 기본 설정을 변경

 같은 노트북 파일 안에서 그래프를 그리면, 따로 설정을 바꿔주지 않는 한 계속 설정한 크기의 그래프가 나옴.

plt.rcParams['figure.figsize'] = (5, 5)

 

정리 ! 

개별적으로 크기 바꾸고 싶을 땐  figure() 함수로 figsize 설정 

plt.figure(figsize=(10, 4))

 

 

전체적으로 그래프 크기를 일관되게 설정하고 싶을 땐 rcParams 속성 변경 

plt.rcParams['figure.figsize'] = (5, 5)

 


🔧 판다스 (PANDAS)  - 2.1.4

넘파이를 베이스로 만들어진 대표적인 데이터 분석 라이브러리! 


[이해를 위한 핵심 포인트 !]
1. Numpy가 C를 기반으로 한 것. C 자료구조개론에서 배운 Array 개념 다시 복습하면서 이해하기
2. pandas는 Numpy가 2차원이 넘어갈 때 (표형식)에서 가독성이 떨어지고 한 array에 한가지 데이터 타입밖에 담을 수 없다는 한계점을 보완해주기 위해 등장한 Numpy 기반의 라이브러리  

 

1. 데이터 불러오기

2. 데이터 가공하기

3. 데이터 분석하기 

4. 데이터 시각화하기 

 

 

 

하나의 numpy array 에는 한가지의 데이터 타입만 가능 -> 그래서 다 문자열로 담아버리는 것 

그냥 넘파이 어레이로 표 형식을 다룰 때 단점 

1. 가독성 bbaddddd

2. 정보들에 대한 레이블도 불가능

3. 데이터 타입도 통일해야함

 

이를 모두 해소 

 

pd.DataFrame( )

안에 딕셔너리 { } # 괄호 안에 딕셔너리를 넣어줌 

안에 키(key)와 값(value) ➡️ 'key' : 'value' 

(value)는 리스트 (list = [ ] ) ➡️ 'key' : [ '리', '스', '트'] 

 

 

dict_df = pd.DataFrame({
    'category': ['skirt', 'sweater', 'coat', 'jeans'],
    'quantity': [10, 15, 6, 11],                                     
    'price': [30000, 60000, 95000, 35000]
})

'카테고리' : [카테고리 목록을 리스트로 넘겨줌],

'수량' : [수량을 리스트로 ],

'가격' : [가격을 리스트로]

-> 표 형태의 결과물이 나옴 

 

데이터프레임에서 가로 줄 하나하나를  row 행

세로 줄 하나하나를 colmn 열

데이터 프레임을 사용하면 컬럼에 이름을 붙일 수 있음

0123 -> 인덱스 row의 이름 

 

 컬럼 하나를 가져오면 ? 

df['price'] -> 더이상 데이터 프레임(2차원)이 아니라

시리즈! (series)(1차원) -> 1차원 어레이에 + 

 

넘파이 어레이에서 했던 여러 통계 기능도 다 수행 가능함.

 

두 시리즈들끼리 곱해서 새로운 시리즈 만들기도 가능함.

 


 

리스트나 NumPy array를 넣을 수도 있다!! 

 

🍎 1.  2차원 리스트와 2차원 NumPy array로 데이터 프레임 만들기 

#2차원 리스트
two_dimensional_list = [
    ['skirt', 10, 30000],
    ['sweater', 15, 60000],
    ['coat', 6, 95000],
    ['jeans', 11, 35000]
]
#2차원 리스트를 가지고 어레이를 만들기
two_dimensional_array = np.array(two_dimensional_list) 


list_df = pd.DataFrame(two_dimensional_list)
array_df = pd.DataFrame(two_dimensional_array)

 

 

🍎 1 - 1) 2차원 리스트 (list of lists) :  리스트 안에 요소들이 리스트 여러개

[
    ['skirt', 10, 30000],
    ['sweater', 15, 60000],
    ['coat', 6, 95000],
    ['jeans', 11, 35000]
]

 

➡️  [ ['skirt', 10, 30000], ['sweater', 15, 60000], ['coat', 6, 95000],  ['jeans', 11, 35000] ]

 

각 컬럼이 그냥 숫자값 -> 가독성 똥.

 

 

🍎 1 - 2)  columns 옵션을 사용해서 컬럼명을 설정하기 

컬럼도 리스트로 넘겨주기 

list_df = pd.DataFrame(two_dimensional_list, columns=['category', 'quantity', 'price'])
array_df = pd.DataFrame(two_dimensional_array, columns=['category', 'quantity', 'price'])

---

 


딕셔너리가 담겨  있는 리스트로 만들기 (dict_list)

 리스트 안에 동일한 키를 가진 딕셔너리 4개

 

 

 


데이터 불러오기 좋음

csv 파일을 사용할 때 header 가 존재하는지 잘 확인 해야함. 

 

첫 번째 줄이 주로 헤더 = 컬럼명이 명시되어 있음. 판다스가 자동으로 인식

헤더가 없을 경우 엉뚱한 값들이 헤더로 인식해서 들어감 - > 이 경우 헤더가 없다고 명시해줘야함.

 

 

컬럼명을 따로 설정해주기

names 파라미터 사용하기 

names = [ 컬럼명 리스트 ]  -> 리스트의 길이는 실제 컬럼의 개수랑 정확히 일치해야함 

 

 

컬럼을 인덱스로 사용하기 

단 인덱스는 절대 중복 허용 x -> 불가능하다면 숫자인덱스를 사용해야함.

 index_col = "사용하고자 하는 컬럼명"

 

 

05. 데이터 프레임에서 일부만 선택해서 보기

[정리]

loc 쓰기 , iloc 쓰기 , 그냥 바로 대괄호 쓰기 [ ]

 

 

iloc : integer location : 정수값의 인덱스를 통해서 데이터를 받아오는 것 

loc : location : 위치를 통해서 데이터를 받아오는 것 컬럼명이나 로우명을 통해서 데이터를 가져오는 것 

 

 

 

df1.loc['Double Whopper', 'protein']
df1.loc[['Whopper', 'Double Whopper','Hamburger'], 'protein']

df1.loc[['Whopper', 'Double Whopper','Hamburger'], ['protein','fat']]

 

 

 

'코드잇' 카테고리의 다른 글

[기초 통계와 시각화]  (0) 2024.07.05