Python Lib + 스마트인재개발원
안녕하세요! 오늘은 스마트인재개발원에서 수업을 듣고 있는 파이썬 라이브러리 중! Numpy, Pandas, Matplotlib에 대해 정리해 보는 시간을 갖겠습니다. 그럼 바로 시작해보겠습니다!
🍇
Numpy :
고성능 과학계산을 위한 데이터 분석 라이브러리
- 빠르고 효율적인 벡터 산술연산을 제공하는 다차원배열 제공. (ndarray클래스)
- 반복문 없이 전체 데이터 배열 연산이 가능한 표준 수학 함수
(sum(), sqrt(), mean()) 리스트랑 튜플은 단순 리스트라 연산 불가!
- 선형대수, 난수(random수) 생성, 푸리에 변환.
순서(index)
Numpy :
고성능 과학계산을 위한 데이터 분석 라이브러리
- 빠르고 효율적인 벡터 산술연산을 제공하는 다차원배열 제공. (ndarray클래스)
- 반복문 없이 전체 데이터 배열 연산이 가능한 표준 수학 함수
(sum(), sqrt(), mean()) 리스트랑 튜플은 단순 리스트라 연산 불가! - 선형대수, 난수(random수) 생성, 푸리에 변환.
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 : 데이터 타입 확인
함수
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 인덱싱
- 조건에 쓰일 데이터 가져오기 => 인덱싱
- 판별 (boolean) -> 논리값 반환(true/false)
- 조건에 따라 데이터 가져오기 (불리언 인덱싱)
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그래프로 시각화가 가능한 라이브러리
데이터 시각화
광범위하게 분산된 방대한 양의 자료를 한 눈에 볼 수 있도록 도표나 차트 등으로 정리하는 것.
시각화를 통해 데이터의 특징을 쉽게 파악 가능.
분석 결과를 상대방에서 효과적으로 전달 가능.
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, #머신러닝
Author And Source
이 문제에 관하여(Python Lib + 스마트인재개발원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@0808yeonghye/Python-Lib저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)