본문 바로가기
프로그래밍/코드정리

005. 사용한 코드 정리_기초통계 및 막대 그래프 코드 정리(2)

by life_is_egg 2021. 8. 21.
반응형

 

1. 범주형 데이터 frequency table(빈도표) 그리기

해당 내용은 이전 글에 정리해두었다.

https://egg-is-life.tistory.com/12

 

004. 사용한 코드 정리_기초통계 및 막대 그래프 코드 정리(1)

 목차 1. 데이터 불러오기 및 열 이름 변경 2. 데이터 공란 채우기(NaN) 3. 데이터 frequency table(빈도표) 작성 1. 데이터 불러오기 및 열 이름 변경 문항 번호로 적혀 있던 열 이름을 어떤 항목인지 알

egg-is-life.tistory.com

final.stb.freq(['medicine_care'])

 

2. 데이터 전처리_데이터프레임 여러 개 합쳐서 엑셀로 불러내기

 

- 데이터 형태 변경(숫자형->문자형, 문자형->숫자형 등)

-조건에 해당하는 값 삭제하기

- 기존 데이터 값을 다른 값으로 바꾸기

- 데이터셋 이름 규칙적으로 지정하기

- 반복문을 통해 데이터프레임 합쳐서 엑셀로 출력

 

각각에 해당하는 코드는 주석달아서 메모했다.


 

variable = ['medicine_care', 'medicine_help', 'medicine_conv', 'medicine_func', 'nutrition_care', 'nutrition_help', 'nutrition_conv', 'nutrition_func', 'exercise_care', 'exercise_help', 'exercise_conv', 'exercise_func', 'kiosk_care', 'kiosk_help', 'kiosk_conv', 'kiosk_func', 'safety_relax', 'safety_help']

data = {'test' :[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]}

result = pd.DataFrame(data, index=[1, 2, 3, 4, 5, 1, 2, 3, 4, 5])

 

#데이터 형태 변경(숫자형을 문자형으로 바꾸기 또는 문자형을 숫자형으로 바꾸기)

for m in variable:

    final[m] = final[m].astype(int  #숫자형(int)으로 변경

    final[m] = final[m].astype(str)   #문자형(string)으로 변경

 

test1 = final['que'== 1

final1 = final[test1]

 

test2 = final['que'== 2

final2 = final[test2]

 

for k in variable:

    #조건에 해당하는 값 삭제하기

    idx_zero = final1[final1[k] == '0'].index  #'k'의 값이 0이면 'idx_zero'에 저장해서

    final1 = final1.drop(idx_zero)    #해당 데이터에서 지운다.

 

     #기존 데이터 값을 다른 값으로 바꾸기

     #<데이터명.loc(조건, 열 이름)=원하는 값>을 사용하면 값이 변경된다.

    final1.loc[(final1[k] == '1'), k] = '전혀아니다'

    final1.loc[(final1[k] == '2'), k] = '아니다'

    final1.loc[(final1[k] == '3'), k] = '보통이다'

    final1.loc[(final1[k] == '4'), k] = '그렇다'

    final1.loc[(final1[k] == '5'), k] = '매우그렇다'

 

    idx_zero = final2[final2[k] == '0'].index

    final2 = final2.drop(idx_zero)

    final2.loc[(final2[k] == '1'), k] = '전혀아니다'

    final2.loc[(final2[k] == '2'), k] = '아니다'

    final2.loc[(final2[k] == '3'), k] = '보통이다'

    final2.loc[(final2[k] == '4'), k] = '그렇다'

    final2.loc[(final2[k] == '5'), k] = '매우그렇다'

 

for i in variable:

    b = final1.stb.freq([i])  #빈도표 그리기

    b['que'= "1차"

    c = final2.stb.freq([i])

    c['que'= "2차"

    d = pd.concat([b,c])  #데이터 합치기

 

     #데이터셋 이름 규칙적으로 지정하기

     #반복문을 사용하여 나온 결과를 새로운 데이터셋으로 만들고 이름을 지정하고자 할 때,

     #규칙적으로 데이터셋 이름을 지정하고 싶을 때가 있다.

     #하나하나 데이터셋 이름을 지정하기 귀찮기 때문에, 아래 코드를 사용하면 데이터셋의 인덱스 값을 사용하여 이름을 간단하게 바꿀 수 있다.

    globals()['result_{}'.format(variable.index(i))] = d    #값 예시: result_1_ result_2, result_3, ...

 

     #반복문을 통해 데이터프레임 합쳐서 엑셀로 출력

    result = pd.concat([result.reset_index(drop=True), d.reset_index(drop=True)], axis=1)

    print(d.head())

result.to_excel(excel_writer='result.xlsx')

 

 

- 막대 그래프 그리는 코드는 다음 글에서 이어집니다.

- Visual Studio Code에서 작성된 글입니다.

반응형

댓글