Now Loading ...
-
-
-
Pandas
Pandas(Python Data Analysis Library)
정형데이터 조작에 최적화된 라이브러리
행렬로 이루어진 테이블 형태구조의 데이터 연산이 뛰어나다
json,html,csv,xlsx,sql등등 다양한 정형화 데이터를 통일하여 표현가능
기본구조
Pandas는 1차원 구조와 2차원 구조를 가지고 있으며 아래와 같다.
1차원 구조
pd.Series([1,3,5,np.nan, 78])
2차원 구조
pd.DataFrame(
data=np.arange(1, 49).reshape(12, 4),
index=np.arange(12),
columns=[“X1”,”X2”,”X3”,”X4”]
)
data= 구조를 만드는데 사용할 데이터 2차원구조 필요
index= 구조를 만드는데 사용할 인덱스명
data= 구조를 만드는데 사용할 컬럼명
pandas의 내부 구조는 numpy array기반으로 생성해서 universal function 같은 numpy array의 기능을 사용할 수 있다.
Fancy indexing
<pd.data>.<columnName> == <pd.data>[<columnName>]
<pd.data>의 해당 컬럼 기반의 시리즈 추출
<pd.data>.index[<num>]
<pd.data>에서 <num>번째 인덱스이름 가져오기
<pd.data>.loc[<indexName>, <columnName>]
<pd.data>의 (<indexName>, <columnName>)에 해당하는 값을 추출(차원 구조로 작성시 해당 차원의 값이 전부 나옴)
<indexName>임이 중요하다 n을 넣으면 n-1이 아님
<pd.data>.iloc[<indexNum>, <columnNum>]
loc과 작동이 같으나 Name이 아닌 Number를 기준으로 한다.
mask
조건식을 적용하면 조건의 만족여부를 확인가능한 mask가 생성되며 해당 마스크로 데이터를 가공할 수 있다.
<pd.data>[<pd.data>기반 조건]
<pd.data>에서 조건에 해당하는 데이터 추출
기본함수
<pd.data>.index
<pd.data>의 인덱스값 추출
<pd.data>.columns
<pd.data>의 컬럼값 추출
<pd.data>.values
<pd.data>의 값 추출
<pd.data>.apply(<func>)
<pd.data>의 값을 <func>을 통해 가공하여 추출
<pd.data>.str.contains(pat=<string>, regex=Bool)
<pd.data>에 <string>이 있는지 확인 regex=True(default)
<pd.data>[<columnName>]
<pd.data>의 해당 컬럼 기반의 시리즈 추출
<pd.data>.head(<num>)
<pd.data>의 인덱스 0에서 <num>(Null: 5)개 추출
<pd.data>.tail(<num>)
<pd.data>의 인덱스 뒤에서 <num>(Null: 5)개 추출
<pd.data>.info()
<pd.data>의 전반적인 정보를 제공
<pd.data>.describe()
<pd.data>의 전반적인 통계치를 제공
<pd.data>.groupby(<columns_name>)
<pd.data>에서 수치데이터를 <columns_name>의 기준으로 분별한다.
pd.to_numeric(<pd.data>, error=<state>)
<pd.data>를 숫자로 변환한다.
error=”ignore”: 숫자가 안되면 원본
error=”coerce”: 숫자가 안되면 NaN
error=”raise”: 숫자가 안되면 에러발생
pd.to_datetime(<pd.data>)
<pd.data>를 시간타입의 값으로 변환한다.
<pd.data>.dt.hour 과같이 원하는 값을 추출할 수 있다.
<pd.data>.sort_values(by=<pd.columnName>, ascending=False)
<pd.data>의 값에서 <pd.columnName>를 기준으로 정렬
ascending = True: 오름차순 False: 내림차순
Datafram 합치기
pd.merge(<pd.data>, <pd.data>, on=”A”, how=”outer”)
how=”outer”, “inner”, “left”, “right”
<pd.data>끼리 join을 이용한 합치기
pd.merge_asof(<pd.data>, <pd.data>, on=”A”, direction=”backword”)
direction=
backword는 left에 매칭하여 빈공간없이 합치기
forword는 left에 매칭하여 빈공간있게 합치기
nearest는 left에 매칭하여 근처값으로 합치기
pd.concat([<pd.data>, <pd.data>], axis=<num>)
<pd.data>들을 <num>차원으로 합치기
<pd.data>.reset_index(drop=Null)
<pd.data>의 인덱스를 재정의
drop= True는 기존 인덱스 삭제 False는 기존 인덱스 남겨둠
pivot table
특정 컬럼을 기준으로 통계량을 측정하여 판다스 테이블화 하는것
pd.pivot_table(data=<pd.data>, index=[<columnName>], values=[<columnName>], aggfunc=[<option>,<option>])
index에 입력한 <columnName>을 인덱스로 하고 values에 입력한 <columnName>이 columns가 되는 테이블을 만듬
aggfunc에 있는 <option>에 해당하는 값으로 column을 만듬 e.x. sum, mean, count 등등…
unpivot
pivot화 된 데이터를 풀어헤치는 행위
stack은 기준이 없을때 melt는 기준이 있을때 용이
(with)stack
stack -> columns to index / unstack -> index to columns
<pd.data>.stack(level=[0,…], dropna=True).reset_index().set_axis([], axis=1)
level은 columns의 최상단부터 0으로 매겨지며 해당하는 columns를 index로 보내고 인덱스를 리셋하여 다시 네이밍을 하는 방법
(with)melt
<pd.data>.melt(id_Vars=None, value_vars=None, var_name=None, value_name=”value”)
id_Vars를 기준으로 데이터를 풀어헤치며 데이터를 value, columns를 variable로 분배한다.
외부 Datafram 불러오기
colab
{% highlight python %}
from google.colab imort drive
drive.mount(‘/content/drive’)
data = pd.read_csv(“/dir/data.csv”)
{% endhighlight %}
window
{% highlight python %}
data = pd.read_csv(“/dir/data.csv”)
{% endhighlight %}
PYTHON
/
Library
· 2023-08-31
-
Numpy
Numpy(Numerical computing with Python)
수치연산과 벡터 연산에 있어서 강한 이점을 가진 라이브러리
np.array
최초 선언 후 사이즈 변경이 불가능
모든 원소의 데이터 타입이 동일해야한다 (homogeneous array)
Mixed Precision
numpy는 아래와 같이 다양한 데이터 타입을 가지고 있다.
np.int[8~64]
np.uint[8~64]
Mixed Precision은 32비트(고용량)에서 메모리가 너무 사용될때 비트수를 내려서 메모리 부담과 속도를 관리하는 방법
np.arange(<num>)
0~-1 의 array 생성
<np.array>.shape
<np.array>의 형태를 확인
<np.array>.reshape(x, y)
<np.array>의 형태를 (x, y)로 변경
(x, ) 1차원 x개원소
(x,1) 2차원 x개원소
(-1, ) 1차원 원소 전부
<np.array> 연산
연산은 벡터 연산으로 실행됨
np.concatenate([<np.array>, <np.array>])
+
-
@(dot product)
하지만 아래의 연산은 원소들 끼리 연산이됨
*
/
또다른 방법으로 연산을 붙이기 연산으로 사용하려면
np.concatenate([<np.array>, <np.array>], axis=<axis>)
해당 차원(<axis>)의 붙이기만 가능
np.vstack([<np.array>, <np.array>])
수직적인 붙이기(axis=1)
np.hstack([<np.array>, <np.array>])
수평적인 붙이기(axis=0)
broadcast
차원이 다른 array의 연산을 할 수있는데 첫번째 차원이라도 원소의 크기가 같아야한다
universal Function
broadcast의 확장적인 의미의 함수
1 / <np.array>는 각각의 원소가 1로 나뉘어진 array가 나옴
numpy indexing
python indexing과 같은 방법을 사용가능하며,
<np.array>[x, y]로 <np.array>[x][y]를 표현 가능하다.
Math Function
np.random.seed(0)
랜덤 생성함수의 시드 고정(테스트 결과 비교할때 좋음)
np.random.rand(<dimen>)
<dimen>에는 차원의 shape을 입력 e.x.(1,3)
0~1로 이루어진 지정 차원의 랜덤 array 생성
np.random.randn(<dimen>)
<dimen>에는 차원의 shape을 입력 e.x.(1,3)
평균 0, 표준편차 1로 이루어진 지정 차원의 랜덤 array 생성
np.abs(<np.array>)
절대값 생성
np.squre(<np.array>)
제곱값 생성
np.sqrt(<np.array>)
루트값 생성
np.abs(<np.array>)
절대값 생성
np.linalg.norm(<np.array>)
<np.array> 제곱합의 루트값 생성 (L2 norm)
np.linalg.eig(<np.array>)
<np.array> eigenvalue(고유값)와 eigenvector(고유 벡터)값을 생성
np.sum(<np.array>, axis=)
<np.array>의 차원에 따른 합
np.mean(<np.array>, axis=)
<np.array>의 차원에 따른 평균
np.std(<np.array>, axis=)
<np.array>의 차원에 따른 표준편차
np.min(<np.array>, axis=)
<np.array>의 차원에 따른 최소값
np.max(<np.array>, axis=)
<np.array>의 차원에 따른 최대값
np.argmin(<np.array>, axis=)
<np.array>의 차원에 따른 최소값의 인덱스
np.argmax(<np.array>, axis=)
<np.array>의 차원에 따른 최대값의 인덱스
np.sort(<np.array>, axis=)
<np.array>의 차원에 따른 정렬(오름차순)
np.sort(<np.array>, axis=)[::-1](내림차순)
np.argsort(<np.array>, axis=)
<np.array>의 차원에 따른 정렬한 값의 인덱스
PYTHON
/
Library
· 2023-08-30
-
Touch background to close