본문 바로가기
반응형

판다스94

[파이썬 판다스] 데이터프레임 인덱스 리셋하는 법 데이터 프레임 이름을 df 라고 하면 아래와 같이 인덱스를 리셋합니다. df=df.reset_index(drop=True) 위와 같이 리셋 결과를 df에 다시 입력해주어야 합니다. 2023. 1. 17.
[파이썬 판다스] 데이터프레임 열 이름 출력하는 법 데이터 프레임 이름을 df 라고 한다면, df.columns 를 입력하면 모든 열 이름이 출력됩니다. df.columns 인덱싱도 가능합니다. #첫번째 열 제목에 접근 df.columns[0] 2022. 11. 18.
[파이썬 판다스] 데이터 프레임 합치기 (열 이름 같은 경우) 열 이름이 같은 데이터 프레임을 두개 정의합시다. 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.
[파이썬 판다스] 시리즈에서 데이터를 분할표로 만들기 (unstack) 독립변수가 2개이고, 종속변수는 1개인 데이터를 하나 정의합시다. 독립변수는 지역, 성별이고 종속변수는 인구수 입니다. import pandas as pd import numpy as np #데이터 생성 sr1=pd.Series([50,50,30,30,20,20], index=[['서울','서울','경기','경기','제주',"제주"],['남자','여자','남자','여자','남자','여자']]) >>> sr1 서울 남자 50 여자 50 경기 남자 30 여자 30 제주 남자 20 여자 20 dtype: int64 위 데이터를 분할표로 만들 때는 unstack 메소드를 사용하면 됩니다. >>> sr1.unstack() 남자 여자 경기 30 30 서울 50 50 제주 20 20 자료형을 확인해봅시다. 데이터프레.. 2022. 2. 24.
[파이썬 판다스] 시리즈에서 인덱스 여러 층으로 정의하기 (계층적 인덱스) 독립변수가 두개 이상인 자료를 표로 정리해야하는 경우가 있습니다. 예를들어 독립변수가 거주지, 성별이고 종속변수가 인구 수인 경우를 생각해봅시다. 독립변수 : 거주지, 성별 종속변수 : 인구 수 표로 정리하면 아래와 같습니다. 파이썬 시리즈에서 위 표를 정의해봅시다. import pandas as pd import numpy as np #데이터 생성 sr1=pd.Series([50,50,30,30,20,20], index=[['서울','서울','경기','경기','제주',"제주"],['남자','여자','남자','여자','남자','여자']]) 인덱스를 2차원 리스트로 정의하면 됩니다. 결과는 아래와 같습니다. >>> sr1 서울 남자 50 여자 50 경기 남자 30 여자 30 제주 남자 20 여자 20 dt.. 2022. 2. 24.
[파이썬 판다스] 데이터프레임에서 범주형 자료를 수치형으로 바꾸는 방법 데이터프레임으로 범주형 자료를 하나 정의합시다. 여섯 사람의 이름과 각 사람이 사용하는 핸드폰 기종입니다. 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. 9.
[파이썬 판다스] 값을 구간별로 나누기 (연속형데이터를 범주형으로) 점수를 학점으로 바꿔보는 예제입니다. 변환 기준은 아래와 같습니다. #학점 기준 #[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.
[파이썬 판다스] 시리즈의 특정 값을 na 로 바꾸기 시리즈를 하나 정의합시다. import pandas as pd import numpy as np sr1=pd.Series([1,2,3,3,4,5]) 3을 na로 바꾸겠습니다. replace 메소드를 사용합니다. >>> sr1.replace(3,np.nan) 0 1.0 1 2.0 2 NaN 3 NaN 4 4.0 5 5.0 dtype: float64 2022. 2. 7.
[파이썬 판다스] 데이터프레임에서 매칭된 데이터 추가하기 (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':['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 결측값을 각 열의 평균으로 채워봅시다. >>> df1.fillna(df1.mean()) C1 C2 C3 R1 1.0 10.0 100 R2 2.0 20.0 200 R3 1.5 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.
[파이썬 판다스] 시리즈 원소 중 NaN 제거 넘파이와 판다스를 불러옵니다. import numpy as np import pandas as pd NaN이 포함된 시리즈를 하나 정의합니다. >>> sr1=pd.Series([1,np.NaN,3,4,5,np.NaN]) >>> sr1 0 1.0 1 NaN 2 3.0 3 4.0 4 5.0 5 NaN dtype: float64 NaN 을 제거할 때는 dropna 함수 또는 메소드를 사용합니다. >>> sr1.dropna() 0 1.0 2 3.0 3 4.0 4 5.0 dtype: float64 2022. 1. 13.
[파이썬 판다스] 시리즈 원소 중 NaN 확인 (isnull) 넘파이와 판다스를 불러옵니다. import numpy as np import pandas as pd NaN이 포함된 시리즈를 하나 정의합니다. >>> sr1=pd.Series([1,np.NaN,3,4,5,np.NaN]) >>> sr1 0 1.0 1 NaN 2 3.0 3 4.0 4 5.0 5 NaN dtype: float64 NaN 여부는 isnull 함수를 사용합니다. >>> pd.isnull(sr1) 0 False 1 True 2 False 3 False 4 False 5 True dtype: bool 또는 isnull 메소드도 가능합니다. >>> sr1.isnull() 0 False 1 True 2 False 3 False 4 False 5 True dtype: bool 2022. 1. 13.
파이썬의 NaN, None, Inf R에서는 NaN, NA, NULL, Inf 가 잘구분되어 있습니다. 이들을 기타자료형이라고 부르겠습니다. NA : Not available (결측값) NaN : Not a number (수학적 정의 불가 0/0) NULL : 빈 값 (의도적으로) Inf : 무한 반면 파이썬에서는 기타자료형이 잘 구분되어 있지 않습니다. NaN, None, Inf 가 있는데요. NaN 과 Inf 는 넘파이 패키지를 통해서만 사용할 수 있습니다. None과 NaN 은 둘다 결측치라는 같은 의미라고 생각하면 된다. 차이는 None은 넘파이에서는 연산이 불가능하므로 사용이 적합하지 않다. 판다스에서는 None을 알아서 NaN으로 인식한다. 혼동을 막기 위해 NaN 만 있다고 생각하면 된다. None 은 옵션입력할때 입력값으로만.. 2022. 1. 13.
불규칙한 띄어쓰기 텍스트 파이썬 불러오기 (판다스 데이터프레임) 아래 데이터를 봅시다. 띄어쓰기가 불규칙하게 되어 있습니다. 판다스의 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.
[파이썬 판다스] 데이터프레임 행 개수, 열 개수 판다스를 불러오고 데이터프레임을 하나 정의합시다. 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.
파이썬으로 텍스트 저장하기 (판다스 데이터프레임) 판다스와 os 패키지를 불러옵니다. import pandas as pd import os 데이터프레임을 하나 만들어 줍니다. >>> df1=pd.DataFrame({'C1':[1,2,3],'C2':[10,20,30],'C3':[100,200,300]}) >>> df1 C1 C2 C3 0 1 10 100 1 2 20 200 2 3 30 300 저장할 경로를 지정합니다. 원하는 폴더 경로를 지정하면 됩니다. os.chdir('C:/Users') to_table 메소드를 이용하여 텍스트파일을 저장합니다. 구분자는 원하는 것으로 넣습니다. 예시에서는 / 를 넣었습니다. df1.to_csv('mycsv.txt',sep='/') 아래와 같이 파일이 생성되었습니다. 자주 사용하는 옵션 1) 열 이름은 내보내지 않기 .. 2022. 1. 11.
파이썬으로 엑셀 저장하기 (판다스 데이터프레임) 판다스와 os 패키지를 불러옵니다. import pandas as pd import os 데이터프레임을 하나 만들어 줍니다. >>> df1=pd.DataFrame({'C1':[1,2,3],'C2':[10,20,30],'C3':[100,200,300]}) >>> df1 C1 C2 C3 0 1 10 100 1 2 20 200 2 3 30 300 저장할 경로를 지정합니다. 원하는 폴더 경로를 지정하면 됩니다. os.chdir('C:/Users') to_excel 메소드를 이용하여 엑셀파일을 저장합니다. df1.to_excel('mycsv.excel') 아래와 같이 파일이 생성되었습니다. 자주 사용하는 옵션 1) 열 이름은 내보내지 않기 header=False 옵션을 입력합니다. df1.to_excel('myc.. 2022. 1. 11.
파이썬으로 CSV 저장하기 (판다스 데이터프레임) 판다스와 os 패키지를 불러옵니다. import pandas as pd import os 데이터프레임을 하나 만들어 줍니다. >>> df1=pd.DataFrame({'C1':[1,2,3],'C2':[10,20,30],'C3':[100,200,300]}) >>> df1 C1 C2 C3 0 1 10 100 1 2 20 200 2 3 30 300 저장할 경로를 지정합니다. 원하는 폴더 경로를 지정하면 됩니다. os.chdir('C:/Users') to_csv 메소드를 이용하여 csv를 저장합니다. df1.to_csv('mycsv.csv') 아래와 같이 파일이 생성되었습니다. 자주 사용하는 옵션 1) 열 이름은 내보내지 않기 header=False 옵션을 입력합니다. df1.to_csv('mycsv.csv',h.. 2022. 1. 11.
파이썬으로 CSV 불러오기 (판다스 데이터프레임) 파이썬에서 불러올 데이터는 아래와 같습니다. 코드는 아래와 같습니다. pd.read_csv 함수를 사용합니다. 만약 오류가 날 경우 encoding='CP949' 옵션을 추가하면 됩니다. 한글 인코딩이 가능하게 해줍니다. 전체 경로를 입력하여 불러오는 방법과, 작업경로 지정 후 파일 이름으로 불러오는 방법이 있습니다. import pandas as pd import os #방법 1. 전체 경로 입력 df1=pd.read_table('C:/Users/ex_weight.xlsx',encoding='CP949') #방법 2. 작업경로 지정 후 파일 이름 입력 os.chdir('C:/Users') df1=pd.read_table('ex_weight.xlsx',encoding='CP949') 불러온 결과는 아래와.. 2022. 1. 11.
띄어쓰기 텍스트 파이썬 불러오기 (판다스 데이터프레임) 파이썬에서 불러올 데이터는 아래와 같습니다. 코드는 아래와 같습니다. pd.read_table 함수를 사용합니다. sep 옵션을 이용하여 구분자가 무엇인지를 입력해야 합니다. 위 경우는 space 이므로 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=' ') 불러온 결과는 아래와 같습니다. >>.. 2022. 1. 10.
반응형