본문 바로가기
반응형

5-3. Pandas 제공 자료구조/DataFrame31

[파이썬 판다스] 데이터프레임 열 이름 출력하는 법 데이터 프레임 이름을 df 라고 한다면, df.columns 를 입력하면 모든 열 이름이 출력됩니다. df.columns 인덱싱도 가능합니다. #첫번째 열 제목에 접근 df.columns[0] 2022. 11. 18.
[파이썬 판다스] 데이터프레임에서 범주형 자료를 수치형으로 바꾸는 방법 데이터프레임으로 범주형 자료를 하나 정의합시다. 여섯 사람의 이름과 각 사람이 사용하는 핸드폰 기종입니다. import numpy as np df = pd.DataFrame({'NAME': ['KSM','LHN','SHN','NKA','POS','YWS'], 'Phone': ['삼성', 'LG', 'LG', '삼성', '애플', '애플']}) >>> df NAME Phone 0 KSM 삼성 1 LHN LG 2 SHN LG 3 NKA 삼성 4 POS 애플 5 YWS 애플 수치형 자료로 바꿀 때는 get_dummy 함수를 사용합니다. 열을 어느 변수를 기준으로 분류할지 결정하기 위해 columns 옵션을 사용합니다. >>> pd.get_dummies(df,columns=['Phone']) NAME Phone.. 2022. 2. 11.
[파이썬 판다스] 데이터프레임에서 임의로 원하는 개수의 행 뽑기 (중복여부 결정) 데이터프레임을 하나 만들어줍니다. import pandas as pd import numpy as np >>> md = pd.DataFrame(np.arange(5 * 5).reshape((5, 5))) >>> md 0 1 2 3 4 0 0 1 2 3 4 1 5 6 7 8 9 2 10 11 12 13 14 3 15 16 17 18 19 4 20 21 22 23 24 행 두개를 임의로 뽑아보겠습니다. sample 메소드를 사용합니다. >>> md.sample(n=2) 0 1 2 3 4 1 5 6 7 8 9 3 15 16 17 18 19 중복을 허용할 경우 replace=True 옵션을 입력하면 됩니다. >>> md.sample(n=3,replace=True) 0 1 2 3 4 3 15 16 17 18 19.. 2022. 2. 9.
[파이썬 판다스] 데이터프레임 특정 조건을 만족하는지 확인하기(any, all) 먼저 데이터를 하나 생성합시다. import pandas as pd import numpy as np md = pd.DataFrame(10*np.random.randn(10, 4)) >>> md 0 1 2 3 0 4.538928 -5.226503 10.369977 6.726804 1 10.371321 6.897509 -9.493601 -21.909799 2 10.575935 -2.771346 7.853494 -1.184277 3 3.363696 -0.878508 2.587997 -8.812833 4 9.401511 33.617850 -12.975039 -8.628830 5 8.581020 18.303396 0.752900 8.202389 6 -0.521181 2.607637 5.511367 21.1723.. 2022. 2. 8.
[파이썬 판다스] 값을 구간별로 나누기 (연속형데이터를 범주형으로) 점수를 학점으로 바꿔보는 예제입니다. 변환 기준은 아래와 같습니다. #학점 기준 #[0~70) : D #[70~80) : C #[80~90) : C #[90~100) : D 먼저 데이터를 생성하겠습니다. 학생의 번호와 점수입니다. #데이터 생성 num=list(range(1,11)) score=[78,62,65,94,71,97,57,83,71,96] md=pd.DataFrame({'num':num,'score':score}) >>> md num score 0 1 78 1 2 62 2 3 65 3 4 94 4 5 71 5 6 97 6 7 57 7 8 83 8 9 71 9 10 96 점수를 학점으로 변환해봅시다. 판다스의 cut 함수를 사용합니다. #점수를 학점으로 변환 md['score2']=pd.cut(.. 2022. 2. 8.
[파이썬 판다스] 데이터프레임에서 매칭된 데이터 추가하기 (map) 판다스를 불러오고 결측치가 포함된 데이터프레임을 만들어줍니다. import pandas as pd df1=pd.DataFrame({'C1':['미국','미국','한국','일본','한국'],'C2':['Javis','John','김','사나','정']}, index=['R1','R2','R3','R4','R5']) >>> df1 C1 C2 R1 미국 Javis R2 미국 John R3 한국 김 R4 일본 사나 R5 한국 정 세번째 열에 국적을 영어로 추가하고 싶습니다. 물론 ['USA','USE','KOREA','JAPAN',KOREA'] 를 직접 정의하여 추가해줄 수도 있지만, 행이 많은 경우는 불편합니다. 편하게 추가하는 방법은 아래와 같습니다. 먼저 매칭을 정의합니다. ENG_NAME={'미국':'U.. 2022. 1. 20.
[파이썬 판다스] 데이터프레임에서 중복 행 확인하고 제거하기 판다스를 불러오고 결측치가 포함된 데이터프레임을 만들어줍니다. import pandas as pd df1=pd.DataFrame({'C1':[1,2,3,3],'C2':[10,20,30,30],'C3':[100,200,300,300]},index=['R1','R2','R3','R3']) >>> df1 C1 C2 C3 R1 1 10 100 R2 2 20 200 R3 3 30 300 R3 3 30 300 3,4행이 겹칩니다. 중복행이 있는지 코드로도 확인해봅시다. duplicate 메소드를 사용합니다. >>> df1.duplicated() R1 False R2 False R3 False R3 True dtype: bool 4행이 겹친다고 말해줍니다. 중복행을 제거해봅시다. drop_duplicates 메소드를.. 2022. 1. 19.
[파이썬 판다스] 데이터프레임 행 개수, 열 개수 판다스를 불러오고 데이터프레임을 하나 정의합시다. import pandas as pd df1=pd.DataFrame({'C1':[1,2,3],'C2':[10,20,30],'C3':[100,200,300]},index=['R1','R2','R3']) >>> df1 C1 C2 C3 R1 1 10 100 R2 2 20 200 R3 3 30 300 행 개수를 출력하는 방법은 아래와 같이 세 가지가 있습니다. >>> len(df1) 3 >>> len(df.index) 3 >>> df.shape[0] 3 열 개수를 출력하는 방법은 두 가지가 있습니다. >>> len(df1.columns) 3 >>> df1.shape[1] 3 2022. 1. 12.
[파이썬 판다스] 데이터프레임해서 열별로 각 원소 개수 추출하기 (value_counts) 판다스를 불러오고 데이터프레임을 하나 정의합시다. import pandas as pd df1=pd.DataFrame({"C1":[1,2,3],"C2":[1,3,4],"C3":[1,5,6]}) >>> df1 C1 C2 C3 0 1 1 1 1 2 3 5 2 3 4 6 열별로 각 원소의 개수를 출력해봅시다. apply 메소드를 이용하여 value_count 함수를 각 열에 적용합니다. >>> df1.apply(pd.value_counts) C1 C2 C3 1 1.0 1.0 1.0 2 1.0 NaN NaN 3 1.0 1.0 NaN 4 NaN 1.0 NaN 5 NaN NaN 1.0 6 NaN NaN 1.0 NaN 을 다른 수로 채우려면 아래와 같이 하면 됩니다. >>> df1.apply(pd.value_count.. 2022. 1. 10.
[파이썬 판다스] 데이터 프레임 행별 원소 순위(rank) 출력하기 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 데이터프레임을 생성합니다. 행과 열의 이름을 아래와 같이 입력합니다. df1=pd.DataFrame(np.random.rand(3,4),index=["R1","R2","R3"],columns=["C1","C2","C3","C4"]) >>> df1 C1 C2 C3 C4 R1 0.317600 0.876055 0.027170 0.098733 R2 0.092537 0.582459 0.079630 0.913807 R3 0.470795 0.179732 0.905553 0.757245 행별 원소의 순위(ran.. 2022. 1. 4.
[파이썬 판다스] 데이터 프레임 열별 원소 순위(rank) 출력하기 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 데이터프레임을 생성합니다. 행과 열의 이름을 아래와 같이 입력합니다. df1=pd.DataFrame(np.random.rand(3,4),index=["R1","R2","R3"],columns=["C1","C2","C3","C4"]) >>> df1 C1 C2 C3 C4 R1 0.317600 0.876055 0.027170 0.098733 R2 0.092537 0.582459 0.079630 0.913807 R3 0.470795 0.179732 0.905553 0.757245 열별 원소의 순위(ran.. 2022. 1. 4.
[파이썬 판다스] 데이터프레임을 특정 열의 값 크기 순으로 정렬하기 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 데이터프레임을 생성합니다. 행과 열의 이름을 아래와 같이 입력합니다. df1=pd.DataFrame(np.random.rand(3,4),index=["R1","R2","R3"],columns=["C1","C2","C3","C4"]) >>> df1 C1 C2 C3 C4 R1 0.648971 0.240321 0.387624 0.602800 R2 0.557481 0.090147 0.742283 0.668202 R3 0.014178 0.482729 0.444863 0.656445 C3행의 값 크기 순으로.. 2022. 1. 4.
[파이썬 판다스] 데이터프레임을 열의 이름 순으로 정렬하기 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 데이터프레임을 생성합니다. 행과 열의 이름을 아래와 같이 입력합니다. >>> df1=pd.DataFrame(np.random.rand(3,4),index=["R3","R1","R2"],columns=["C2","C3","C1","C4"]) >>> df1 C2 C3 C1 C4 R3 0.489523 0.234162 0.050091 0.333715 R1 0.378797 0.245567 0.407612 0.033149 R2 0.509813 0.613097 0.032658 0.489478 열 이름의 순서대.. 2022. 1. 4.
[파이썬 판다스] 데이터프레임을 행의 이름 순으로 정렬하기 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 데이터프레임을 생성합니다. 행과 열의 이름을 아래와 같이 입력합니다. >>> df1=pd.DataFrame(np.random.rand(3,4),index=["R3","R1","R2"],columns=["C2","C3","C1","C4"]) >>> df1 C2 C3 C1 C4 R3 0.489523 0.234162 0.050091 0.333715 R1 0.378797 0.245567 0.407612 0.033149 R2 0.509813 0.613097 0.032658 0.489478 행 이름의 순서대.. 2022. 1. 4.
[파이썬 판다스] 데이터프레임 각 원소에 원하는 함수 적용하기 (applymap메소드) 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 3행 3열의 배열을 생성합니다. 생성한 데이터로 데이터프레임을 생성합니다. df1=pd.DataFrame(np.random.rand(3,3),columns=['C1','C2','C3'],index=['R1','R2','R3']) >>> df1 C1 C2 C3 R1 0.597113 0.179698 0.777803 R2 0.839905 0.320484 0.658779 R3 0.764895 0.077434 0.031356 각 원소에 루트를 씌워보겠습니다. applymap 메소드를 사용합니다. 물론 np.sqrt 함수를 바로 적용해도 되.. 2022. 1. 3.
[파이썬 판다스] 데이터프레임 행에 원하는 함수 적용하기 (apply메소드) 판다스 패키지를 불러오고 데이터프레임을 하나 정의합니다. import pandas as pd df1=pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],columns=['C1','C2','C3'],index=['R1','R2','R3']) >>> df1 C1 C2 C3 R1 1 2 3 R2 4 5 6 R3 7 8 9 각 행에 max 함수를 적용해봅시다. apply 메소드를 사용합니다. axis='columns' 옵션을 적용해야 합니다. 열방향이라는 뜻이고, 열이 진행되는 방향인 좌->우 로 함수가 적용되므로 행에 적용되는 것과 같습니다. >>> df1.apply(max,axis='columns') R1 3 R2 6 R3 9 dtype: int64 2022. 1. 3.
[파이썬 판다스] 데이터프레임 열에 원하는 함수 적용하기 (apply메소드) 판다스 패키지를 불러오고 데이터프레임을 하나 정의합니다. import pandas as pd df1=pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],columns=['C1','C2','C3'],index=['R1','R2','R3']) >>> df1 C1 C2 C3 R1 1 2 3 R2 4 5 6 R3 7 8 9 각 열에 max 함수를 적용해봅시다. apply 메소드를 사용합니다. >>> df1.apply(max) C1 7 C2 8 C3 9 dtype: int64 2022. 1. 3.
[파이썬 판다스] 데이터프레임 절댓값 씌우기 넘파이와 판다스를 불러옵니다. import numpy as np import pandas as pd 데이터프레임을 하나 정의합니다. >>> df1=pd.DataFrame([[-1,-2,-3],[4,5,6]]) >>> df1 0 1 2 0 -1 -2 -3 1 4 5 6 절댓값을 구해봅시다. 넘파이의 np.abs 함수를 쓰면됩니다. 호환이 됩니다. >>> np.abs(df1) 0 1 2 0 1 2 3 1 4 5 6 2021. 12. 30.
[파이썬 판다스] 데이터프레임과 시리즈의 연산 데이터프레임과 시리즈를 연산하면, 데이터프레임의 각 행이 시리즈와 연산됩니다. 열이랑 연산되야 더 납득가능한 것 같은데, 아무튼 행과 연산됩니다. 데이터프레임 하나와 시리즈 하나를 정의해봅시다. import pandas as pd df1=pd.DataFrame([[1,2,3],[4,5,6]],columns=['C1','C2','C3'],index=['R1','R2']) >>> df1 C1 C2 C3 R1 1 2 3 R2 4 5 6 s1=pd.Series([100,200,300],index=['C1','C2','C3']) >>> s1 C1 100 C2 200 C3 300 dtype: int64 둘을 더해봅시다. >>> df1+s1 C1 C2 C3 R1 101 202 303 R2 104 205 306 각 행.. 2021. 12. 30.
[파이썬 판다스] 데이터프레임 사칙연산 메소드 모음 데이터프레임끼리 연산을 할 때 + - * / 를 이용할 수도 있지만 메소드를 이용하면 fill_value 옵션을 사용할 수 있습니다. 한쪽에만 인덱스가 있는 경우 연산자를 이용한 연산을 하면 NaN 이 채워지는데, fill_value 옵션을 이용하면 해당 값으로 채울 수가 있습니다. 데이터프레임 사칙연산 메소드는 아래와 같습니다. 연산 메소드 역연산 메소드 덧셈 add radd 뺄셈 sub rsub 나눗셈 div rdiv 몫 floordiv rfloordiv 곱셈 mul rmul 거듭제곱 pow rpow 2021. 12. 30.
[파이썬 판다스] 데이터프레임의 사칙연산 (+빈 곳 채우는 법) 판다스를 불러옵니다. import pandas as pd 데이터프레임을 두개 정의합니다. df1=pd.DataFrame([[1,2,3],[4,5,6]],columns=['C1','C2','C3'],index=['R1','R2']) >>> df1 C1 C2 C3 R1 1 2 3 R2 4 5 6 df2=pd.DataFrame([[10,20,30],[40,50,60]],columns=['C1','C2','C4'],index=['R1','R3']) >>> df2 C1 C2 C4 R1 10 20 30 R3 40 50 60 일부러 인덱스를 약간 다르게 정의했습니다. 두 데이터프레임을 합해봅시다. >>> df1+df2 C1 C2 C3 C4 R1 11.0 22.0 NaN NaN R2 NaN NaN NaN NaN R3 .. 2021. 12. 30.
[파이썬 판다스] 데이터 프레임에서 특정 값을 기준으로 0과 1로 바꾸기 넘파이와 판다스를 불러옵니다. import numpy as np import pandas as pd 배열을 하나 정의합니다. ar=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]]) >>> ar array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [10, 11, 12]]) 배열을 이용하여 데이터프레임을 정의합니다. df=pd.DataFrame(ar,columns=['C1','C2','C3'],index=['R1','R2','R3','R4']) >>> df C1 C2 C3 R1 1 2 3 R2 4 5 6 R3 7 8 9 R4 10 11 12 5을 기준으로 5보다 같거나 큰 값은 1로, 5보다 작은 값은 0으로 바꿔봅시다. 먼저 5보다 작은 값을 0으.. 2021. 12. 30.
[파이썬 판다스] 데이터프레임에서 특정 열 제거하기 판다스를 불러옵니다. import pandas as pd 먼저 딕셔너리를 정의합니다. dic={'이름':['이호정','이정진','이기호','정희진','이나리'], '성별':['남','남','남','여','여'], '나이':[25,45,72,25,37] } 딕셔너리를 이용하여 데이터프레임을 정의합니다. data1=pd.DataFrame(dic) >>> data1 이름 성별 나이 0 이호정 남 25 1 이정진 남 45 2 이기호 남 72 3 정희진 여 25 4 이나리 여 37 성별 열을 제거해봅시다. drop 메소드를 사용합니다. 행을 제거할 때와 달리 옵션을 입력해야 합니다. axis=1 또는 axis='columns' 옵션을 입력합니다. >>> data1.drop('성별',axis=1) 이름 나이 0 이.. 2021. 12. 30.
[파이썬 판다스] 데이터프레임에서 특정 행 제거하기 판다스를 불러옵니다. import pandas as pd 먼저 딕셔너리를 정의합니다. dic={'이름':['이호정','이정진','이기호','정희진','이나리'], '성별':['남','남','남','여','여'], '나이':[25,45,72,25,37] } 딕셔너리를 이용하여 데이터프레임을 정의합니다. data1=pd.DataFrame(dic) >>> data1 이름 성별 나이 0 이호정 남 25 1 이정진 남 45 2 이기호 남 72 3 정희진 여 25 4 이나리 여 37 2행을 제거해봅시다. drop 메소드를 사용합니다. >>> data1.drop(1) 이름 성별 나이 0 이호정 남 25 2 이기호 남 72 3 정희진 여 25 4 이나리 여 37 리스트를 이용해서 여러 행을 제거하는 것도 가능합니다. .. 2021. 12. 30.
[파이썬 판다스] 데이터프레임에 행,열 순서 동시에 변경하기 판다스를 불러옵니다. import pandas as pd 먼저 딕셔너리를 정의합니다. dic={'이름':['이호정','이정진','이기호','정희진','이나리'], '성별':['남','남','남','여','여'], '나이':[25,45,72,25,37] } 딕셔너리를 이용하여 데이터프레임을 정의합니다. data1=pd.DataFrame(dic) >>> data1 이름 성별 나이 0 이호정 남 25 1 이정진 남 45 2 이기호 남 72 3 정희진 여 25 4 이나리 여 37 행과 열의 순서를 동시에 변경해봅시다. loc 메소드를 사용합니다. >>> data1.loc[[2,3,4,1,0],['성별','나이','이름']] 성별 나이 이름 2 남 72 이기호 3 여 25 정희진 4 여 37 이나리 1 남 45 .. 2021. 12. 22.
[파이썬 판다스] 데이터프레임에 열 순서 변경하기 판다스를 불러옵니다. import pandas as pd 먼저 딕셔너리를 정의합니다. dic={'이름':['이호정','이정진','이기호','정희진','이나리'], '성별':['남','남','남','여','여'], '나이':[25,45,72,25,37] } 딕셔너리를 이용하여 데이터프레임을 정의합니다. data1=pd.DataFrame(dic) >>> data1 이름 성별 나이 0 이호정 남 25 1 이정진 남 45 2 이기호 남 72 3 정희진 여 25 4 이나리 여 37 행 순서를 변경해봅시다. reindex 메소드를 사용합니다. columns 옵션을 명시해 주어야 합니다. >>> data1.reindex(columns=['나이','성별','이름']) 나이 성별 이름 0 25 남 이호정 1 45 남 이.. 2021. 12. 22.
[파이썬 판다스] 데이터프레임에 행 순서 변경하기 판다스를 불러옵니다. import pandas as pd 먼저 딕셔너리를 정의합니다. dic={'이름':['이호정','이정진','이기호','정희진','이나리'], '성별':['남','남','남','여','여'], '나이':[25,45,72,25,37] } 딕셔너리를 이용하여 데이터프레임을 정의합니다. data1=pd.DataFrame(dic) >>> data1 이름 성별 나이 0 이호정 남 25 1 이정진 남 45 2 이기호 남 72 3 정희진 여 25 4 이나리 여 37 행 순서를 변경해봅시다. reindex 메소드를 사용합니다. >>> data1.reindex([1,3,2,4,0]) 이름 성별 나이 1 이정진 남 45 3 정희진 여 25 2 이기호 남 72 4 이나리 여 37 0 이호정 남 25 2021. 12. 22.
[파이썬 판다스] 데이터프레임에 행과 열이름에 상위 카테고리 부여 판다스를 불러옵니다. import pandas as pd 먼저 딕셔너리를 정의합니다. dic={'이름':['이호정','이정진','이기호','정희진','이나리'], '성별':['남','남','남','여','여'], '나이':[25,45,72,25,37] } 딕셔너리를 이용하여 데이터프레임을 정의합니다. data1=pd.DataFrame(dic) >>> data1 이름 성별 나이 0 이호정 남 25 1 이정진 남 45 2 이기호 남 72 3 정희진 여 25 4 이나리 여 37 행과 열에 상위 카테고리명을 부여해봅시다. 행에는 '번호'라는 카테고리를, 열에는 '특성'이라는 카테고리를 부여하겠습니다. 먼저 행에 '번호'라는 카테고리를 부여합시다. index.name 메소드를 사용합니다. >>> data1.ind.. 2021. 12. 22.
[파이썬 판다스] 데이터프레임에 행/열 뒤집기(transpose) 판다스를 불러옵니다. import pandas as pd 먼저 딕셔너리를 정의합니다. dic={'이름':['이호정','이정진','이기호','정희진','이나리'], '성별':['남','남','남','여','여'], '나이':[25,45,72,25,37] } 딕셔너리를 이용하여 데이터프레임을 정의합니다. data1=pd.DataFrame(dic) >>> data1 이름 성별 나이 0 이호정 남 25 1 이정진 남 45 2 이기호 남 72 3 정희진 여 25 4 이나리 여 37 행과 열을 바꿀 때는 T 메소드를 사용합니다. >>> data1.T 0 1 2 3 4 이름 이호정 이정진 이기호 정희진 이나리 성별 남 남 남 여 여 2021. 12. 21.
[파이썬 판다스] 데이터프레임 행 이름 입력하기 판다스를 불러옵니다. import pandas as pd 먼저 딕셔너리를 정의합니다. dic={'이름':['이호정','이정진','이기호','정희진','이나리'], '성별':['남','남','남','여','여'], '나이':[25,45,72,25,37] } 딕셔너리를 이용하여 데이터프레임을 정의할 때 index 옵션을 추가해주면 됩니다. data1=pd.DataFrame(dic,index=['A','B','C','D','E']) >>> data1 이름 성별 나이 A 이호정 남 25 B 이정진 남 45 C 이기호 남 72 D 정희진 여 25 E 이나리 여 37 중복 입력도 가능합니다. >>> data1=pd.DataFrame(dic,index=['A','B','C','C','E']) >>> data1 이름 .. 2021. 12. 16.
반응형