반응형
데이터 중에서 x에 y는 1개, x에 y는 2개 이런 식으로, x와 y값이 정해져 있을 때, 값은 무엇이라고 구성된 데이터들을 하나의 대비 표로 해서 출력하려고 한다. 예를 들어, 온도가 x도이고, 습도가 y%일 때, 불쾌지수는 10이다. 라는 것을 하나의 표로 나타내려고 한다. 아래의 데이터처럼 x가 135이고, y가 1300일 때, 결과는 3이다라는 것을 135부터 145까지 행 인덱스로 두고, 1200부터 1500까지 컬럼으로 두어 행과 열에 맞는 셀에 각 2와 3을 넣으려고 한다.
0. 데이터 구조
데이터 구조는 TR 컬럼의 데이터를 행 인덱스로 둘 것이고, INCH 컬럼의 데이터를 컬럼 인덱스로 둔 다음에, EA 컬럼의 데이터를 데이터 프레임 내에 데이터로 넣을 것이다.
1. 라이브러리 import
#라이브러리 import
import pandas as pd
2. csv 불러오기
# csv 가져오기
origin_data = pd.read_csv('./testdata.csv')
3. TR이라는 데이터의 중복값 제거 후 리스트로 캐스팅하여 오름차순 정렬하기
index = sorted(list(set(origin_data['TR'])))
4. TR 데이터에 인덱스를 부여하여 데이터 프레임 셀값 변경을 위해 딕셔너리 생성
index_dict = {}
j = 0
for i in index :
index_dict[i] = j
j += 1
5. INCH라는 컬럼 데이터의 중복값 제거 후 리스트로 캐스팅하여 오름차순 정렬하기
columns = sorted(list(set(origin_data['INCH'])))
6. 데이터 프레임 생성(인덱스 = TR, 컬럼 = INCH)
df_origin_data = pd.DataFrame(index = index, columns = columns)
7. 데이터프레임 내에 NaN은 0으로 변경
df_origin_data = df_origin_data.fillna(0)
8. 기존 origin_data 값의 인덱스를 가져와서 df.at 함수를 사용하여 해당 TR값과 INCH에 맞는 값의 셀값을 EA로 변경하기
for i in range(len(origin_data)) :
df_origin_data.at[origin_data.loc[i].TR, origin_data.loc[i].INCH] = origin_data.loc[i].EA
9. 결과를 엑셀로 출력하기
df_origin_data.to_excel('result.xlsx')
반응형
최근댓글