Python Lib + 스마트인재개발원

안녕하세요! 오늘은 스마트인재개발원에서 수업을 듣고 있는 파이썬 라이브러리 중! Numpy, Pandas, Matplotlib에 대해 정리해 보는 시간을 갖겠습니다. 그럼 바로 시작해보겠습니다!

🍇

Numpy :

고성능 과학계산을 위한 데이터 분석 라이브러리

  • 빠르고 효율적인 벡터 산술연산을 제공하는 다차원배열 제공. (ndarray클래스)
  • 반복문 없이 전체 데이터 배열 연산이 가능한 표준 수학 함수
    (sum(), sqrt(), mean()) 리스트랑 튜플은 단순 리스트라 연산 불가!
  • 선형대수, 난수(random수) 생성, 푸리에 변환.

순서(index)

numpy.ndarray 클래스

  • 동일한 자료형을 가지는 값들이 배열 형태로 존재.
  • n차원 형태로 구성 가능.
  • 각 값들은 양의 정수로 색인(index)이 부여됨.
  • numpy에서 차원(dimension)을 rank, axis라고 부름.
  • ndarray줄여서 array로 표현.

조건필터링

boolean 인덱싱

  • true값은 출력 / false값은 출력하지 않음.

Tip 데이터를 가지고 오면 크기 파악은 기본!
shape():크기, size():요소 갯수, ndim():차원

Tip 순서가 있으니 인덱싱, 슬라이싱 가능!
인덱싱과 슬라이싱은 순서가 있는 자료형에서 데이터를 가져오는 방법으로, 쓰는 방식은 다 똑같음!
대괄호 쓰고 시작하기!

Tip axis=0 (세로) / axis=1 (가로)

함수


🥑

Pandas :

행과 열로 구성된 표 형식의 데이터조작 및 분석을 위한 라이브러리
Numpy를 기반으로 판다스 이용 -> 계산 가능!

  • Series Class : 1차원 {index+값}

    values : 값 확인
    index : 인덱스 확인
    dtype : 데이터 타입 확인

함수

이름 지정

  • .name
  • .index.name

결측치 확인

  • .isnull()
  • .notnull()

Tip

  • and = &
  • or = |
  • DataFrame Class : 2차원

    행과 열을 가지는 표와 같은 형태.
    서로 다른 종류의 자료형을 저장 할 수 있음.
  • values : 값 확인
  • index : 인덱스 확인 (1차원인 시리즈는 values, index만)
  • column : 컬럼 확인 (2차원인 dataframe은 컬럼까지!)

인덱싱, 슬라이싱

: 행과 열을 한번에 인덱싱, 슬라이싱 하는 함수 / 변수.인덱서[행, 열]

  • loc : index의 값(문자)를 사용.
  • iloc : index의 번호(정수)를 사용. ( i = 인티저 ! )
  • 인덱스[행] : 해당 행 데이터 출력.

Q. population실습

# 1. 파일 드랍하고 업로드 후, 데이터 불러오기. 인코딩해주고, 인덱스값을 바로 지정! 
population_number = pd.read_csv('population_number.csv', encodeing='euc-kr', index_col='도시')
# 2. 각 값이 나온 횟수 세기
# 2-1. 인덱싱하기
# 2.2 value_counts() 함수 이용

정렬

  • sort_index : 인덱스 값을 기준으로 정렬. 오름차순!
    (내림차순 정렬 시에는 괄호 안에 ascending=False 명시!)
  • sort_values : 데이터 값을 기준으로 정렬.
    by = 컬럼값 기준
    리스트 이용해서 여러 기준으로 정렬 가능!
population_number.sort_values(by=['지역', '2010'])
=> '지역''2010'를 하나의 리스트로 묶어 정렬. 

Boolean 인덱싱

  1. 조건에 쓰일 데이터 가져오기 => 인덱싱
  2. 판별 (boolean) -> 논리값 반환(true/false)
  3. 조건에 따라 데이터 가져오기 (불리언 인덱싱)

Q. 2015년 인구가 250만 이상인 데이터 가져오기.

1. population_number['2015']
2. population_number['2015'] >= 2500000
3. population_number[population_number['2015']>=2500000

조건 두개 이상일 땐 괄호로 묶기!

population_number[(population_number['2015']>=2500000) & (population_number['2010']>=2500000)]

Q. 합계, 평균 컬럼 추가

score['합계'] = score_sum
score['평균'] = score.loc[:, :'4반'].mean(axis=1)

DataFrame 병합

  • concat

  • merge

fillna(채울 값 지정) : 결측치 채우기
drop : DataFrame 컬럼 삭제(출력만! 원래 값은 안바뀜)
axis 지정, inplace=True 명시해주면 데이터 삭제 가능.

Q. 범죄율 증감 구하기
1. 데이터 가져와서 '발생건수'만 뽑아오기
2. 년도별 증감 구하기!
3. 컬럼명 변경!
중간에 꼬이면 걍 데이터 다시 불러와서 진행하기!

# 데이터 가져오기 
df2015 = pd.read_csv('2015.csv', encoding='euc-kr', index_col='관서명')
df2016 = pd.read_csv('2016.csv', encoding='euc-kr', index_col='관서명')
df2017 = pd.read_csv('2017.csv', encoding='euc-kr', index_col='관서명')

# 광주지방경찰청은 2017년에만 있는 데이터여서 삭제 
df2017.drop('광주지방경찰청', axis=0, inplace=True)

# 총계(데이터 총합) 컬럼 추가
df2015_crime['총계'] = df2015_crime.sum(axis=1)
df2016_crime['총계'] = df2016_crime.sum(axis=1)
df2017_crime['총계'] = df2017_crime.sum(axis=1)

df2015_crime.loc[:, '살인':'폭력'].sum(axis=1)
df2016_crime.loc[:, '살인':'폭력'].sum(axis=1)
df2017_crime.loc[:, '살인':'폭력'].sum(axis=1)

t1 = df2015_crime['총계']
t2 = df2016_crime['총계']
t3 = df2017_crime['총계']

p1 = (t2-t1)/t1*100
p2 = (t3-t2)/t2*100

crime = pd.concat([t1, p1, t2, p2, t3], axis=1)

p1.name = '2015-2016 증감율'
p2.name = '2016-2017 증감율'

crime.columns = ['2015총계', '2015-2016 증감율', 
                '2016총계', '2016-2017 증감율', '2017총계']

🥕

Matplotlib :

2D그래프로 시각화가 가능한 라이브러리

데이터 시각화

광범위하게 분산된 방대한 양의 자료를 한 눈에 볼 수 있도록 도표나 차트 등으로 정리하는 것.
시각화를 통해 데이터의 특징을 쉽게 파악 가능.
분석 결과를 상대방에서 효과적으로 전달 가능.

pyplot : 시각화 비대화형 간단한 정보만 입력해서 플롯이 됨. (plt)
pylab : 시각화+numpy

Q. 요일별 사망 교통사고 시각화

import pandas as pd
data=pd.read_csv("", encoding="euc-kr")

# 분석 시작 전 확인하기. 
data.shape() 
data.head()
data.tail()
data.info()

# 1. 요일 컬럼 가져오기
# .unique() : 중복없는 데이터 출력 함수. 
data['요일'].unique() 
# 요일별 사고 발생 건수 확인하고 temp에 담기
temp = data['요일'].value_counts()
# 요일 순서대로 가져와서 y에 담기 
# temp['월', '화'] 이런식으로 하면 오루! 대괄호 하나 더 써서 리스트화 시키기! 
y = temp[['월', '화', '수', '목', '금', '토', '일']]
x = y.index

# 2. barchart 그리기 
plt.bar(x, y)
plt.show() 
# 특정 구간만 확대해서 출력하기. 
plt.bar(x, y)
plt.ylim(500, 600)
plt.show()

/

이번 포스트에서 파이썬 라이브러리에 대해 알아보았는데요. 데이터를 가져와서 시각화를 진행하는 과정이 참 재미있었습니다. 그럼 다음 포스트에서 뵙겠습니다!

스마트인재개발원에 대해 더 알고싶다면 👆위 이미지👆를 클릭하세요!

#빅데이터전문가, #IT자격증, #스마트인재개발원, #SQLD, #머신러닝

좋은 웹페이지 즐겨찾기