2018년 12월 30일 일요일

PyThon pandas dataframe 을 numpy 로 변환 / torch tensor로 변환


0. pandas dataframe 을 torch tensor로 변환하기

두가지 단계로 이루어집니다.
 dataframe->numpy 배열로 변환->torch tensor
0.1 dataframe->numpy 배열로 변환 : values 이용
0.2 numpy 배열로 변환->torch tensor : torch.from_numpy 이용
아래는 상세 예제입니다.

1. Convert pandas dataframe to numpy array (DataFrame을 numpy 배열로 변환)


as_matrix와 values 두개를 지원하고 있는데 as_matrix는 사라질 예정이라고 합니다. values 사용하면 됩니다.

  • mah_np_array = df.as_matrix(columns=None)
  • mah_np_array = df.values

train.tsv
0 1 지역 3 4
NaN 0.3160718715457761 광주 0.618074061962662 부산
0.4779143261004096 0.7640950473377978 인천 0.7554662967547567 인천
0.46356805076582885 0.5837447431729355 대전 0.793675978965779 광주
0.5695109222857196 0.05089301078346342 인천 0.9556152127770076 부산
0.04493729261707624 0.14316706161067427 경기 0.3853064558624778 울산
0.4211392967613088 0.4223696769241083 울산 0.5668579921124862 광주
0.6968309725237914 0.9771633054896907 서울 0.8357267917293922 경기
0.11353740126056755 0.7601654905557846 대전 0.743158407293178 부산
0.22370034270270966 0.3115915771469119 대전 0.11848968372403645 부산
0.137646137601257 0.600286886461799 광주 0.7007352606121582 강원
0.031428666050948184 0.39108944068098905 대전 0.8733145643417124 강원
0.9964849451141898 0.1515641318053479 인천 0.5335673749065628 인천
0.22542471556473298 0.8561772376533481 서울 0.9362096685200896 울산
0.4686621433360696 0.17537990374522128 대구 0.3499523151304561 울산
0.046060811241397714 0.8299155100569963 경기 0.21535901604117658 경기
0.1899909553960777 0.21936448957471155 인천 0.6575452140509177 NaN
0.41758513381425333 0.42277109702047366 서울 0.8529515809615816 부산
0.3197992908993763 NaN 강원 0.4037015504523124 대구
0.0562629654450455 0.551939153390536 인천 0.9260164254116474 세종
0.587953265713976 0.6413981811587487 대구 0.023584307830762707 대전

numpy 변경 소스
import pandas as pd
import torch

dataset = pd.read_csv("train.tsv", delimiter='\t', header=0)
dataset = pd.get_dummies(dataset)

selected = dataset[['1','3']]
print(selected.values)
소스 설명
selected = dataset[['1','3']] 컬럼이 '1','3' 인 항목만 선택해서 해당 항목만 numpy로 변경합니다.

결과
[[0.31607187 0.61807406]
 [0.76409505 0.7554663 ]
 [0.58374474 0.79367598]
 [0.05089301 0.95561521]
 [0.14316706 0.38530646]
 [0.42236968 0.56685799]
 [0.97716331 0.83572679]
 [0.76016549 0.74315841]
 [0.31159158 0.11848968]
 [0.60028689 0.70073526]
 [0.39108944 0.87331456]
 [0.15156413 0.53356737]
 [0.85617724 0.93620967]
 [0.1753799  0.34995232]
 [0.82991551 0.21535902]
 [0.21936449 0.65754521]
 [0.4227711  0.85295158]
 [0.13481439 0.40370155]
 [0.55193915 0.92601643]
 [0.64139818 0.02358431]]

2. numpy array to Torch tensor (numpy 를 Torch tensor로 변환)


소스
import pandas as pd
import torch

dataset = pd.read_csv("train.tsv", delimiter='\t', header=0)
dataset = pd.get_dummies(dataset)

selected = dataset[['1','3']]

torch_tensor = torch.from_numpy(selected.values)
print(torch_tensor)

결과
tensor([[ 0.3161,  0.6181],
        [ 0.7641,  0.7555],
        [ 0.5837,  0.7937],
        [ 0.0509,  0.9556],
        [ 0.1432,  0.3853],
        [ 0.4224,  0.5669],
        [ 0.9772,  0.8357],
        [ 0.7602,  0.7432],
        [ 0.3116,  0.1185],
        [ 0.6003,  0.7007],
        [ 0.3911,  0.8733],
        [ 0.1516,  0.5336],
        [ 0.8562,  0.9362],
        [ 0.1754,  0.3500],
        [ 0.8299,  0.2154],
        [ 0.2194,  0.6575],
        [ 0.4228,  0.8530],
        [ 0.1348,  0.4037],
        [ 0.5519,  0.9260],
        [ 0.6414,  0.0236]], dtype=torch.float64)


dataframe에 유용한 함수

print(df.info(verbose=True))




댓글 없음:

댓글 쓰기