본문 바로가기
반응형

전체 글385

파이썬의 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 sr1=pd.Series([1,2,3,4,5]) >>> sr1 0 1 1 2 2 3 3 4 4 5 dtype: int64 시리즈 원소 수를 구하는 방법은 아래와 같이 세 가지가 있습니다. >>> len(sr1) 5 >>> len(sr1.index) 5 >>> sr1.size 5 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 열고 싶은 파일이 들어있는 폴더 경로를 작업경로로 지정해줍니다. #작업경로 지정 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.
파이썬으로 텍스트 저장하기 (판다스 데이터프레임) 판다스와 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.
콤마 구분 텍스트 파이썬 불러오기 (판다스 데이터프레임) 파이썬에서 불러올 데이터는 아래와 같습니다. 코드는 아래와 같습니다. 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.
[파이썬 판다스] 데이터프레임 데이터 불러오기 관련 함수들 모음 데이터프레임 데이터 불러오기 관련 함수들 모음입니다. 함수 기능 read_table tab 으로 구분된 자료 read_csv , 으로 구분된 자료 read_excel 엑셀자료 read_html html 자료 read_json json 자료 read_sql SQL 자료 read_sas sas 자료 read_stata stata 자료 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.
[파이썬 판다스] 시리즈에서 각 원소가 특정 리스트의 어느 인덱스인지 확인하기 (get_indexer) 판다스를 불러오고 시리즈를 하나 정의합시다. import pandas as pd s1=pd.Series(['a','b','a','a','c','d','e','e']) >>> s1 0 a 1 b 2 a 3 a 4 c 5 d 6 e 7 e dtype: object 각 원소가 ['a','b','c','d','e'] 의 몇번째 인덱스인지 확인해봅시다. 이 리스트도 변수에 넣어줍니다. >>> for_idx=['a','b','c','d','e'] s1의 각 원소가 몇번째 인덱스인지 확인해봅시다. >>> pd.Index(for_idx).get_indexer(s1) array([0, 1, 0, 0, 2, 3, 4, 4], dtype=int64) 2022. 1. 10.
[파이썬 판다스] 시리즈에서 각 원소가 특정 리스트에 있는지 판단하기 판다스를 불러오고 시리즈를 하나 정의합시다. import pandas as pd s1=pd.Series(['a','b','a','a','c','d','e','e']) >>> s1 0 a 1 b 2 a 3 a 4 c 5 d 6 e 7 e dtype: object 각 원소가 ['a','b'] 에 들어있는지 판단해봅시다. isin 함수를 사용합니다. >>> s1.isin(['a','b']) 0 True 1 True 2 True 3 True 4 False 5 False 6 False 7 False dtype: bool 2022. 1. 10.
[파이썬 판다스] 시리즈에서 원소 별 개수 출력하기 (value_counts) 판다스를 불러오고 시리즈를 하나 정의합시다. import pandas as pd s1=pd.Series(['a','b','a','a','c','d','e','e']) >>> s1 0 a 1 b 2 a 3 a 4 c 5 d 6 e 7 e dtype: object 각 원소 별 개수를 출력해봅시다. value_counts 메소드를 사용합니다. >>> s1.value_counts() a 3 e 2 b 1 c 1 d 1 dtype: int64 많이 있는 것 순서대로 정렬된 것을 알 수 있습니다. 등장 순서대로 정렬하려면 sort=False 옵션을 입력하면 됩니다. >>> s1.value_counts(sort=False) a 3 b 1 c 1 d 1 e 2 dtype: int64 위 메소드는 판다스 함수 형태로도 .. 2022. 1. 10.
[파이썬 판다스] 시리즈에서 고유 값 추려내기 (unique) 판다스를 불러오고 시리즈를 하나 정의합시다. import pandas as pd s1=pd.Series(['a','b','a','a','c','d','e','e']) >>> s1 0 a 1 b 2 a 3 a 4 c 5 d 6 e 7 e dtype: object 고유 값을 추려 봅시다. unique 메소드를 사용합니다. >>> s1.unique() array(['a', 'b', 'c', 'd', 'e'], dtype=object) 2022. 1. 10.
[파이썬 판다스] 시리즈에서 중복 값 제거하기 (unique) 판다스를 불러오고 시리즈를 하나 정의합시다. import pandas as pd s1=pd.Series(['a','b','a','a','c','d','e','e']) >>> s1 0 a 1 b 2 a 3 a 4 c 5 d 6 e 7 e dtype: object 중복 값을 제거해봅시다. unique 메소드를 사용합니다. >>> s1.unique() array(['a', 'b', 'c', 'd', 'e'], dtype=object) 2022. 1. 10.
파이썬 문자열에서 실수 추출하기 (ex : 87.57) 아래 문자열이 있습니다. >>> res "b'SUI? 87.57 g \\r\\n'" 87.57 이라는 실수를 추출해봅시다. 먼저 87.57을 문자열로 추출합니다. 정규표현식을 이용했습니다. >>> re.findall("\d+.\d+",res) ['87.57'] 정규표현식을 설명하면 아래와 같습니다. \d : 숫자 \d+ : 숫자들 . : 모든 문자 따라서 \d+.\d+ 는 숫자들과 숫자들 사이에 어떤 문자가 와 있는 경우를 추출합니다. 추출한 숫자를 숫자형으로 바꿔줍니다. >>> float(re.findall("\d+.\d+",res)[0]) 87.57 2022. 1. 7.
[파이썬 판다스] 데이터프레임에 사용되는 통계관련 함수 모음 (평균, 표준편차 등) 데이터프레임에 사용되는 통계관련 함수는 아래와 같습니다. 메소드 형태로 사용합니다. 데이터프레임 이름이 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.
[파이썬 판다스] 시리즈에 사용되는 통계관련 함수 모음 (평균, 표준편차 등) 시리즈에 사용되는 통계관련 함수는 아래와 같습니다. 메소드 형태로 사용합니다. 시리즈 이름이 sr1이고 함수명이 aa라면 아래와 같이 사용합니다. sr1.aa() 함수는 아래와 같습니다. 1. 통계량 관련 메소드 설명 mean 평균 var 분산 std 표준편차 skew 왜도 kurt 첨도 median 중앙값 mad 중앙값 절대편차 describe 여러 통계량 한번에 출력 quantile 분위수 (0~1사이값 입력) 2. 개수, 합, 차, 곱, 변화율 관련 메소드 설명 count 개수 sum 합 cumsum 누적합 prod 곱 diff 앞 원소와의 차이 pct_change 앞 원소와의 변화율 3. 최대 최소 관련 메소드 설명 min 최솟값 max 최댓값 argmin 최솟값 인덱스 argmax 최댓값 인덱스.. 2022. 1. 4.
[파이썬 판다스] 시리즈 누적합 계산 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합니다. 행의 이름을 아래와 같이 입력합니다. >>> sr1=pd.Series(np.random.rand(5),index=['R1','R2','R3','R4','R5']) >>> sr1 R1 0.045323 R2 0.962080 R3 0.687952 R4 0.599187 R5 0.783972 dtype: float64 원소의 누적합을 구해봅시다. cumsum 메소드를 사용합니다. >>> sr1.cumsum() R1 0.045323 R2 1.007403 R3 1.695354 R4 2.2.. 2022. 1. 4.
[파이썬 판다스] 시리즈 원소의 최댓값이 들어있는 행 출력 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합니다. 행의 이름을 아래와 같이 입력합니다. import pandas as pd import numpy as np 원소의 최댓값이 들어있는 행을 출력해봅시다. idxmax 메소드를 사용합니다. >>> sr1.idxmax() 'R2' 2022. 1. 4.
[파이썬 판다스] 시리즈 원소의 평균 구하기 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합니다. 행의 이름을 아래와 같이 입력합니다. >>> sr1=pd.Series(np.random.rand(5),index=['R1','R1','R2','R3','R4']) >>> sr1 R1 0.150008 R1 0.285633 R2 0.960971 R3 0.810092 R4 0.846327 dtype: float64 원소의 평균을 구해봅시다. mean 메소드를 사용합니다. >>> sr1.mean() 0.6106061298356524 2022. 1. 4.
[파이썬 판다스] 시리즈 원소의 합 구하기 판다스 패키지와 넘파이 패키지를 불러옵니다 import pandas as pd import numpy as np np.rand.rand 함수를 이용하여 0~1 사이 균등분포에서 배열을 생성합니다. 생성한 배열로 시리즈를 생성합니다. 행의 이름을 아래와 같이 입력합니다. >>> sr1=pd.Series(np.random.rand(5),index=['R1','R1','R2','R3','R4']) >>> sr1 R1 0.150008 R1 0.285633 R2 0.960971 R3 0.810092 R4 0.846327 dtype: float64 원소의 합을 구해봅시다. sum 메소드를 사용합니다. >>> sr1.sum() 3.053030649178262 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.
반응형