본문 바로가기
반응형

분류 전체보기464

[파이썬 tkinter GUI 만들기] #6. 버튼 눌러서 값 입력받기 최종 목표는 아래 프로그램입니다. 오늘은 빨간 버튼을 만들고 우리가 입력한 값을 우측 입력결과에 나오게할 것입니다. 지난시간까지 만든 코드는 아래와 같습니다. import tkinter as tk #윈도우 생성 root=tk.Tk() #전체 이름 root.title('코로나 진단키트 에측도 진단 프로그램') #창 크기 +붙은 부분은 좌상단 떨어진 위치 root.geometry("600x500+100+100") #1행 라벨 추가 lab11=tk.Label(root, text="민감도", width=8, height=1, font=('맑은 고딕',16,'bold'), bg='#2F5597', fg='white') lab11.grid(row=0,column=0,padx=5,pady=10) ent12=tk.En.. 2022. 2. 1.
[파이썬 tkinter GUI 만들기] #5. 입력 창 만들기 최종 목표는 아래 프로그램입니다. 지난 시간에 민감도 라벨까지 만들었습니다. 오늘은 민감도 라벨 바로 오른쪽에 있는 입력창을 만들어봅시다. 일단 지난시간까지 만든 코드는 아래와 같습니다. import tkinter as tk #윈도우 생성 root=tk.Tk() #전체 이름 root.title('코로나 진단키트 에측도 진단 프로그램') #창 크기 +붙은 부분은 좌상단 떨어진 위치 root.geometry("600x500+100+100") #1행 라벨 추가 lab11=tk.Label(root, text="민감도", width=8, height=1, font=('맑은 고딕',16,'bold'), bg='#2F5597', fg='white') lab11.grid(row=0,column=0,padx=5,pady.. 2022. 1. 31.
[파이썬 tkinter GUI 만들기] #4. 라벨 하나 추가해보기 최종 목표는 아래 프로그램입니다. 첫 줄(row) 부터 만들어봅시다. 오늘은 '민감도'라는 라벨하나 추가할겁니다. tk.Label 이라는 함수를 사용합니다. 형식은 아래와 같습니다. 변수 이름인 lab11 은 1행1열에 있는 라벨이라는 의미로 지었습니다. lab11=tk.Label(root) root 라는 윈도우에 라벨을 추가했습니다. 이제 내용을 추가해주어야 합니다. 필요한 것을 추려보면 아래와 같습니다. - 라벨 이름 (text) - 라벨 크기 (height, width) - 라벨 폰트 종류와 크기 (font) - 라벨 배경색 (bg) - 라벨 글자색 (fg) 요정도면 될 것 같네요. 추가하면 아래와 같습니다. lab11=tk.Label(root, text="민감도", width=8, height=2.. 2022. 1. 31.
[파이썬 tkinter GUI 만들기] #3. 화면 만들고 이름,사이즈 설정 tkinter 패키지를 이용해서 윈도우창을 하나 만들어봅시다. tkinter 는 파이썬 내장패키지라 따로 설치할 필요는 없습니다. 아래와 같이 tkinter 를 불러옵니다. 참고로 저는 Visual Studio Code 라는 IDE 를 사용하고 있습니다. import tkinter as tk tk.Tk() 클래스를 이용하면 윈도우 창을 띄울 수 있는데요. 마치 리스트를 하나 입력하는 것과 같습니다. 리스트도 [1,2,3] 이렇게만 입력하고, 변수에 지정을 하지 않으면 추가적인 옵션설정이라던가 수정이 불가합니다. 윈도우 창을 우리가 원하는 대로 수정해주기 위해 tk.Tk() 를 변수에 입력해주겠습니다. #윈도우 생성 root=tk.Tk() 실행하면 아래와 같이 윈도우가 생성됩니다. 이름을 바꾸고 싶고, 크.. 2022. 1. 31.
[파이썬 tkinter GUI 만들기] #2. 레이아웃 짜기 오늘은 프로그램 레이아웃을 짜볼건데요. 아래 수식을 봅시다. $PPV=\frac{(Prevalence Rate)(Sensitivity)}{(Sensitivity)+(1-Specificity)}$ $NPV=\frac{(1-Prevalence Rate)(Specificity)}{(1-Sensitivity)+(Specificity)}$ 입력값은 민감도, 특이도, 발생률입니다. 출력값은 양성예측도, 음성예측도입니다. 아래와 같이 레이아웃을 짜봤습니다. 입력해야 하는 부분에는 흰색으로, 버튼을 클릭해야하는 부분은 빨간색으로 했습니다. 2022. 1. 31.
[파이썬 tkinter GUI 만들기] #1. 코로나 진단키트 예측도 계산 프로그램 아래와 같은 프로그램을 만들어보려고 합니다. 진단키트의 민감도, 특이도, 질병발생률을 입력하면 음성예측도와 양성예측도를 알려주는 프로그램입니다. 언어는 파이썬을 이용하겠습니다. 몇가지 사전지식이 필요하다. 아래 용어들을 알아야 한다. 민감도(Sensitivity, SE) : 병에 걸린 사람이 양성이 나올 확률 (참양성) 특이도(Specificity, SP) : 병에 걸리지 않은 사람이 음성이 나올 확률 (참음성) 양성예측도(Positive Predictive Value, PPV) : 양성이 나왔을 때 병에 걸려있을 확률 음성예측도(Negative Predictive Value, NPV) : 음성이 나왔을 때 병에 걸리지 않았을 확률 유병률(Prevalence Rate) : 병의 발생 확률 수식으로 유도하.. 2022. 1. 30.
[R강의] 129. 분할표 만들기 (빈도, 비율) 남자 100명과 여자 100명을 임의로 선정하여 기름종이 사용여부를 조사하고 분할표로 만드는 예시입니다. 먼저 데이터를 생성합시다. rbinom 함수를 이용하여 이항분포에서 임의로 추출했습니다. 남자는 기름종이 사용확률을 30%로, 여자는 70%로 놓았습니다. rbinom(number,size,probability) 인데 size에 1을 입력하면 0과 1 둘중 하나가 추출됩니다. #1.데이터 생성 set.seed(9999) male=rbinom(100,1,0.3) female=rbinom(100,1,0.7) 추출 결과는 아래와 같습니다. > male [1] 1 0 1 0 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 0 [28] 0 0 0 0 0 0 0 1 0 0 1 1 .. 2021. 12. 31.
[R강의] 128. 엑셀 데이터 불러와서 통계량,그래프,t검정 하기 (템플릿) 오늘 배워볼 내용의 요약은 아래와 같습니다. 좌측과 같은 엑셀 데이터를 R에서 불러와서, 우측 위의 그림과 같은 그래프를 그릴 것입니다. 우측 아래와 같이 요약 통계량과 t검정 결과가 요약된 표도 출력할 것입니다. 먼저 R에서 엑셀 데이터를 불러오겠습니다. 메뉴탭에서 [File]-[Import Dataset]-[From Excel] 을 클릭합니다. Browse 를 누르고 엑셀 데이터를 찾아서 열어줍니다. 데이터가 있는 Sheet를 선택한 뒤 우측 'Code Preview' 의 코드를 복사합니다. Cancel을 눌러서 끄고 스크립트 창에 붙여넣어줍니다. View 코드는 지우고, 변수 이름이 길기 때문에 짧게 dt 로 바꿔줍니다. library(readxl) dt dt # A tibble: 60 x 3 반 .. 2021. 12. 30.
[R강의] 127. 평균±표준편차(최솟값,최댓값) 출력하는 함수 만들기 논문에 데이터를 정리한 표들을 보면 아래와 같은 형태가 많이 등장합니다. 평균±표준편차(최솟값,최댓값) 데이터를 이용하여 위 값들을 구하려면 함수를 네번 사용해야합니다. 매번 코딩하기 귀찮아서 함수를 만들었습니다. 아예 위와 같은 형태로 정리되서 출력되도록 만든 함수입니다. 함수를 만드는 과정을 설명하겠습니다. 함수 이름은 MSMM 이라고 놓겠습니다. Mean,Standard deviation, Min, Max 의 줄임말입니다. 입력값은 데이터입니다. 벡터 형태로 입력받습니다. MSMM=function(my_data) { } 평균,표준편차,최솟값,최댓값을 구해줍니다. 결측치가 있을 수도 있으니 na.rm=TRUE 라는 옵션을 설정합니다. 결측치가 있을 경우 제거하라는 옵션입니다. MSMM=function.. 2021. 12. 29.
R 하트모양 그래프 $r=a(1-cos(t))$를 그리면 하트모양이 됩니다. t=seq(0,2*pi,0.01) a=10 r=a*(1-cos(t)) x=r*cos(t) y=r*sin(t) plot(x,y) 옆으로 돌리려면 코사인 대신 사인을 입력하면 됩니다. 90도 회전하기 t=seq(0,2*pi,0.01) a=10 r=a*(1-sin(t)) x=r*cos(t) y=r*sin(t) plot(x,y) 2021. 12. 7.
[파이썬 강의] 96. 판다스 시리즈의 평균,표준편차,최댓값,최솟값 리즈를 하나 정의합시다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5]) >>> s1 0 1 1 2 2 3 3 4 4 5 dtype: int64 평균,표준편차,최댓값,최솟값을 구해봅시다. 코드 평균 >>> s1.mean() 3.0 표준편차 >>> s1.std() 1.5811388300841898 최댓값 >>> s1.max() 5 최솟값 >>> s1.min() 1 2021. 11. 30.
[파이썬 강의] 95. 넘파이 배열(array)로 판다스 시리즈(Series)정의하기 numpy와 pandas 패키지를 불러옵니다. >>> import numpy as np >>> import pandas as pd numpy 배열을 하나 정의합시다. >>> ar=np.array([1,2,3]) >>> ar array([1, 2, 3]) 배열을 이용하여 시리즈를 생성합시다. >>> s1=pd.Series(ar) >>> s1 0 1 1 2 2 3 dtype: int32 2021. 11. 29.
[파이썬 강의] 94. 시리즈(Series) 사이의 사칙연산 시리즈를 두개 정의해봅시다. 행과 열의 이름은 지정하지 않겠습니다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5]) >>> s1 0 1 1 2 2 3 3 4 4 5 dtype: int64 >>> s2=pd.Series([10,20,30,40,50]) >>> s2 0 10 1 20 2 30 3 40 4 50 dtype: int64 두 시리즈를 더해봅시다. >>> s1+s2 0 11 1 22 2 33 3 44 4 55 dtype: int64 두 시리즈를 빼봅시다. >>> s1-s2 0 -9 1 -18 2 -27 3 -36 4 -45 dtype: int64 두 시리즈를 곱해봅시다. >>> s1*s2 0 10 1 40 2 90 3 160 4 250 dtype: i.. 2021. 11. 26.
[파이썬 강의] 93. 시리즈(Series)와 숫자의 사칙연산 시리즈를 하나 정의해봅시다. 행과 열의 이름은 지정하지 않겠습니다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5]) >>> s1 0 1 1 2 2 3 3 4 4 5 dtype: int64 숫자를 더해봅시다. >>> s1+5 0 6 1 7 2 8 3 9 4 10 dtype: int64 숫자를 빼봅시다. >>> s1-5 0 -4 1 -3 2 -2 3 -1 4 0 dtype: int64 숫자를 곱해봅시다. >>> s1*5 0 5 1 10 2 15 3 20 4 25 dtype: int64 숫자를 나눠봅시다. >>> s1/5 0 0.2 1 0.4 2 0.6 3 0.8 4 1.0 dtype: float64 각 행별로 연산이 적용됩니다. 2021. 11. 25.
[엑셀 통계] 64. 문자를 색으로 구분하기 아래와 같은 자료에서 사람 이름을 색으로 구분하고 싶은 상황입니다. 먼저 어떤 사람이 있는지 unique 함수로 확인합니다. 색을 변경할 셀을 선택한 뒤, [홈]-[조건부 서식]-[셀 강조 규칙]-[텍스트 포함] 으로 들어갑니다. 이름을 입력하고, 색을 선택해주면 됩니다. 2021. 11. 25.
[엑셀 통계] 63. 문자 중복 제거하기, 문자 종류별로 추리기 (unique함수) 아래 데이터에서 어떤 사람이 들어있는지 알고 싶은 상황입니다. 이런 경우 사용하는 함수가 unique 함수입니다. 아래와 같이 사용합니다. 2021. 11. 25.
[파이썬 강의] 92. 시리즈(Series)의 행 삭제 시리즈를 하나 정의해봅시다. 데이터, 행이름(index), 열이름(name) 순서로 입력합니다. 데이터는 리스트 형태로 입력해줍니다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5],index=['A','B','C','D','E'],name='my data') >>> s1 A 1 B 2 C 3 D 4 E 5 Name: my data, dtype: int643 원소를 삭제할 때는 del명령어 또는 drop 메소드를 사용합니다. del 명령어 이용 A행을 삭제해봅시다. >>> del s1['A'] >>> s1 B 2 C 3 D 4 E 5 Name: my data, dtype: int64 drop 메소드 이용 D행을 삭제해봅시다. >>> s1.drop('D') B.. 2021. 11. 24.
[파이썬 강의] 91. 시리즈(Series)의 원소 수정 시리즈를 하나 정의해봅시다. 데이터, 행이름(index), 열이름(name) 순서로 입력합니다. 데이터는 리스트 형태로 입력해줍니다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5],index=['A','B','C','D','E'],name='my data') >>> s1 A 1 B 2 C 3 D 4 E 5 Name: my data, dtype: int643 1) 행이름을 이용한 수정 >>> s1['A']=10 >>> s1 A 10 B 2 C 3 D 4 E 5 Name: my data, dtype: int64 2) 인덱스를 이용한 수정 >>> s1[0]=100 >>> s1 A 100 B 2 C 3 D 4 E 5 Name: my data, dtype: int64 2021. 11. 23.
[파이썬 강의] 90. 시리즈(Series)의 행 이름 수정 시리즈를 하나 정의해봅시다. 데이터, 행이름(index), 열이름(name) 순서로 입력합니다. 데이터는 리스트 형태로 입력해줍니다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5],index=['A','B','C','D','E'],name='my data') >>> s1 A 1 B 2 C 3 D 4 E 5 Name: my data, dtype: int643 행 이름 하나를 수정하려고 시도해봅시다. >>> s1.index[0]='AA' Traceback (most recent call last): File "", line 1, in s1.index[0]='AA' File "C:\Users\Jihun\AppData\Local\Programs\Python\Pyt.. 2021. 11. 22.
[파이썬 강의] 89. 시리즈(Series)의 행 순서 변경 시리즈를 하나 정의해봅시다. 데이터, 행이름(index), 열이름(name) 순서로 입력합니다. 데이터는 리스트 형태로 입력해줍니다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5],index=['A','B','C','D','E'],name='my data') >>> s1 A 1 B 2 C 3 D 4 E 5 Name: my data, dtype: int643 행의 순서를 바꾸는 방법을 알아봅시다. 행의 순서를 B A E D C 로 바꾸고 싶다면 아래와 같이 입력하면 됩니다. >>> s1=s1[['B','A','E','D','C']] >>> s1 B 2 A 1 E 5 D 4 C 3 Name: my data, dtype: int64 숫자 인덱싱을 이용하여 바꿀 .. 2021. 11. 19.
[파이썬 강의] 88. 시리즈(Series)의 행이름의 인덱싱과 슬라이싱 시리즈를 하나 정의해봅시다. 데이터, 행이름(index), 열이름(name) 순서로 입력합니다. 데이터는 리스트 형태로 입력해줍니다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5],index=['A','B','C','D','E'],name='my data') >>> s1 A 1 B 2 C 3 D 4 E 5 Name: my data, dtype: int643 행이름에 접근해봅시다. index 메소드를 사용합니다. >>> s1.index Index(['A', 'B', 'C', 'D', 'E'], dtype='object') 위 결과에서 다시 인덱싱과 슬라이싱이 가능합니다. 행이름 중 'B'에 접근해봅시다. >>> s1.index[1] 'B' 슬라이싱을 이용하여.. 2021. 11. 18.
[파이썬 강의] 87.시리즈(Series)의 인덱싱과 슬라이싱 시리즈를 하나 정의해봅시다. 데이터, 행이름(index), 열이름(name) 순서로 입력합니다. 데이터는 리스트 형태로 입력해줍니다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5],index=['A','B','C','D','E'],name='my data') >>> s1 A 1 B 2 C 3 D 4 E 5 Name: my data, dtype: int643 인덱싱을 해봅시다. 원리는 리스트나 배열같은 자료구조와 동일합니다. 첫번째 원소에 접근해봅시다. >>> s1[0] 1 세번째 원소에 접근해봅시다. >>> s1[2] 3 첫번째와 세번째 원소에 접근해봅시다. >>> s1[[0,2]] A 1 C 3 Name: my data, dtype: int64 슬라이싱을.. 2021. 11. 17.
[파이썬 강의] 86.시리즈(Series)에서 행이름을 이용하여 데이터에 접근 시리즈를 하나 정의해봅시다. 데이터, 행이름(index), 열이름(name) 순서로 입력합니다. 데이터는 리스트 형태로 입력해줍니다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5],index=['A','B','C','D','E'],name='my data') >>> s1 A 1 B 2 C 3 D 4 E 5 Name: my data, dtype: int643 행이름을 이용하여 데이터에 접근해봅시다. A행의 원소에 접근하는 방법은 아래와 같습니다. >>> s1['A'] 1 여러행에 동시에 접근할 수도 있습니다. A행과 C행에 접근해봅시다. >>> s1[['A','C']] A 1 C 3 Name: my data, dtype: int64 슬라이싱도 가능합니다. >.. 2021. 11. 16.
[파이썬 강의] 85.시리즈(Series)에서 데이터,행이름,열이름에 접근하기 시리즈를 하나 정의해봅시다. 데이터, 행이름(index), 열이름(name) 순서로 입력합니다. 데이터는 리스트 형태로 입력해줍니다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5],index=['A','B','C','D','E'],name='my data') >>> s1 A 1 B 2 C 3 D 4 E 5 Name: my data, dtype: int64 메소드를 이용하여 데이터, 행이름, 열이름에 접근할 수 있습니다. 1) 데이터에 접근 (values 메소드) >>> s1.values array([1, 2, 3, 4, 5], dtype=int64) 2) 행이름에 접근 >>> s1.index Index(['A', 'B', 'C', 'D', 'E'], dty.. 2021. 11. 15.
[파이썬 강의] 84.판다스 시리즈 정의해보기 지난시간에 판다스를 설치했습니다. 판다스 패키지는 아래 두가지 자료구조를 제공합니다. - Series - DataFrame 오늘은 시리즈 자료구조를 배워봅시다. 시리즈는 아래와 같이 엑셀의 한 열이라고 생각하시면 됩니다. 엑셀과 완전히 같지는 않고 차이가 있습니다. 엑셀에서는 열의이름이 A,B,C,D...로 행의 이름이 1,2,3,...으로 정해져 있지만 시리즈에서는 열과 행의 이름을 설정할 수 있습니다. 시리즈를 하나 정의해봅시다. 데이터, 행이름(index), 열이름(name) 순서로 입력합니다. 데이터는 리스트 형태로 입력해줍니다. >>> import pandas as pd >>> s1=pd.Series([1,2,3,4,5],index=['A','B','C','D','E'],name='my data.. 2021. 11. 12.
[파이썬 강의] 83.판다스 소개 및 설치 우리는 아래의 자료구조들을 배우기로 계획했었습니다. - 리스트 - 튜플 - 딕셔너리 - 집합 - Array (넘파이 패키지) - Series (판다스 패키지) - DataFrame (판다스 패키지) Array 까지 배운 상태이구요. 두개의 자료구조가 남아있습니다. 시리즈와 데이터프레임인데요. 둘다 판다스라는 패키지에서 제공하는 자료구조입니다. 시리즈는 엑셀의 한 열, 데이터프레임은 엑셀시트와 비슷합니다. 엑셀을 사용해 보신 분들은 아시겠지만 다양한 데이터를 다루는데 매우 편리합니다. 시리즈와 데이터프레임 역시 데이터를 편하게 다루기 위해 만들어진 자료구조들입니다. 이제 판다스를 설치해봅시다. 커멘드 창을 열고 아래 명령어를 입력하면 됩니다. pip install pandas 설치가 끝나면 파이썬을 열고 .. 2021. 11. 12.
[파이썬 강의] 82. 지금까지 배운 내용과 앞으로 배울 내용 1. 배운 내용 자료형 - 숫자형 - 문자열 - 논리형 자료구조 - 리스트 - 튜플 - 딕셔너리 - 집합 - Array (넘파이 패키지) 연산자 - 산술연산자 - 비교연산자 - 논리연산자 2. 앞으로 배울 내용 자료구조 - Series (판다스 패키지) - DataFrame (판다스 패키지) 연산자 - 식별연산자 할당과 복사 - 얕은복사, 깊은복사 조건문 - if - if else - if elif else 반복문 - for - while - pass, greak continue 함수 모듈 클래스 그래프 통계분석 앞으로 배울 내용은 추가될 수 있습니다. 2021. 11. 9.
[파이썬 강의] 81. 표본추출 (이항분포) 커이제곱분포에서 표본을 추출해봅시다. 아래와 같은 형식으로 입력합니다. np.random.binomial(n,p,원소 수) np.random.binomial(n,p, [shape]) 예를 들어봅시다. 시행횟수가 20회이고, 발생확률이 0.2인 이항분포에서 원소가 10개인 표본을 추출해봅시다. >>> import numpy as np >>> np.random.binomial(20,0.2,10) array([3, 1, 7, 6, 6, 2, 4, 4, 3, 7]) 같은 분포에서 2행5열의 표본을 추출해봅시다. >>> np.random.binomial(20,0.2,[2,5]) array([[5, 4, 8, 5, 5], [2, 4, 3, 4, 6]]) 2021. 11. 8.
[파이썬 강의] 80. 표본추출 (카이제곱분포) 커이제곱분포에서 표본을 추출해봅시다. 아래와 같은 형식으로 입력합니다. np.random.chisquare(자유도, 원소 수) np.random.chisquare(자유도, [shape]) 예를 들어봅시다. 자유도가 30인 카이제곱분포에서 원소가 10개인 표본을 추출해봅시다. >>> import numpy as np >>> np.random.chisquare(30,10) array([20.27882107, 14.31861792, 27.2574334 , 29.40865448, 26.5177963 , 32.26811378, 26.58053564, 40.92194971, 30.55410323, 38.39466493]) 자유도가 30인 t분포에서 2행5열의 표본을 추출해봅시다. 위 결과와 얼핏 같아 보이지만 아닙.. 2021. 11. 5.
[파이썬 강의] 79. 표본추출 (t분포) t분포에서 표본을 추출해봅시다. 아래와 같은 형식으로 입력합니다. np.random.standard_t(자유도, 원소 수) np.random.standard_t(자유도, [shape]) 예를 들어봅시다. 자유도가 30인 t분포에서 원소가 10개인 표본을 추출해봅시다. >>> import numpy as np >>> np.random.standard_t(30,10) array([ 0.85819086, -0.22148067, -0.28937547, 1.05713019, 0.85156911, 0.42696392, -0.0969401 , -3.25730258, -0.91213918, 1.42497941]), 0.37697573, 1.55891432, 0.56331007, 0.93739202]) 자유도가 30인 .. 2021. 11. 4.
반응형