numpy
고성능 계산을 하기 위한 라이브러리
특징
- import numpy
- 보통 import numpy as np 를 사용
- numpy는 리스트에 비해 연산이 빠르고 효율적이다
- 단일 타입으로 구성돼 있다.
- 기본 연산을 제공해준다. ex) x= [1,2,3] -> x+1 -> [2,3,4]
- 다차원 행렬도 기본 연산 제공해준다.
- 브로드 캐스팅 (행/열이 각각 다른 배열의 합) 제공
- 마스킹 연산 제공 ex) x=[1,2,3] -> x<2 -> [True, False, False]
- arr[ arr조건 ] 을 통해 True인 값들만 출력
numpy 함수
배열 생성
배열생성 - np.arr([원자1, 원자2..])
타입 선언 - np.arr([원자] ,dtype=타입)
행/열 배열 생성 - np.ones((행,열), dtype=타입)
일정한 행/열 배열 생성 - np.arange(start,end).reshape(행,열) ex) start~end 까지 (행,열) 생성
일정한 패턴 배열 생성 - np.arange(start,end,step) ex) 0,2,4,6 ..
나눈 패턴 배열 생성 - np.linspace(start,end,division step) ex) 0, 0.25, 0.5, 0.75, 1
랜덤 난수 - np.random.random(행,열)
랜덤 정수 - np.random.randint(start,end,(행,열))
수정
모양 바꾸기 - arr.reshape(행,열)
타입 변경 - np.astype(변경할 타입)
배열 이어 붙이기 - np.concatenate([arr1, arr2])
+ axis축으로 붙이기 - np.concatenate([arr1, arr2],axis=숫자)
axis= 0: 세로 방향
axis= 1: 가로 방향
배열 나누기 - np.split(arr, 기준 index, axis=숫자) - 인덱스 기준으로 axis 방향으로 나눔
axis=0 : 세로 방향
axis=1 : 가로 방향
반환
n차원 반환 - arr.ndim
행/열 반환 - arr.shape
길이 반환 - arr.size
평균 반환 - mean(arr)
합계 반환 - np.sum(arr,axis=숫자) - axis 방향에 맞게 합계를 구함
Pandas
numpy array가 보강된 형태
특징
- import pandas
- 보통 import pandas as pd
- series: numpy arr 보강된 data 와 index를 포함
- numpy처럼 연산자 사용 가능
- 인덱스를 계층적으로 만들 수 있다.
pandas 함수
배열 생성
배열 생성 - pd.Series([data1, data2..], index=[index1, index2...]) - 딕셔너리와 유사
+ 딕셔너리로 만들수 있음 (key: index, value: data)
여러개의 배열 생성 - pd.DataFrame({ 'col name1': df1,'col name2': df2 })
+ 여러 개의 Series가 모여서 행과 열을 이룬 데이터를 생성
+ 컬럼 이름이 하나만 있다면 Series 리스트로 들어가 있다면 DataFrame
DataFrame 새 데이터 추가/생성
1. df = pd.DataFrame(colums=['이름' , '나이', '성별']
2. df.loc[0]= ['박명수' ,55, '남자'] or {'성별':'남자' , '이름:'박명수', '나이':55}
수정 - df.loc[0, '이름']= '유재석'
수정
비어있는 데이터 제거 - df.dropna()
비어있는 데이터 채우기 - df['col name'] = df['col name'].fillna('문자')
인덱스 값 바꾸기 - df.set_index("col name")
값으로 정렬 - df.sort_values('col name') - 해당 컬럼 기준 정렬
+ ('col name', ascending=???) True(기본)-오름차순 , False-내림차순
+ 여러 값 정렬 = sort_values(['col1', 'col2'], ascending=[T/F, T/F])
반환
인덱스를 이용한 값 반환 - df.loc['index name']
+ 인덱스 슬라이싱: df.loc[index name slicing, columns name slicing]
정수 인덱스를 이용한 값 반환 - df.iloc[index num]
인덱스 출력 - df.index
열 이름 출력 - df.colums
누락된 데이터 체크 - df.isnull()
기타
데이터 프레임 저장 - df.to_???("./dataframe.???")
+ csv : 표 형태 데이터 파일 xlsx: 엑셀파일
데이터 프레임 불러오기 - pd.read_???("./dataframe???)
+ csv: 표 형태 데이터 파일 xlsx: f엑셀파일
A+B - A.add(B,fill_value=value)
+ dataframe끼리 연산 시 하나의 index가 비어있으면 NaN 발생 -> fill_value를 통해 빈 값을 대신 채워줌
조건 검색
1. 마스킹 연산 - df['col name'] 조건 + &,| 사용
2. 쿼리 함수 이용 - df.query('조건')
3. 문자열 조건 검색 시 - df['col name'].str.contanins('value') - value 포함시 true
- df.col name.str.match('value')
함수로 데이터 처리
- apply : 새로운 colum 생성 및 변경
df['col name'] = df['col name'].apply(함수)
= df['col name'] = df.colname.apply(lambda 생성)
- replace : apply 기능에서 데이터 값만 대체 할 때
df['colum name'] =df.col name.replace({value1:replace value1, ..})
+넣지 않고 바로 적용 - df.col name.replace({value1:replace value1, ..},inplace=True)
그룹으로 묶기
- groupby
col name기준으로 그룹화 - df.groupby('col name')
+ 여러개 - df.groupby(['col name1', 'col name2']).함수
- aggregate : groupby를 통해 집계 계산
df.groupby('col name').aggregate([기준1, 기준2])
+ df.groupby('col name').aggregate({'col name1': 기준1, 'col name2':기준2})
- filter : groupby를 통해 그룹 속성을 기준으로 데이터 필터링
함수를 기준으로 그룹화 - df.groupby('col name').filter(함수)
- apply : groupby를 통해서 묶인 데이터에 함수 적용
df.groupby('col name').apply(함수)
- get_group : groupby로 묶인 데이터에서 key값 가져오기
value에 해당하는 데이터 추출- df.groupby('col name').get_group(value)
pivot_table
데이터에서 필요한 자료만 사용하여 새롭게 요약
[index: 행 인덱스로 들어갈 key, columns:열 인덱스로 라벨링될 값, values: 분석할 데이터]
df.pivot_table( index='col name' columns='col name', values=['col name'] ,aggfunc=함수)
ex) index를 기준으로 각 column 에 aggfunc 를 적용한 values를 기재한 피벗테이블을 만듦
ex) 일차를 기준으로 각 성별에 평균값을 적용한 나이를 기재한 피벗테이블을 만듦
Matplotlib
데이터를 그래프나 차트로 시각화할 수 있는 라이브러리
특징
- import matplotlib.pyplot 주로 as plt
Figure : Axex를 모두 포함하는 도화지
Axex : 하나의 그래프
Grid : 격자
tick : 눈금
Legend : 범례
Matplotlib 함수
생성
객체 지향으로 할 때 - fig,ax =plt.subplots()
그래프 생성 - plt.plot(x,y) , ax.plot(x,y)
+ 범례와 같이 생성 - ax.plot(x,y,label="이름")
설정
그래프 이름 설정 -plt.title("이름") , ax.set_title("이름")
x축 이름 설정 - plt.xlabel("이름") , ax.set_xlabel("이름")
y축 이름 설정 - plt.ylabel("이름") , ax.set_ylabel("이름")
x 범위 설정 - ax.set_xlim(start,end)
y 범위 설정 - ax.set_ylim(start,end)
범례 보이게 설정 - ax.legend()
value 의 해상도로 설정- flg.set_dpi(value)
기타
fig 저장 - fig.savefig("이름")
히스토그램 그리기 - ax.hist(data,bins=??) - bins = 나눌 단위
plot -plot 그리기
1. ax.plot(x,y, linestyle= , marker= , color= )
linestyle = 문자 스타일
[solid = "-" dashed = "--" dashdot = "-." dotted = ":" ..]
Color = 색상
['r', 'red' ..]
Marker = 체크 표시
[점 = "." , 동그라미 = "o" , 삼각형 = "v" , 사각형 = "s" , 별표 = "*" ..]
2. ax.plot( x, y, 'marker str', markersize= , markerfacecolor= , markeredgecolor= )
marker str = 문자
markersize = 크기
markerfacecolor = 문자 안의 색상
markeredgecolor = 문자 테두리 색상
Scatter - 산점도
ax.scatter(x,y,c= , s= , alpha=)
c= 색상
s= 크기
Bar plot - 축적 그래프 구조
bar 형태로 축적 - ax.bar(순서,넣을 값)
시작 점 지정 - bottom= np.sum(전에 넣은 값,axis=??)
각 막대기에 tick값을 설정 - ax.set_xticks(순서)
각 막대기에 순서에 맞게 이름을 넣어줌 - ax.set_xticklabels(['?' , '?' ..])
범례 데이터 생성
ax.legend(lco= , shadow= , fancybox= , borderpad=)
loc = '상하위치 좌우위치'
[upper : 위 , lower: 아래 , left : 왼쪽 , right : 오른쪽]
shadow = T/F -그림자 설정
fancybox =T/F - 둥글기 설정
borderpad = 범례 박스 크기 설정
범주형 자료
도수
도수 표현 - value_count()
상대 도수 표현 - value_count(normalize=True)
도수 분포표 표현 - pd.crosstab(index=행 , columns= 열)
그래프
원형 그래프 : 전체적인 분포의 이해를 더 높여주는 그래프
표현 - plt.pie(수치 , label= 라벨)
원형으로 교정 - plt.axis("equal")
막대 그래프 : 각 범주의 도수 크기 차이를 더 쉽게 보여주는 그래프
표현 - plt.bar(x=라벨, height=수치)
'Python > 기본 문법 내용 정리' 카테고리의 다른 글
예외처리 (0) | 2022.01.28 |
---|---|
+ 스태틱/인스턴스 함수와 메서드와 매직 메서드 (0) | 2022.01.28 |
클래스 (0) | 2021.07.15 |
함수와 파일 입출력 (0) | 2021.07.14 |
제어문 (0) | 2021.07.13 |