본문 바로가기
반응형

데이터프레임57

[파이썬 판다스] 데이터프레임 인덱스 리셋하는 법 데이터 프레임 이름을 df 라고 하면 아래와 같이 인덱스를 리셋합니다. df=df.reset_index(drop=True) 위와 같이 리셋 결과를 df에 다시 입력해주어야 합니다. 2023. 1. 17.
[파이썬 판다스] 데이터 프레임 합치기 (열 이름 같은 경우) 열 이름이 같은 데이터 프레임을 두개 정의합시다. import pandas as pd #데이터프레임 생성 df1=pd.DataFrame({'name':['Kim','Park','Lee'],'height':[177,175,166]}) df2=pd.DataFrame({'name':['Chun','Kang','Choi'],'height':[156,182,158]}) 각 데이터프레임은 아래와 같습니다. >>> df1 name height 0 Kim 177 1 Park 175 2 Lee 166 >>> df2 name height 0 Chun 156 1 Kang 182 2 Choi 158 두 데이터프레임을 합칠 때는 concat 함수를 사용합니다. df_total=pd.concat([df1,df2]) >>> df_.. 2022. 3. 10.
[파이썬 판다스] 빈 데이터프레임 만들고 행 하나씩 추가하기 아래와 같이 빈 데이터프레임을 만들어봅시다. 열 이름만 정의해줍니다. import pandas as pd mydf=pd.DataFrame(columns=['x','y']) 첫 행을 추가해봅시다. 5,5 를 추가하겠습니다. >>> mydf.loc[0]=[5,5] >>> mydf x y 0 5 5 둘째 행을 추가해봅시다. 1,7 을 추가하겠습니다. >>> mydf.loc[1]=[1,7] >>> mydf x y 0 5 5 1 1 7 2022. 3. 7.
[파이썬 판다스] 데이터프레임에서 임의로 원하는 개수의 행 뽑기 (중복여부 결정) 데이터프레임을 하나 만들어줍니다. 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. 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.
[파이썬 판다스] 데이터프레임의 특정 값을 na 로 바꾸기 (replace) 시리즈를 하나 정의합시다. import pandas as pd import numpy as np >>> df1=pd.DataFrame({'C1':[1,2,3],'C2':[10,3,30],'C3':[100,200,300]},index=['R1','R2','R3']) >>> df1 C1 C2 C3 R1 1 10 100 R2 2 3 200 R3 3 30 300 3을 na로 바꾸겠습니다. replace 메소드를 사용합니다. >>> df1.replace(3,np.nan) C1 C2 C3 R1 1.0 10.0 100 R2 2.0 NaN 200 R3 NaN 30.0 300 딕셔너리를 사용하면 여러 쌍의 교체도 가능합니다. 2022. 2. 7.
[파이썬 판다스] 데이터프레임에서 특정 열을 대문자 또는 소문자로 변경하기 판다스를 불러오고 결측치가 포함된 데이터프레임을 만들어줍니다. import pandas as pd df1=pd.DataFrame({'C1':['A','B','C','D'],'C2':['a','b','c','d'],'C3':['A','b','C','d']},index=['R1','R2','R3','R4']) >>> df1 C1 C2 C3 R1 A a A R2 B b b R3 C c C R4 D d d 첫번째 열을 소문자로 바꿔봅시다. str.lower 메소드를 사용합니다. >>> df1['C1'].str.lower() R1 a R2 b R3 c R4 d Name: C1, dtype: object 이번에는 두번째 열을 대문자로 바꿔봅시다. str.upper 메소드를 사용합니다. >>> df1['C2'].st.. 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 numpy as np import pandas as pd df1=pd.DataFrame({'C1':[1,2,np.nan],'C2':[10,np.nan,30],'C3':[100,200,300]},index=['R1','R2','R3']) >>> df1 C1 C2 C3 R1 1.0 10.0 100 R2 2.0 NaN 200 R3 NaN 30.0 300 결측값을 0으로 채워봅시다. fillna 메소드를 사용합니다. >>> df1.fillna(0) C1 C2 C3 R1 1.0 10.0 100 R2 2.0 0.0 200 R3 0.0 30.0 300 2022. 1. 14.
[파이썬 판다스] 데이터프레임에서 결측치 포함 행 또는 열 제거하기 판다스와 넘파이를 불러오고 결측치가 포함된 데이터프레임을 만들어줍니다. import numpy as np import pandas as pd df1=pd.DataFrame({'C1':[1,2,np.nan],'C2':[10,np.nan,30],'C3':[100,200,300]},index=['R1','R2','R3']) >>> df1 C1 C2 C3 R1 1.0 10.0 100 R2 2.0 NaN 200 R3 NaN 30.0 300 결측치가 포함된 행을 제거할 때는 dropna 메소드를 사용합니다. axis=0 옵션이 디폴트이고, 행제거입니다. >>> df1.dropna() C1 C2 C3 R1 1.0 10.0 100 결측치가 포함된 열을 제거 할 때는 axis=1 옵션을 넣어주면 됩니다. >>> df1... 2022. 1. 14.
[파이썬 판다스] 데이터프레임에서 NaN 여부 확인 (True로) 판다스와 넘파이를 불러오고 결측치가 포함된 데이터프레임을 만들어줍니다. import numpy as np import pandas as pd df1=pd.DataFrame({'C1':[1,2,np.nan],'C2':[10,np.nan,30],'C3':[100,200,300]},index=['R1','R2','R3']) >>> df1 C1 C2 C3 R1 1.0 10.0 100 R2 2.0 NaN 200 R3 NaN 30.0 300 결측치 여부를 확인하는 방법은 판다스의 isnull 함수 또는 메소드를 사용하면 됩니다. #함수사용 >>> pd.isnull(df1) C1 C2 C3 R1 False False False R2 False True False R3 True False False >>> df1.is.. 2022. 1. 14.
불규칙한 띄어쓰기 텍스트 파이썬 불러오기 (판다스 데이터프레임) 아래 데이터를 봅시다. 띄어쓰기가 불규칙하게 되어 있습니다. 판다스의 read_table 함수로 불러오려고 해봅시다. import pandas as pd df1=pd.read_table('my_ex_tab.txt',header=None,sep=' ') 아래와 같은 오류가 발생합니다. pandas.errors.ParserError: Error tokenizing data. C error: Expected 3 fields in line 2, saw 5 이 문제는 정규표현식으로 해결됩니다. \s 는 공백이라는 의미인데, 여기 +를 붙이면 반복을 의미합니다. 반복되는 공백이라는 말입니다. 공백이 몇개든 상관없습니다. df1=pd.read_table('my_ex_tab.txt',header=None,sep='\s.. 2022. 1. 13.
[파이썬 판다스] 데이터프레임 행이름, 열이름 리스트로 추출 판다스를 불러오고 데이터프레임을 하나 정의합니다. 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 행 이름을 출력해봅시다. >>> list(df1.index) ['R1', 'R2', 'R3'] 열 이름을 출력해봅시다. >>> list(df1.columns) ['C1', 'C2', 'C3'] 2022. 1. 12.
[파이썬 판다스] 데이터프레임 숫자로만 인덱싱 하는 법(iloc) 판다스를 불러오고 데이터프레임을 하나 정의합시다. 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 숫자(index)로 인덱싱 할 때는 iloc 메소드를 사용합니다. 1행 1열에 접근해봅시다. >>> df1.iloc[0,0] 1 1행 3열에 접근해봅시다. >>> df1.iloc[0,2] 100 1행의 1,2열에 접근해봅시다. >>> df1.iloc[0,0:2] C1 1 C2 10 Name: R1, dtype: int64 1행의 1,3열에 접근해봅시다. >>> df1.. 2022. 1. 12.
파이썬 데이터 불러올 때 문자를 결측치로 인식하기 오늘 불러올 데이터는 아래와 같습니다. 결측치도 있고, 숫자가 영어로 잘못 입력된 부분도 있습니다. 먼저 판다스와 os 패키지를 불러옵니다. import pandas as pd import os 열고 싶은 파일이 들어있는 폴더 경로를 작업경로로 지정해줍니다. #작업경로 지정 os.chdir('C:/Users') 데이터를 불러옵시다. 열 이름이 없으므로 header=None 을 입력합니다. df1=pd.read_csv('mycsv_with_NA.csv',header=None) >>> df1 0 1 2 0 1 NaN 100.0 1 2 20 200.0 2 3 a 300.0 3 4 40 400.0 4 5 50 NaN 5 6 b 600.0 파일을 불러올 때, a를 결측치로 인식해봅시다. na_values='a' .. 2022. 1. 12.
콤마 구분 텍스트 파이썬 불러오기 (판다스 데이터프레임) 파이썬에서 불러올 데이터는 아래와 같습니다. 코드는 아래와 같습니다. pd.read_table 함수를 사용합니다. sep 옵션을 이용하여 구분자가 무엇인지를 입력해야 합니다. 위 경우는 콤마이므로 sep=',' 옵션을 입력합니다. 전체 경로를 입력하여 불러오는 방법과, 작업경로 지정 후 파일 이름으로 불러오는 방법이 있습니다. import pandas as pd import os #방법 1. 전체 경로 입력 df1=pd.read_table('C:/Users/ex_weight.xlsx',sep=',') #방법 2. 작업경로 지정 후 파일 이름 입력 os.chdir('C:/Users') df1=pd.read_table('ex_weight.xlsx',sep=',') 불러온 결과는 아래와 같습니다. >>> df.. 2022. 1. 10.
파이썬으로 엑셀 데이터 불러오기 (판다스 데이터프레임) 파이썬에서 불러올 데이터는 아래와 같습니다. 코드는 아래와 같습니다. pd.read_excel 함수를 사용합니다. 전체 경로를 입력하여 불러오는 방법과, 작업경로 지정 후 파일 이름으로 불러오는 방법이 있습니다. import pandas as pd import os #방법 1. 전체 경로 입력 df1=pd.read_excel('C:/Users/ex_weight.xlsx') #방법 2. 작업경로 지정 후 파일 이름 입력 os.chdir('C:/Users') df1=pd.read_excel('ex_weight.xlsx') 불러온 결과는 아래와 같습니다. >>> df1 회사 제품 무게 최소 최대 0 AMOS Glue_Stick 36.97 36.0 38.0 1 Monami Name_Pan 7.54 7.0 8.0.. 2022. 1. 10.
[파이썬 판다스] 데이터프레임해서 열별로 각 원소 개수 추출하기 (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.
[파이썬 판다스] 데이터프레임에 사용되는 통계관련 함수 모음 (평균, 표준편차 등) 데이터프레임에 사용되는 통계관련 함수는 아래와 같습니다. 메소드 형태로 사용합니다. 데이터프레임 이름이 df1이고 함수명이 aa라면 아래와 같이 사용합니다. df1.aa() 기본적으로 각 열에 적용됩니다. 각 행에 적용을 원하는 경우 axis='columns' 옵션을 설정하면 됩니다. 함수는 아래와 같습니다. 1. 통계량 관련 메소드 설명 mean 평균 var 분산 std 표준편차 skew 왜도 kurt 첨도 median 중앙값 mad 중앙값 절대편차 describe 여러 통계량 한번에 출력 quantile 분위수 (0~1사이값 입력) 2. 개수, 합, 차, 곱, 변화율 관련 메소드 설명 count 개수 sum 합 cumsum 누적합 prod 곱 diff 앞 원소와의 차이 pct_change 앞 원소와의.. 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.365426 0.376201 0.644952 0.642808 R2 0.824492 0.194468 0.876285 0.700862 R3 0.926402 0.327502 0.481516 0.087809 각 열의 개수,평균.. 2022. 1. 4.
[파이썬 판다스] 데이터프레임 행 방향으로 누적값 계산 (cumsum) 판다스 패키지와 넘파이 패키지를 불러옵니다 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.365426 0.376201 0.644952 0.642808 R2 0.824492 0.194468 0.876285 0.700862 R3 0.926402 0.327502 0.481516 0.087809 행 방향으로 누적값.. 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.365426 0.376201 0.644952 0.642808 R2 0.824492 0.194468 0.876285 0.700862 R3 0.926402 0.327502 0.481516 0.087809 각 열별로 최댓값이.. 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.365426 0.376201 0.644952 0.642808 R2 0.824492 0.194468 0.876285 0.700862 R3 0.926402 0.327502 0.481516 0.087809 열 별 합을 구해봅.. 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.365426 0.376201 0.644952 0.642808 R2 0.824492 0.194468 0.876285 0.700862 R3 0.926402 0.327502 0.481516 0.087809 열 별 평균을 구해.. 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.365426 0.376201 0.644952 0.642808 R2 0.824492 0.194468 0.876285 0.700862 R3 0.926402 0.327502 0.481516 0.087809 열 별 합을 구해봅.. 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.365426 0.376201 0.644952 0.642808 R2 0.824492 0.194468 0.876285 0.700862 R3 0.926402 0.327502 0.481516 0.087809 열 별 합을 구해봅.. 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.
[파이썬 판다스] 데이터 프레임 열별 원소 순위(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.
반응형