데이터분석/이것이데이터분석이다

02~03 :: Jupyter 노트북, Pandas 사용법 / Numpy, Matplotlib 사용법

묘걍 2023. 12. 15. 20:04

👉🏻 주피터 노트북 사용 방법

✅ 가상환경에서 주피터 노트북 열기

✅ 파일 생성

- 주피터 노트북 UI 바뀌고나서는 처음이라 정확하진 않지만 이게 맞는 것 같다

- 이렇게 파일 창이 뜬다

- Home 화면에서 보면 생성된 것을 확인할 수 있다

🎮 코드(셀) 실행해보기

  • 파이썬은 셀 단위로 실행할 수 있다

- 셀에 코드를 치고

- 단축키 shift + enter를 누르면

- 실행이 되면서 셀이 추가된다

- 아니면 Run에서 원하는 옵션을 선택해 실행할 수도 있다

🎮 셀 삭제

- 메뉴의 가위모양을 눌러 셀을 없앨 수 있다

- 단축키 설정을 통해 삭제할 수도 있다.

 

👉🏻 판다스 사용법 알아보기

🎮 판다스 import

- 파이썬의 라이브러리를 가져오는 문법

- pd는 판다스를 앞으로 pd라는 축약어로 부르겠다는 뜻

🎮 판다스 사용하기

- 3개의 리스트 생성

- 리스트를 zip()이라는 문법으로 묶어준다

더보기

zip() 함수는 주어진 여러 개의 리스트나 다른 순회 가능한(iterable) 객체들을 병렬로 묶어주는 역할을 합니다. 판다스에서는 이를 사용하여 여러 개의 리스트를 하나의 데이터프레임으로 합칠 수 있습니다.

* zip이 어떻게 생성되는지 잠시 확인해보자

 - 두 개의 리스트를 zip에 넣어주면 set이 생성된다

- 이것을 list()를 이용해 다시 묵은 것이 BabyDataSet

- 이런 모양으로 출력된다

- 판다스의 DataFrame이라는 데이터 타입을 생성하여

- 들어가는 뼈대가 되는 데이터는 방금 전에 생성한 데이터 (BabyDataSet을 data라는 인자에 넣음)

- 열 이름은 Names와 Births

- head()를 통해 출력해보면

- 판다스의 dataframe타입으로 생성이 된다

* 판다스는 (사람이 보기에) 행과 열로 구분되어있는 데이터 타입으로 바꿔주는 역할을 하는 object

🎮 행별 / 열별 데이터 살펴보기

- dtypes는 데이터프레임에 있는 열들이 어떤 타입을 가지고 있는지 출력해준다

- index는 행 정보가 출력된다

- columns은 

🎮 구성 컬럼 알아보기

- df의 columns를 출력해보면

- 데이터 프레임의 컬럼이 어떻게 구성되어있는지 알 수 있다.

🎮 열 출력하기

- [[ ]]를 사용해서 출력

- 이중 대괄호를 통해 두 번의 인덱싱을 수행

     - 외부 [ ]은 데이터 프레임을 선택

     - 내부 [ ]은 선택된 데이터 프레임에서 열을 선택

- 열 이름을 포함하여 dataframe을 선택

✅ [ ]를 하나만 사용하면?

- Names 컬럼의 데이터들을 출력함

- [ ]만 사용할 경우 Series 객체를 반환

- 열 이름을 기반으로 series를 선택

🎮 행 출력하기

- 인덱스의 범위 입력

- 0 ~ 2번째 인덱스를 선택

🎮 조건 적용하기

- Births 열이 100보다 큰 데이터를 선택

- 내부의 df['Births']는 데이터프레임에서 Births 열만 가져옴

- 외부 [ ]안에서 조건을 적용

- 가져온 열에서 데이터가 100보다 큰 행만 선택하겠다

- 데이터가 많다면 .head()를 통해 상위n개만 볼 수 있음

🎮 평균값

- 데이터 프레임을 잘 살펴보면 산수 연산을 할 수 있는 컬럼은 Births밖에 없다

- 그래서 강사님은 자동으로 Births에 대한 값만 리턴이 됐는데 나는 에러가 났다

- 왜 강사님과 다른지 이유는 알아내지 못했다 (Names의 평균을 구할 수 없다는 건 아는데, 강사님은 Names열이 자동으로 무시되고 나는 Names 때문에 에러가 난 이 차이점을 모르겠다는 의미...)

- 아무튼 평균 구하고 싶으면 이렇게...

🎮 통계치 함수

- 이번엔 또 왜 자동으로 Births에 대해서만 결과가 나온거지?? (위에서는 왜 자동으로 안됐냐 이말...)

- 통계 정보를 요약해서 출력하는 함수

 

 

💡 Pandas 더 알아보기

https://pandas.pydata.org/pandas-docs/stable/index.html

 

pandas documentation — pandas 2.1.4 documentation

API reference The reference guide contains a detailed description of the pandas API. The reference describes how the methods work and which parameters can be used. It assumes that you have an understanding of the key concepts.

pandas.pydata.org


👉🏻 마크다운

  • 주피터 노트북을 실행할 때 코드 실행 뿐만 아니라 문서처럼 정리 가능

- 셀을 선택하고

- 드롭박스에서 Markdown 선택

- #을 하나만 붙이고 실행을 시키면

- 문서형태로 출력된 것을 볼 수 있다

- 수정하고 싶다면 셀을 더블클릭하면 된다

👉🏻 Numpy

  • 벡터 연산이나 행렬 연산을 위해 만들어진 자료구조
  • https://numpy.org/
 

NumPy

Powerful N-dimensional arrays Fast and versatile, the NumPy vectorization, indexing, and broadcasting concepts are the de-facto standards of array computing today. Numerical computing tools NumPy offers comprehensive mathematical functions, random number g

numpy.org

- 넘파이를 np라는 축약어로 설정

✅ np.arange()

- 0 ~ 9까지의 데이터가 들어있는 넘파이 배열

  • 파이썬의 일반 배열과는 조금 다르다

- 파이썬 배열을 넘파이 배열로 바꿔주는 기능도 가지고 있다

✅ reshape()

- 0 ~ 14까지의 원소가 들어있는 넘파이 배열

- 해당 배열을 3 × 5의 형태로 만들어라

✅ .shape

- 넘파이 배열의 형태를 알 수 있다

- 행렬의 차원이 출력됨

 

✅ zeros()

  • 0과 1로 되어있는 배열을 만들어야할 때 사용
  • ones()도 있음

- 3 × 4 크기의 0으로 채워진 배열을 만들어라

🧩 넘파이 배열 연산

  • 사칙연산
  • 벡터의 내적 등을 연산할 수 있다
  • 연산의 대상이 되는 객체들의 shape이 맞아야 한다

- 각 위치에 맞는 요소끼리 연산이 된다

 

👉🏻 Matplotlib

  • 주피터 노트북 내에서 사용할 경우 %matplotlib inline을 입력해줘야 한다
    • 주피터 노트북 내에서 인라인으로 출력하겠다는 명령어
  • https://matplotlib.org/
 

Matplotlib — Visualization with Python

seaborn seaborn is a high level interface for drawing statistical graphics with Matplotlib. It aims to make visualization a central part of exploring and understanding complex datasets. statistical data visualization Cartopy Cartopy is a Python package des

matplotlib.org

- import 한 뒤 plt로 부르겠다

✅ 막대그래프

- 데이터 프레임의 일부를 가져옴

     - 각각 x와 y 데이터로 가져옴

- x를 확인해보면

- y를 확인해보면

- 원하는 그래프의 객체를 생성해줘야 한다

- 생성된 객체에 축 제목과 그래프 제목을 달아준다

- 마지막에 show() 메서드를 통해 출력한다

✅ 산점도

더보기

랜덤 추출 시드를 고정하는 이유는 결과를 재현할 수 있도록 하는 것입니다. 시드(seed)는 랜덤 넘버 생성 알고리즘에서 초기값을 나타내며, 동일한 시드를 사용하면 항상 같은 랜덤한 순서로 숫자가 생성됩니다. 따라서 동일한 데이터와 동일한 랜덤 시드를 사용하면 코드를 실행할 때마다 동일한 결과를 얻을 수 있습니다.

이것은 과학적 실험이나 데이터 분석에서 결과의 일관성과 재현성이 중요한 경우에 특히 유용합니다. 특히 데이터 시각화와 같이 시각적인 결과물을 생성할 때, 랜덤한 요소가 포함된 경우에도 동일한 시드를 사용하면 그림이나 차트 등이 항상 일관된 모습으로 나타납니다.

- plt.scatter() 안에 데이터 프레임을 넣어도 되지만 이번에는 넘파이를 이용해 데이터를 넣었다

더보기

0.0부터 100.0까지 5.0 간격으로 등간격의 값을 생성하여 배열 x에 할당합니다. np.arange 함수는 주어진 범위와 간격에 따라 배열을 생성합니다. 이 경우에는 0.0부터 시작하여 5.0 간격으로 100.0 미만까지의 값이 포함된 배열이 생성됩니다.

 

x 배열의 각 원소에 1.5를 곱하고, 거기에 길이가 20인 랜덤한 값들이 포함된 배열을 더합니다. 이를 통해 랜덤한 노이즈를 추가하면서 선형 관계를 가지는 데이터를 생성합니다. np.random.rand(20)는 0부터 1까지의 난수를 20개 생성하며, 이에 50을 곱하여 랜덤한 값을 만듭니다. 최종적으로 생성된 y 배열은 선형 관계를 가지면서 약간의 랜덤한 편차가 있는 데이터입니다.

- alpha: 산점도의 점의 크기

- legend: 디자인 파라미터

더보기
  • c: 산점도의 색상을 지정, b는 파란색(blue)을 의미
  • alpha: 산점도의 투명도를 나타냄. 0 ~ 1까지의 값을 가질 수 있고 0에 가까울 수록 투명함
  • label: 산점도에레이블을 부여. 그림에 범례를 추가할 때 사용
  • legend: 범례를 추가.
    • loc: 범례의 위치를 지정. upper/lower + left/right

 

 

 

 

 

 

 

 

 

 

 

 

출처: https://youtu.be/1CfomBTaBf0?si=vgjuh86xdN_0qJNs

https://youtu.be/nFIAC_tv39g?si=xiDBKBmjihdC0CYj