문준영
새벽 코딩
문준영
전체 방문자
오늘
어제
  • 분류 전체보기
    • 웹 개발
    • JAVA
      • 기본 문법 내용 정리
      • 함수 내용 정리
      • 쉽게 배우는 자바 프로그래밍 문제 풀이
    • HTML
      • HTML
      • CSS
      • 문제풀이
    • JavaScript
    • MYSQL
    • C
      • 기본 문법 내용 정리
      • 백준 알고리즘 (c언어)
      • 자료구조
    • Python
      • 참고 알고리즘
      • 기본 문법 내용 정리
      • 자료구조 내용 정리
      • 백준 알고리즘 (파이썬)
    • 깃허브
    • 멀티잇 풀스택

티스토리

hELLO · Designed By 정상우.
문준영

새벽 코딩

Python/기본 문법 내용 정리

데이터 분석

2022. 6. 23. 16:59

 

 

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
    'Python/기본 문법 내용 정리' 카테고리의 다른 글
    • 예외처리
    • + 스태틱/인스턴스 함수와 메서드와 매직 메서드
    • 클래스
    • 함수와 파일 입출력
    문준영
    문준영
    공부한 내용 정리!

    티스토리툴바